1.软件测试分类
软件是什么:程序、文档、数据构成的集合。
软件测试按照测试方法可分为:
- 黑盒测试:只关心输入输出,不关心内部结构
- 白盒测试:测代码,比如单元测试
- 灰盒测试大概率测试代码逻辑实现,比如:接口测试
软件测试按照方向可分为:
- 功能测试
- 性能测试
① 压力测试:发现软件的性能瓶颈(举重最多能举多少斤)
② 负载测试:(举重在一个高重量(峰值的80%左右)下能够举多久)
③ 并发测试:同一时间能让多少用户同时做一件事情 - 安全测试
软件测试按照阶段可分为:
- 单元测试:测试不同的代码块,重点测试方法、函数、类
- 集成测试:将不同模块集成到一起,重点测试接口
- 系统测试:集成完成后是一个完整软件。重点测试:功能、性能、安全、兼容性(WEB、APP兼容性)、易用性(用户体验)、稳定性、UI(检查软件界面是否好看)、。。。
- 验收测试
软件测试按照对象可分为:
- APP测试
- WEB测试
- 物联网测试
- 车联网测试
- 小程序测试
- 嵌入式测试
- 大数据测试
- AI测试
- 。。。
软件测试按照软件状态可分为:
- 静态测试:不运行软件的情况下测试,用白盒测试:看代码
- 动态测试:运行软件进行测试,用黑盒和灰盒测试
软件测试其他可分为:
- 冒烟测试:测试前的测试,看一个软件具不具备可测试性(闪退等就不具备可测试性)
- 回归测试:检查之前发现的问题开发人员是否已修改,并且检查是否影响别的功能
- α测试:内测,内部工作人员试用该软件
- β测试:公测,外部人员也参与试用该软件
补充:互联网公司的研发团队结构
- 项目经理:负责整个项目的管理
- 产品经理:负责软件的需求收集设计等
- 开发:写代码,分为前端和后端
- 测试
- 运维:负责硬件网络设备的维护和管理
- 运营:产品完成后靠运营去拉用户
- 设计:负责对软件的UI进行设计
2. 研发管理模型
-
瀑布流:上下排序,不可逆转。是传统的管理模式。缺点是若中间某一环节一旦出错,就得重头再来,过程十分耗时,效率低。
-
V字型:开发的环节和测试的环节一一对应。使得每个测试阶段都有依据,在瀑布流的基础上提升了工作效率。
-
W字型:又叫双V模型。左边的V是开发所做的事情,右边的V是测试所做的事情。在V字型的基础上大大提高了整个团队的工作效率。是开发和测试同时进行的模式。是目前企业中使用最多的管理模型。
-
敏捷模型:没有具体的工作流程。特点:高效工作,及时沟通,日报(每个人每天都将自己的工作写个报告),白板(写清每个人的任务),站立会(早会),集中办公
-
螺旋型
-
H字型
-
。。。
3.测试流程
-
需求分析阶段
① 需求分析:分析需求文档、产品原型、口述
② 学习业务流程
③ 提取功能点:将产品原型划分成每个小的功能点
④ 编写需求分析书:没有需求的话参考市面上已经成熟的同类型的产品的实现 -
测试设计阶段:
写文档:① 测试计划(编写方法(5W1H):what、where、when、who、why、how),主要写时间人员以及资源的安排分配
② 测试方案:针对每个测试内容如何展开测试,采用什么测试计划,什么测试工具
③ 测试策略:哪些测试内容先测,哪些测试内容后测,开始测试和结束测试的标准是什么
④ 测试用例:较重要,见下面 -
测试执行阶段:将测试用例里的实际结果和预期结果做对比,如果一样则通过,如果不一样则提交bug,然后进行回归测试。详见bug的管理。
-
测试总结阶段
编写测试报告:
①对工作的总结;
②对BUG的统计分析:测试、开发、软件模块、等级、解决时间、每个版本、BUG的状态
③ 对被测软件的质量评估
4.测试设计阶段——测试用例
1、测试方法:
-
等价类:找出几个具有代表性的值进行测试
等价类:无效等价类和有效等价类 -
边界值(用微信红包金额举例(0-200)
-
场景法
-
因果图
-
判定表
-
路径覆盖法
-
。。。
2、测试用例
测试用例是软件测试的核心,为了特定目的而设计的一组测试输入、执行条件、预期结果的输出文档。测试用例一般以excel表格的形式呈现,主要包括以下几部分:
- 用例编号:是唯一的。
- 用例名称:言简意赅,用最少的字描述清楚这个用例是什么(在什么情况下做什么事得到什么结果)
- 前置条件:执行这个用例之前,软件必须要满足的条件
- 优先级:执行这条用例的时间要求紧急程度的等级
- 重要级:这个被测的功能在系统里面的重要级别
- 测试数据
- 测试步骤
- 预期结果
- 实际结果
一个测试用例的例子:
下图是微信发红包这一个功能点,这一个功能点有四条测试用例,很多条测试数据
5. 测试执行阶段——BUG的管理
BUG的管理:
- bug的管理平台/系统/工具:记录bug的平台,如:禅道、BUGFree、ALM/QC、JIRA。。。
- bug的六要素:
① 编号
② bug的名称:言简意赅,看到题目就知道是什么问题
③ bug的优先级:根据实际情况,这个bug需要优先解决吗 ,分高/中/低 三级
④ bug的严重级别:
致命的:影响产品的核心流程的正常使用;导致软件挂了、闪退、崩溃;和钱有关
严重的:导致某个非核心功能无法使用
一般的:功能的某些异常场景有问题
轻微的:建议性的问题,用户的体验,UI上的问题
⑤ bug的重现步骤:可以把用例的步骤复制过来,预期结果,实际结果
⑥ 附件:包括截图、日志、视频,目的是为佐证BUG - bug的生命周期
- bug的状态:新建、打开/激活、已确认、已解决、拒绝、重新打开、关闭、延期处理、重复BUG
- bug的等级
6. 测试应用
软件结构:
- B/S:browser/server。browser:浏览器,不需要单独安装,
- C/S:client/server。client:客户端,需要单独安装的,比如App
6.1 APP测试
APP测试比WEB测试更加复杂,要额外进行许多专项测试,例如:
- 安装/卸载
- 消息推送
- 更新
- 弱网测试(在2G、3G、。。。各种不同的网络下进行测试)
- 场景交互测试
①:来电话了
②:一边听音乐,一边玩该App
③:调用相机
④:前后台的切换,即App之间的切换 - 权限测试:拒绝每个权限请求后该App是否还能正常使用
- 离线测试:断网之后该App是否还能正常打开