分享|Cider高级测试开发岗面试流程(未通过)
721
2024.08.09
2024.08.15
发布于 北京市

Cider是做跨境电商的公司,面试岗位:高级测试工程师
面试流程:三轮
一轮面试(8.9号上午11点,下午2点反馈面试通过)
二轮面试(8.12号上午11点,两天没反馈,应该是没通过)

一轮面试

  1. 微信聊天窗口如何去测试?
  2. 给你一个空白页面如何去定位问题?
  3. 现在有一些购物的 APP 里面都有都有一些选筛选项,然后你如果选择了其中一就是它的场景,就是它只是一个筛选器,然后里面有白色各种颜色的筛选,然后你选择了白色,但是结果搜索之后出现了别的颜色,怎么去定位这个问题?
  4. post和get区别是什么?
  5. 浏览器中输入一个url请求,直到成功,背后的过程是什么?
  6. 你是如何做接口测试的?
  7. 使用过的抓包工具以及对应的功能介绍?
  8. cookies和session机制区别?

coding很简单

  1. 输入aaabbbcccdd 输出a3b3c3d2
  2. 输入89、234、81、4、10、86、90,输出:4、10、81、86、90、234

二轮面试

  1. 自动化测试的流程?
  2. 目前测试的需求,你觉得测的这些需求哪个是对业务帮助最大的?
  3. 上线完某些功能,你知道这个功能对业务的产出或者效果吗?
  4. 测试用例是如何保管的?或者说你们线上测试,这个用例会定期执行吗?
  5. 你们是如何做缺陷管理的?
  6. 你觉得测试需要哪些能力?

coding题

给了公司的网址https://www.shopcider.com/product/list?collection_id=97,获取该电商商品的名称和价格?

import requests
from bs4 import BeautifulSoup

def crawl_product_info(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')

    # 这里需要根据具体网页结构来提取商品名字和价格的元素
    product_names = [item.text for item in soup.find_all('div', class_='product_name')]
    product_prices = [item.text for item in soup.find_all('div', class_='product_price')]

    for name, price in zip(product_names, product_prices):
        print(f'商品名字:{name},价格:{price}')

# 你要抓取的网站地址
crawl_product_info('https://www.shopcider.com/product/list?collection_id=97')

一轮面试答案(仅供参考,为了更准确结果来源网络):

  1. 以下是从理论角度对微信聊天页面设计的测试用例的分析:
    功能测试:

    1. 消息发送与接收
      • 输入各种类型的文本消息(包括中文、英文、数字、特殊字符等),确认能够成功发送并正确显示在对方的聊天窗口中。
      • 发送语音消息,检查语音的录制、发送和播放功能是否正常,声音是否清晰,时长限制是否合理。
      • 发送图片、视频、文件等,确认能够成功上传、发送和接收,且内容完整、清晰。
    2. 消息显示
      • 检查消息按照发送时间的先后顺序正确排列,最新消息显示在最下方。
      • 验证不同类型的消息(文本、语音、图片、视频等)在聊天页面中的显示格式和效果是否符合预期。
      • 当有新消息时,聊天窗口是否有相应的提示(如未读消息数、红点提示等)。
    3. 聊天记录管理
      • 搜索聊天记录,输入关键词能够准确检索到相关消息。
      • 清空聊天记录功能是否有效,且是否有二次确认提示。
      • 查看聊天记录的上下滚动是否流畅,是否能完整展示历史消息。
    4. 表情和动态表情使用
      • 发送各种内置表情和动态表情,确认显示正常,且对方能够正常接收和显示。
    5. 撤回和删除消息
      • 发送消息后的撤回功能,在规定时间内能否成功撤回,对方是否收到相应提示。
      • 删除本地聊天记录,确认操作是否生效,且不影响对方的聊天记录。
      性能测试:
    6. 加载速度
      • 打开聊天页面的加载时间是否在可接受范围内,特别是在有大量聊天记录的情况下。
      • 发送和接收大文件时的速度和稳定性。
    7. 资源占用
      • 观察在聊天过程中,微信客户端对 CPU、内存和网络带宽的占用情况,是否存在异常消耗。
      兼容性测试:
    8. 不同操作系统
      • 在 Windows、Mac、Android、iOS 等主流操作系统上,聊天页面的功能和显示是否正常。
    9. 不同设备
      • 在不同尺寸的手机、平板电脑上,页面布局是否自适应,操作是否便捷。
    10. 不同网络环境
      • 在 2G/3G/4G/5G 网络以及 Wi-Fi 环境下,消息的发送和接收是否稳定,是否能自动切换网络。
      用户体验测试:
    11. 界面布局
      • 聊天窗口的布局是否简洁明了,输入框、发送按钮等元素易于操作。
      • 字体大小、颜色、对比度等是否舒适,便于阅读。
    12. 交互操作
      • 长按消息的弹出菜单功能是否齐全且易于理解。
      • 拖动聊天记录、缩放图片和视频等操作是否流畅自然。
    13. 通知提醒
      • 新消息的通知声音和震动设置是否有效,且可根据用户需求进行个性化调整。
    14. 隐私保护
      • 聊天内容的加密和安全保护机制是否可靠,确保用户隐私不被泄露。
      安全测试:
    15. 数据加密
      • 检查聊天数据在传输和存储过程中的加密方式是否安全,防止数据被窃取或篡改。
    16. 防诈骗和恶意链接检测
      • 对聊天中收到的链接进行识别和提醒,防止用户点击恶意链接导致安全风险。
      以上是对微信聊天页面设计的一些测试用例的理论分析,实际测试中还需要根据具体的需求和用户场景进行更详细和全面的测试。
  2. 当面对一个空白页面时,可以从以下几个方面来定位问题:

    1. 检查网络连接:确认设备是否正常连接到网络,网络是否稳定,是否存在网络延迟或中断的情况。
    2. 浏览器兼容性:确定使用的浏览器是否支持页面所需的技术和功能。尝试在不同的主流浏览器(如 Chrome、Firefox、Edge 等)中打开页面,查看问题是否仍然存在。
    3. 服务器状态:检查服务器是否正常运行,是否存在服务器故障、维护或过载的情况。
    4. 页面加载资源:通过浏览器的开发者工具查看页面加载过程中请求的资源(如 CSS、JavaScript 文件、图片等)是否成功加载。如果有资源加载失败,可能会导致页面显示空白。
    5. 错误日志:查看服务器端和客户端的错误日志,可能会提供有关问题的线索,例如 JavaScript 运行时错误、服务器端错误等。
    6. 代码审查:检查页面的 HTML、CSS 和 JavaScript 代码,查找可能导致页面无法正常显示的错误,如语法错误、逻辑错误等。
    7. 缓存问题:清除浏览器缓存,有时旧的缓存数据可能导致页面显示异常。
    8. 第三方库和插件:如果页面使用了第三方库或插件,确认它们是否正确加载和配置。
    9. 后端接口调用:如果页面依赖后端接口获取数据,检查接口调用是否成功,返回的数据是否符合预期。
    10. 安全设置:某些安全设置(如防火墙、代理服务器等)可能会阻止页面的正常加载。

通过以上步骤的排查,通常可以逐步缩小问题范围,定位导致空白页面的具体原因。

  1. 如果在购物 APP 的筛选器中选择白色后出现了其他颜色的结果,可以按照以下步骤来定位问题:

    1. 检查筛选器的设置逻辑:查看筛选器在代码中的实现逻辑,确认对于颜色筛选的条件判断是否正确。
    2. 数据库查询:检查后端数据库查询语句,确保在根据颜色筛选时,只返回了白色相关的商品数据。
    3. 数据完整性:确认商品数据中颜色字段的填写是否准确和完整,可能存在颜色标注错误或缺失的情况。
    4. 前端与后端数据交互:检查前端发送给后端的筛选条件是否正确传递,后端返回给前端的数据是否与筛选条件匹配。
    5. 缓存问题:查看是否存在缓存机制影响了筛选结果,导致显示了过时或错误的数据。
    6. 并发操作:考虑是否有并发的用户操作或系统任务干扰了筛选结果的准确性。
    7. 版本更新:确认 APP 是否有近期的版本更新,可能引入了新的筛选逻辑错误。
    8. 服务器配置:检查服务器的配置参数,如内存、CPU 等资源使用情况,是否影响了数据处理和返回。
    9. 第三方服务集成:如果使用了第三方的搜索或筛选服务,检查其配置和调用是否正确。
    10. 边界情况测试:对筛选器进行边界情况和异常情况的测试,例如输入特殊字符、空值等,看是否会导致结果不准确。

    通过以上步骤的排查和测试,应该能够逐步定位出导致颜色筛选结果不准确的问题所在。

  2. post和get区别是什么?

    1. 数据传递方式:POST 数据在请求体中,GET 数据在 URL 中。
    2. 数据长度:GET 长度受限,POST 通常不受限。
    3. 安全性:GET 数据可见,不太安全;POST 相对更安全。
    4. 用途:GET 用于获取数据,POST 用于提交数据。
    5. 缓存:GET 可被缓存,POST 通常不被缓存。
    1. 域名解析获取 IP 地址。
    2. 建立 TCP 连接。
    3. 发送 HTTP 请求。
    4. 服务器处理请求。
    5. 服务器返回响应。
    6. 浏览器接收和处理响应。
    7. 显示内容。
    8. 断开连接(非持久连接时)。
  3. 接口测试步骤

    1. 分析接口文档,明确需求。
    2. 选择工具,如 Postman 等。
    3. 构造请求,设置参数和头信息。
    4. 发送请求,查看响应状态码。
    5. 校验响应数据的准确性和完整性。
    6. 进行边界值、异常值测试。
    7. 模拟并发和压力测试。
    8. 记录测试结果和问题。
    9. 回归测试确保接口稳定性。
  4. 我使用过 Wireshark 和 Fiddler 。
    Wireshark :
    • 强大的数据包捕获和深度协议分析。
    • 可筛选特定类型或来源的数据包。
    • 支持多种网络协议的解析和查看。
    Fiddler :
    • 专注于 HTTP/HTTPS 协议的抓包和分析。
    • 能修改请求和响应数据进行调试。
    • 可查看请求和响应的详细信息,如 headers、cookies 等。

  5. cookie和session区别

    1. 存储位置不同:Cookie 在客户端,Session 在服务器端。
    2. 安全性不同:Cookie 安全性低,Session 更安全。
    3. 容量限制不同:Cookie 有容量限制,Session 通常无严格限制。
    4. 生命周期不同:Cookie 可长期存在,Session 与会话关联。
    5. 数据类型不同:Cookie 只能存字符串,Session 不限。
    6. 服务器压力不同:Cookie 压力小,Session 可能增加服务器负担。
    7. 跨域支持不同:Cookie 支持跨域,Session 一般不支持。
      coding
# 求每个字符出现的次数
from collections import Counter

s = "aaabbbcccdd"
cnt = Counter(s)
ans = ''.join(f'{k}{v}' for k, v in cnt.items())
print(ans)
# 对字符串中数字进行排序
s = "89、234、81、4、10、86、90"
num_strs = s.split("、")
num_ints = sorted(int(num) for num in num_strs)
s_sort = "、".join(str(num) for num in num_ints)
print(s_sort)
评论 (1)