【可实战】测试用例组成、用例设计方法、用例编写步骤、测试用例粒度、用例评审(包含常见面试题)

一、测试用例组成

(一)测试用例的组成

  • 用例编号,模块,测试点(测试标题),优先级,前提条件,测试步骤,期望结构,实际结果
  • 并不是每一项都必须,有些是必须要有的,比如说测试点,测试步骤,预期结果
  • 用例编号一般是模块名加数字的方式表示,如果在平台管理用例,那用例编号是自动生成的,用例编号是唯一的。

(二)优先级

  • 优先级表示用例的重要程度
  • 为什么设置优先级

在有限的测试资源和时间的情况下,发现最严重的错误,有时候时间很紧张,人力紧张,无法执行全部的用例,怎么保证产品的质量,先去执行优先级高的用例,保障了这些,基本功能就保证了。

测试用例根据重要性分成一定的等级

P0: 是最最核心的功能测试用例,比如冒烟用例,确定这个版本是不是可测,如果P0级别的用例执行不通过,那其他的测试用例都不用去测,直接把这个版本打回去给开发修改,改好后重新提测

P1:是高优先级别的,是保证功能是稳定的,基本的功能测试

P2:是中优先级别的,更全面的去验证功能的各个方面,比如边界测试,异常测试,网络测试,中断测试,容错性,UI测试等

P3:是低优先级的,不会常常被执行,大版本可能会执行一次,小版本就不执行了。比如说性能测试,压力测试,兼容性,安全测试,可用性等

(三)测试用例设计工具:思维导图、excel

二、设计测试用例

(一)黑盒测试方法论------等价类,边界值,因果图法,判定表,场景法

1.等价类划分法


等价类划分原则:
等价类设计步骤:
原则:一条测试用例尽可能多的覆盖有效等价类。对于无效等价类,每一个无效等价类,都必须有一条用例去覆盖他。
等价类划分法的优缺点:

优点:覆盖完全,取值不盲目

缺点:产生的用例多,会有无效的测试用例

2.边界值

边界值确定:

选取数据的时候,要考虑数据的类型和精度。如果边界上的点,上点是实数,精确度是0.01,这个时候离点就是上点加减0.01

边界点划分规则:


用边界值修改前后的用例(1~100内数字的加减)


3.因果图法

概念

因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法。

适用场景

适用于检查程序输入条件的各种组合情况

因果图法基本步骤
因果图法举例




4.判定表法

因果图和判定表是好朋友,可以 结合着用。

判定表的组成


判定表设计步骤
判定表举例
1.确定条件桩
2.确定动作桩
3.判定表分析
4.得出初始判定表
5.对判定表进行简化

1.abc不构成三角形,c1不成立,c2, c3, c4这三个条件是否成立没有意义,所以前面8个规则可以简化为1个规则

2.对于结果不可能的情况也可以不考虑

3.简化后剩6个规则,对这6个规则设计用例

6.设计测试用例

5.场景法

我们不能只关注一个部件的等价类,边界值,我们也需要关注功能,业务流程有没有实现。验证方法就会用到场景法

优点:适合有业务流程的

缺点:没有验证单个功能点,单个功能点需要用到等价类,边界值

场景法用例设计步骤
场景法案例: 淘宝购物
1.画流程图


2.确定基本流
3.确定备选流
4.构造场景
5.生成测试用例

测试步骤一步一步写清楚,用序号,达到不明白业务的人根据步骤可以完成操作

6.错误推断法

指利用直觉和经验猜测出出错的可能类型,有针对性的列举出程序中所有可能的错误和容易发生错误的情况

(二)选择设计用例的方法(黑盒)

  • 任何情况下,都需要采用等价类划分法,将无限测试变成有限测试
  • 在规定了数据范围的情况下,必须采用边界值分析法
  • 如果需要关注它的主要功能和业务流程、业务逻辑是否正确实现, 考虑使用场景法
  • 如果含有输入条件的组合情况,考虑选用因果图和判定表法
  • 采用错误推断法再追加测试用例

(三)白盒测试方法

1.白盒测试的度量

根据待测产品的内部实现细节来设计测试用例

白盒测试的执行手段是可以涵盖单元测试、集成测试

使用代码覆盖率作为白盒测试的主要度量指标

2.代码覆盖率常见概念

语句覆盖:每行代码都要覆盖至少一次

判定覆盖:判定表达式的真假至少覆盖一次

判定/条件覆盖:判定覆盖与条件覆盖都必须覆盖

条件组合覆盖:判定表达式中的所有条件组合都需要覆盖

分支覆盖:控制流中的每条边都要被覆盖一次

路径覆盖:所有的路径都要尽量覆盖

指令覆盖:一行代码会被编译为多条指令,尽可能的覆盖所有指令

方法覆盖:每个方法至少要被覆盖一次

类覆盖:每个类至少被覆盖一次

3.覆盖率统计的工具

emma

cobertura

jacoco

4.插桩原理

对jvm的字节码插桩

基于block插桩

计算覆盖的代码块

5.流程覆盖

利用代码执行流代表流程

流程覆盖用路径覆盖率表达

对流程进行裁剪获得一个适合业务的小规模的业务子集

流程覆盖率=测试经过的路径/业务子集路径

6.精准化测试

代码调用链与黑盒测试用例的关联

根据代码变更自动分析影响范围

黑盒测试过程中借助代码流程覆盖数据指导探索式测试

利用线上数据推导有效测试用例

代码流程分析与覆盖率统计

三、测试用例编写

(一)测试用例编写步骤

第一步:划分功能模块

可以使用思维导图,把大功能里面小的功能点拆分出来,然后每个小功能点里的元素细节可以继续拆分出来,

第二步:正向功能验证

相当于冒烟测试

第三步:单个功能项验证

拆分页面功能,元素。 等价类,边界值

第四步:功能之间交互验证

验证场景用例

第五步:隐形需求

(二)实战演示

1.需求分析


2.编写用例



四、测试用例的粒度

  • 测试用例可以写的很简单,也可以写的很复杂
  • 最简单的测试用例是测试的纲要,仅仅指出要测试的内容
  • 测试用例写的过于简单,则可能失去了测试用例的意义
  • 测试用例写得过于复杂或详细,会带来两个问题:
    • 效率问题
    • 维护成本问题

粒度选择原则:

1、遵守公司对于测试粒度的要求,看一下前辈、公司同事对粒度的选择

2、要在场景覆盖完整的情况下,尽可能精简用例

五、测试用例评审

  • 测试用例的本身的描述是否清晰,是否存在二义性
  • 测试用例内容是否正确,是否与需求目标相一致
  • 测试用例的期望结果是否确定、唯一
  • 测试用例是否覆盖了所有的需求
  • 测试用例是否具有可执行性
  • 是否从用户层面来设计用户使用场景和业务流程的测试用例
  • 场景测试用例是否覆盖最复杂的业务流程
  • 用例设计是否包含了正面、反面的用例

六、经典面试题:

(一)测试用例设计思路

1.面试购物车测试用例设计思路

前言

关于测试用例设计是做测试的同学必须要具备的技能。不管是出去面试,还是在平常的工作当中,可以熟练设计测试用例基本是对测试人员的一个基本要求。

比如在面试中我们被问到给你一个购物车界面,你怎么测试这样一个问题。应该咱们回答呢?

测试用例设计思路

购物车设计测试用例是非常经典的一个面试题。一般在面试中回答测试用例设计的问题时,可以遵循以下的思路

对于购物车来说也是同样的思路。

需求分析

首先第一步要做的就是需求分析。不管是在什么场景中,都应该明确需求之后,再开始进行测试用例的设计。

在面试中,这一步可以体现为与面试官聊一聊需求的细节。

重点需要把 3 个方向的内容确认清楚:

1.确认测试范围

2.确认功能点

3.确认功能流程

使用思维导图的形式来梳理

下面就按照上面思路来梳理购物车的测试点。

界面测试

界面显示正常

界面布局合理美观

文案展示正确

功能测试

测试功能可以从这几个方面去考虑

具体的测试点比较多,请直接查看完整的思维导图。

易用性测试

快捷键功能是否支持

提示信息

操作引导

商品展示排序合理

兼容性测试

不同的产品在考虑兼容性测试的时候,方案是不一样的。

Web 产品的兼容需要重点考虑

  • 浏览器
  • 操作系统
  • 分辨率

App 产品的兼容需要重点考虑

  • 平台
  • 厂商
  • 设备型号
  • 操作系统
  • 分辨率

对于兼容性测试来说,需要保证在这些硬件环境中,产品的界面展示正确,功能可以正常使用。

性能测试

界面元素多次快速操作

响应时间

并发量

CPU

内存

App:耗电量、流量、压力测试

安全性测试

账号限制:登录超时、账号互踢

敏感信息加密传输

漏洞扫描

总结

在面试中被问到了购物车如何设计测试用例的时候,按照这样的思路来回答就可以了。

具体的测试点总结在以下思维导图

(二)你用过哪些用例设计方法?

考察点

测试基本理论

黑盒测试方法

技术点

常见黑盒测试方法

常见黑盒测试方法

等价类划分法:把用户所有可能输入的数据,划分成了若干子集,然后从每一个子集当中选取少数具有代表性的数据作为测试用例

边界值分析法:针对各种边界情况设计用例

因果图法:利用图解法分析输入的各种组合情况,从而设计测试用例

判定表法:直接编写判定表设计测试用例

场景分析法:模拟用户操作软件时的场景,主要用于测试系统的业务流程

错误推断法:指利用直觉和经验猜测出出错的可能类型,有针对性的列举出程序中所有可能的错误和容易发生错误的情况

答案总结

问题:你用过哪些用例设计方法?

我在测试用例设计过程中比较常用的测试方法有等价类划分法、边界值分析法、因果图法、判定表法、场景分析法、错误推断法等等:

相关推荐
Asteroid-11034 分钟前
Postman测试big-event
bug·postman
CodeLinghu21 小时前
公司一个bug引出的对象判空、空指针异常话题之NUll、isEmpty()和“”区别
bug
爱蹦跶的精灵21 小时前
element-plus大版本一样,但是小版本不一样导致页面出bug
功能测试·bug
大福是小强21 小时前
pyinstaller冻结打包多进程程序的bug:无限创建进程直至系统崩溃
bug·pyinstaller·exe·打包·多进程·冻结程序·重复创建进程
玄尺_00721 小时前
bug uni-file-picker无法显示图片
uni-app·bug
sduerfh21 小时前
随机种子定不死找bug
bug·torch
测试冲鸭21 小时前
【可实战】Bug的判定标准、分类、优先级、定位方法、提交Bug(包含常见面试题)
bug
互联网杂货铺2 天前
单元测试、系统测试和集成测试知识
自动化测试·软件测试·python·测试工具·单元测试·测试用例·集成测试
turui2 天前
pytdx,取市场股票列表,get_security_list,start参数为8000时,数据获取失败,导致无法获取全量数据的BUG修正
开发语言·python·bug·量化·pytdx