软件测试面试题库


1 测试工具

1.1 必知

Fiddler/JMeter/Postman...的区别与适用场景

这些工具的主要功能:截取数据(抓包)、断点调试、数据替换...

  • JMeter
    适用:性能测试、接口测试、Web测试
    突出点:性能测试
  • Fiddler
    适用:接口测试、Web测试
    缺点:只适用于Windows系统
  • Charles
    适用:接口测试、Web测试
  • Postman
    适用:接口测试
  • Google F12
    操作:Chrome浏览器下打开Web应用,按F12
    适用:抓取Chrome浏览器下Web应用的数据

2 基础

2.1 概念

Web测试

针对Web应用的测试。与App测试最大的区别是Web应用依赖于各种浏览器。由于Web具有分布、异构、并发和平台无关的特性,因而它的测试要比普通程序复杂的多。
比如大学校园管理系统、政府官方网站、新闻资讯类网站,这些Web应用依赖于浏览器进行访问。这些网站的特点是个人不常使用,但是需要使用的人很多。

如何设计测试用例

  • 分析产品需求文档
  • 用思维导图提取测试点
  • 编写测试用例
  • 测试用例评审(测试、开发、产品)
  • 执行测试用例
  • 回归测试用例
    一般300条用例左右。

测试流程

  • 产品需求评审会
    通过对产品需求的分析,提出意见和建议,缩小产品、开发、测试之间对产品认知上的偏差,避免后期大规模的需求变更,造成人力物力上的浪费。
  • 测试计划
    大版本1个月上线一次,小版本一星期上线一次;
    大版本涉及新功能增加和旧功能删除,整个测试部门会对所有主要业务模块做全覆盖测试;小版本主要是功能修复,会对所修改模块内的其他重要功能全覆盖测试。
    小版本测试iOS,Android手机端一周一测,平板、PC端一般2周一测。
  • 编写测试用例
  • 执行测试
    1)接口测试
    2)敏捷测试(分模块对部分功能进行测试)
    3)前端提测,全覆盖测试
  • 回归测试
  • 测试报告
  • 提交应用商店审查,通过后下载进行线上验证
  • 观察线上用户反馈

如何判断一个Bug的位置 / Bug出在前端还是后端

  • App崩溃
    前端有问题。
  • 视频无法播放
    (1)抓包,分析响应码
    a. 1XX说明服务器接受到了请求,还在处理;
    b. 2XX说明客户端的请求和服务端的响应都没问题,对比接口文档也正确,可能前端解析、显示有问题。(比如不同浏览器的兼容性问题)
    c. 4XX说明客户端错误,比如请求的参数有误,此时问题在前端;
    d. 5XX说明服务端错误,比如服务器崩溃、维修、关闭,此时问题在后端。

2.2 工作流程

什么情况下用数据库

数据库对测试工程师而言,用得最多是Insert、Delete、Update、Select。

一、释放和修改权限,方便测试

中国移动做一个回馈老用户的活动,还在使用的手机号里,如果使用期超过了5年,每个号码可以用1元购得100元的话费券,每个号码限购1次。

这里的测试逻辑是:(1)满足活动条件的号码可以参与活动,即测试“系统判断新老用户的逻辑”是否正确(2)每个号码只能参与1次活动,即测试“系统判断是否多次参加活动的逻辑”是否正确

  • 1)满足活动条件的号码可以参与活动
    中国移动的系统如何知道我是不是老用户?肯定是系统的数据库记录了我的使用年限,而这个使用年限就是数据库里人为定义的字段。通过修改这个字段可以修改手机号的使用年限,从而实现新老用户的切换。

    通过修改数据库的字段,就可以实现一个号码测试“系统判断新老用户的逻辑”是否正确。否则,至少需要找两个号码进行测试,一个是超过了5年的老用户,一个是新用户。

  • 2)每个号码只能参与1次活动
    我参与了这个活动,我继续参与活动,服务器响应的肯定是无法继续参与活动。但是有些情况可能会导致需要多测几次,就需要通过修改数据库的字段来释放这个测试号码的活动资格。

二、校验数据落地

对于充值、支付类的情况,前端会显示“充值、支付成功”或者“提现已到账”这种提示页面。

我们需要测试“实际到账额的逻辑”与“前端页面提示”是否匹配。如果不匹配就是Bug,通过查阅数据库可以校验数据落地的正确性。

什么情况下用Linux

  • 1)在Linux上搭建测试环境
    Linux在服务器领域非常强大,有很多开源的成熟的软件,比如说:web服务器,缓存服务器,数据库服务器,大家会发现比较火的阿里云/腾讯云以及其他各种云,都是Linux的应用比较多!Linux性能好并且比较稳定,所以大多数企业会选择Linux服务器,既然企业选择了它,那么软件测试工程师需要掌握Linux是非常必要,而且也会越来越重要。

    目前绝大多数公司都将自己的项目部署在了Linux服务器或各种云服务环境上,这就要求测试人员具备在Linux服务器上搭建测试环境的能力。

  • 2)查看日志,定位bug
    在实际测试过程中,针对出现的bug,需要测试协助开发定位bug时,要使用Linux命令去查看系统日志。

  • 3)埋点测试做统计数据校验
    SeureCRT连接Linux服务器→通过命令查找日志→校验统计数据

  • 4)需要在Linux服务器上执行一些定时任务,需要会写shell脚本

  • 5)性能测试,需要监控服务器的性能

什么情况下用Fiddler

  • 截取数据(抓包)、断点调试、数据替换
  • 查看请求是否加密
    用户名、账户密码必须加密符合工信部要求。手工无法测试
  • 查看是否重复发送请求
    比如网络不太好的情况下点外卖,你只想点1份,刚好点完1份就卡住了,又点了1次,由于网络造成的页面更新延时,后来送了两份外卖。实际上两次请求后端服务器都处理了,只是第二次请求的响应没及时在前端进行显示,导致客户误以为购买了1份外卖。这主要是为了测试应用在弱网或者网络中断的情况下处理和反馈机制是否合理和人性化。合理的情况是及时检测出网络情况,并中断第二次请求。

产品需求变更如何应对

明确需求变更内容和变更规模。

  • 1)小规模不致命的变更,及时重新测试一遍
  • 2)变更范围大,内容重要,建议延迟发布
  • 3)实在无法延迟发布,在发布前加班测试完变更中的重要内容,在测试报告中写明需求变更情况和后续可能的风险

如何安装软件测试包

公司会把上线前的迭代版本(内部测试版本)更新之后放在托管平台上,我们是直接放在企业微信的一个板块里,分为PC、Mac、iOS、Android这四个模块的内部测试版。

  • 安卓
    APK(Android Application Package)发送到安卓手机,解压安装运行
  • 苹果
    iTools下载iPA(iPhoneApplication)发送到苹果手机,解压运行

如何App的耗流量、耗电量

  • 软件:腾讯GT/Emmagee(网易)
  • 竞品对比

3 过往经历

3.1 行业内

测试职业生涯中遇到的比较难(有挑战性)的问题是什么?如何应对的?

  • 遇到的问题
    (1)需求临时变更
    (2)提交的Bug,开发认为不是Bug
    (3) 解决重复性验证类测试
  • 如何解决问题
    (1) 自动化脚本提高效率

4 进阶

4.1 概念

  • 什么是Cookie
    Cookie是网站为了辨别用户身份,进行Session(会话)跟踪而储存在用户本地终端上的数据,由用户客户端计算机暂时或永久保存的信息。