一. 测试概念
1.软件测试分类(复习)
I. 按阶段划分
单元测试
测试:针对单个功能进行测试,如:登录、购物车等
开发(更多的理解):针对代码进行测试(一般由开发负责、或自动化测试协助)
集成测试
组装测试
系统测试
针对系统进行整体性测试
软件功能
硬件功能
验收测试
(用户检验产品是否满足自己预期)
α测试:bug比较多、内测版本
β测试:bug相对比较少、公测版本
γ测试:候选发布版本
负责人(甲乙方):
甲方负责
乙方协助(在甲方的授权及信任基础上)
第三方评测机构
II. 按是否覆盖源代码划分
黑盒测试:输入和输出
白盒测试:代码内部实现逻辑
灰盒测试:测试关注点 输入( 输出 代码逻辑)
III. 按是否运行划分
静态测试:不运行被测试程序
测试对象:文档-代码
动态测试:运行测试程序
测试对象:运行中的程序
VI. 按是否自动化划分
手工测试(功能测试)
自动化测试:通过工具或代码代替人进行测试的过程
V. 更多
冒烟测试
开发提交测试版本的接收性测试
测试点:
最基本功能,如用户正常登陆
最核心的业务流程,如电商购买商品全过程
回归测试
测试点:
bug回归
旧功能回归
随机测试
探索测试
2. 软件开发流程(软件生命周期)
I.瀑布模型(了解)
- 组成:需求分析==》概要设计==》详细设计==》编码==》软件测试==》软件维护
- 特点:线性模型 文档驱动
- 优点:只需要关注当前进行的阶段
- 缺点:不响应需求变化
- 典型应用场景:需求清晰的大型项目,如银行、保险、建筑等
3. 软件测试流程
I. V模型(了解)
- 组成:需求分析==》概要设计==》详细设计==》编码==》单元测试==》集成测试==》系统测试==》验收测试
- 优点:只需要关注当前阶段、文档驱动、线性模型
- 缺点:不响应需求的变化、不灵活
II. W模型(了解)——双V模型
- 绘制:
开发V:需求分析==》概要设计==》详细设计==》编码==》集成==》实施==》交付
测试V:验收测试设计==》系统测试设计==》集成测试设计==》单元测试设计==》单元测试==》集成测试==》系统测试==》验收测试
- 优点:测试贯穿软件开发的全生命周期;早参与、早发现、早解决
- 缺点:技术和管理要求比较高
4. 软件质量模型(了解)
- 功能性:检查业务功能是否满足需求
- 可靠性:容错能力(恢复正常的时间、能力)
- 易用性:看的懂、会使用等
- 效率性:性能(响应时间、消耗的资源(CPU、内存)等)
- 维护性:为后续功能的开发与维护提供便利
- 移植性:软件需要在不同的软件环境和硬件环境下都能正常的工作
5.软件测试用例(重点)
I. 软件测试用例概念
概念:一个为了特定的目的(检验开发的代码实现是否满足用户的需求)而设计的文档(包含测试输入、执行条件、预期结果),文档的形式可以是xmind、excel等。
II. 测试用例组成要素与用例模板
- ID:唯一性 项目-模块-001
- 模块
- 优先级:作用:体现用例执行的先后顺序;分类:高 中 低
- 用例标题:唯一性 见名知意
- 预置条件
- 测试步骤:尽可能详细
- 测试数据
- 预期结果
III. 软件测试用例的作用(了解)
- 便于理清测试思路,确保需覆盖测试的功能点无遗漏
- 便于测试工作量的评估
- 便于提前准备测试数据
- 便于把控测试工作进度
- 便于回归测试
- 便于测试工作的组织,提高测试效率,降低测试交接成本
二.软件测试设计方法
1. 等价类划分法
- 概念:通过科学的方法找到具有共同特性的测试输入的子集,能够从穷举测试中解放(大大减少了测试用例的数量,从而提升测试效率。)代表性的测试输入集
- 分类
有效等价类:满足需求
无效等价类:不满足需求
- 设计测试用例的步骤
需求分析
划分等价类
有效
无效:规则(需求本身);长度;类型;是否为空(必填项);是否重复
设计用例
- 典型应用场景:具有典型输入框的场景
- 作用:从穷举测试中解放出来,找到具有共同特性的测试输入子集。
2. 边界值
- 作用:对等价类的补充,统计表明程序最容易出错的地方就是在边界附近。
- 概念:基于边界值【有效等价类和无效等价类的分界点】设计测试用例的一种【黑盒】方法
- 边界值
上点:边界之上的点
内点:边界之内的点
离点:离边界最近的左右两点
- 设计测试用例步骤
需求分析
划分等价类
确定边界:上点;内点;离点
设计测试用例
- 典型应用场景:存在边界 > >= < <= 大于 小于等于
- 结论:
上点:必选(不考虑区间开闭)
内点:必选(建议选择中间范围)
离点:开内闭外(考虑开闭区间,开区间选择内部离点,闭区间选择外部离点)
3. 判定表
- 概念:存在多个输入条件、多个输出结果,输入和输入之间有组合关系,输入和输出之间有依赖或制约关系。
- 判定表组成:
条件桩:所有输入条件,如欠费状态、关机状态
动作桩:所有的可能的输出结果,如允许主被叫、不允许主被叫
条件项:单个条件的取值范围,一般都是有效等价类和无效等价类
表示方式
字符:
真/有效等价类/Y
假/无效等价类/N
数字:
真/有效等价类/1
假/无效等价类/0
动作项:基于每一种条件的组合,得到确认的结果,如打不通等
- 设计测试用例的步骤
明确条件桩(找到所有的输入条件)
明确动作桩(找到所有的输出结果)
对条件桩进行全组合
明确每个组合对应的动作桩(基于每一种条件的组合情况,确定本组合下的输出结果。)
设计测试用例,每行数据对应一条测试用例
- 使用场景:多条件组合情况
4. 因果图
- 概念:用图解的方法表示输入的各组合关系,写出判定表,进而设计测试用例的一种【黑盒测试】方法。
- 适用范围:适用于分析程序输入条件的各种组合情况,以及输入和输出之间的依赖关系。
- 核心
因:条件
果:结果
- 基本符号(掌握)
恒等(-):条件成立,结果成立。
非(~)NOT:条件成立,结果不成立;条件不成立,结果成立。
或(V)OR:只要有一个条件成立,结果就成立;所有条件都不成立时,结果才不成立。
与/且(^)AND:多个条件必须同时成立,结果成立;只要有一个不成立,结果就不成立。
- 设计测试用例的步骤
需求分析
画出因果图
将因果图转换为判定表
生成测试用例
- 小结
输入条件比较少(2,3,4),推荐直接使用判定表。
输入条件比较多(>4),推荐使用因果图。
5. 正交法
- 核心思想:用最小的测试用例获得最大的测试覆盖率。
- 正交表
说明
k代表因素(输入参数)
m叫水平(输入参数的取值)
n代表测试用例数
读法:k因素m水平
- 基于正交表设计测试用例
步骤
需求分析
确定因素与水平(因素:控件名称;水平:每个控件对应的取值)
确定要采用的正交表
将正交表中的字母用文字代替
设计测试用例(一行就是一条测试用例)
- 基于allpairs设计测试用例
步骤
需求分析
确定因素与水平(因素:控件名称;水平:每个控件对应的取值)
将确定的因素与水平复制到txt文件中
打开DOS窗口,进入allpairs目录,运行命令:allpairs.exe test.txt > result.txt
根据生成的新文件编写测试用例(一行就是一条测试用例)
6. 场景法(流程图法)
- 概念:场景法就是模拟用户操作软件时的场景,主要用于测试多个功能之间的组合使用情况。
- 使用测试阶段
集成测试
系统测试
验收测试
- 设计测试用例的步骤
需求分析
绘制流程图
设计测试用例(一条流程路径就是一条测试用例)
- 流程图常用符号
开始或结束:椭圆
方向或路径:箭头
处理或操作:长方形
判断:菱形
输入或输出:平行四边形
- 绘制流程图
第1步:确认场景中关键业务步骤
第2步:确定业务之间的先后顺序
第3步:用箭头连接即可
- 绘制工具
Microsoft Visio
7. 错误推测法
- 概念:利用经验或智慧发现程序中可能犯错的地方。
- 使用场景
重要功能
使用同类型产品
任务急、时间紧、资源少
8. 测试用例设计方法总结
具有输入功能,但输入之间没有组合关系==》【等价类】
输入有边界 如长度、类型==》【边界值】
多输入、多输出、输入与输入之间存在组合关系、输入与输出之间存在依赖或制约关系==》【判定表、因果图】
用最少的测试用例获得最大测试覆盖率时 ==》【正交法】
多个功能的组合测试 ==> 【场景法、流程图】
最后推荐使用【错误推测法】来进一步补充测试用例