作者:京东物流 王玉坤
软件测试设计是测试过程中重要的测试流动,怎么样设计测试用例能进步咱们测试的效率和品质,从以下几个方面做了简略的解说。
1 测试用例设计准则
测试用例设计的根本准则包含:有效性、清晰性、可复用性、可维护性、完整性、兼容性、易操作性、可管理性、可评估性
- 有效性: 测试用例步骤必须形容清晰,不能呈现不置可否的以及反复的话语,测试用例应该依照肯定的程序进行编写,这样执行的时候效率比拟高。
- 清晰性: 用例的操作步骤要形容清晰,蕴含清晰的输出数据以及预期输入,验证点必须明确清晰,并能突出重点,对于流程性的用例倡议依照流程程序进行用例安顿,从第一个验证点到最初一个验证点,组成流程的开始到完结,不便测试执行。测试用例蕴含前置条件的必须将前置条件形容分明,包含入口等。
- 可复用性: 可重复使用,并尽量将具备类似性能的测试用例形象并归类。
- 可维护性: 测试用例因为业务需要产生变更的时候,须要及时更新保护测试用例,做到测试用例的实时性与有效性,测试用例须要细化和一直的欠缺,是个循序渐进的过程。
- 完整性: 用例是否实现并笼罩所有需要点,做到对需要的齐全了解。
- 兼容性: 测试用例要蕴含新老版本的兼容、新老数据兼容、浏览器兼容等测试点。
- 可管理性: 可能检测测试人员的测试进度、工作量等。
- 可评估性: 测试用例的通过率和缺点的数目是评估软件品质的好坏的规范。
2 测试用例的生命周期
软件测试用例的设计阶段蕴含:需要剖析、测试用例设计、测试用例实现、测试用例执行、测试用例治理
2.1 需要剖析
测试用例过程的第一步是确定测什么,标识出测试点,并且对测试点进行优先级的划分。
2.2 测试用例设计
测试用例设计确定了如何来测试曾经剖析出的测试点。
测试设计的次要点是确定测试预期后果。为了确定测试预期后果,测试人员不仅须要关注测试输入,同时也须要留神测试数据和测试环境的前后置条件。如果测试用例没有测试的预期后果,则测试用例对于测试后果的对错判断是毫无意义的。
测试预期后果能够是各种各样的,包含须要创立或者输入的后果,也能够是须要更新或者变更的后果,也能够是删除的后果。每个测试用例都应该分明的形容测试的预期后果。这样,就须要测试人员具备被测系统相干的丰盛的常识和教训,才可能对软件系统的测试输入作出正确的评估。如果测试输入后果评估认为是正确的,那么就能够作为测试用例的冀望输入后果。
2.3 测试用例实现
测试用例实现的过程包含筹备测试脚本、测试输出、测试数据以及预期后果等。测试脚本指的是依照规范的语法组织数据或者指令。测试执行之前,首先必须满足测试前置条件,比方一个测试用例须要用到配置好的一些数据,那么这个数据就必须提前创立等。
2.4 测试用例执行
通过运行测试用例来对被测系统进行测试。对于手动测试来说,次要参照测试用例的步骤来进行测试执行,比拟预期后果和理论后果、并记录测试过程中发现的问题。
对于自动化测试过程,执行时须要借助测试工具,运行测试用例脚本等,记录测试后果。
执行测试时如理论后果和预期后果是一样的,则认为是通过的,如果不一样,那用例执行失败,或存在问题,对于用例执行失败,须要进一步的查看,确定是软件问题还是用例的预期后果有问题,或者是数据问题,环境问题引起的,须要从不同的方面进行问题剖析。
2.5 测试用例治理
1)测试用例组织
每一个我的项目,其测试用例的数目都十分多。如何来组织、跟踪和保护测试用例是一件十分重要的事件。如何来组织测试用例,是测试胜利与否的一个重要因素,也是进步测试效率的一个重要步骤。
测试用例的组织,能够用不同的办法来进行组织或者分类:
- 依照软件功能模块组织:软件系统个别是依据软件的功能模块来进行工作任务分配的。因而,依据软件功能模块进行测试用例设计和执行等是很罕用的一种办法。依据模块来组织测试用例,能够保障测试用例可能笼罩每个零碎模块,达到较好的模块测试覆盖率。
- 依照测试用例优先级组织:测试用例是有优先级的。对于任何软件,实现穷尽测试是不事实的。在无限的资源和工夫内,首先应该执行优先级高的测试用例。
依照功能模块进行划分是最罕用的,咱们也能够联合起来应用,比方在依照功能模块划分的根底上,再进行不同优先级的划分。
2)测试用例跟踪
测试用例的跟踪次要是针对测试执行过程中测试用例的状态来进行的,通过测试状态的跟踪和治理,从而实现测试过程和测试有效性的治理和评估。
- 测试用例执行的跟踪:在测试执行的过程中,对测试用例的状态进行跟踪,能够无效的将测试过程量化。比方,执行一轮测试过程中,测试的测试用例数目是多少,测试用例中通过、未通过、未测试的比例各是多少。这些数据能够提供一些信息来判断软件我的项目执行的品质和执行进度,并对测试进度、状态提供明确的数据,有利于测试进度和测试重点的管制。
3)测试用例保护
测试用例并不是变化无穷的,当一个阶段测试过程完结后,会发现一些测试用例编写的不合理,或者需要产生了变动,这都须要对以后的一些测试用例进行批改和更新,从而使测试用例具备可复用性。
3 测试用例编写因素
- 用例编号:用例的惟一标识
- 测试模块:测试用例所属模块
- 用例题目:测试用例的简要阐明
- 前提条件:用例执行的前提
- 测试步骤:执行用例步骤
- 预期后果:应该失去的后果
- 优先级:用例重要水平
4 性能测试用例设计办法
4.1 等价类划分法
等价类划分法的定义
- 输出具备代表性的数据子集
等价类划分法分类
- 无效等价类:满足需要的
- 有效等价类:不满足需要的
适用范围
- 具备单个输出的性能
步骤
- 明确需要
- 确定无效和有效等价类
- 编写测试用例
举例
需要:下单若是函速达,须要容许快递员批改,且限定包裹数必须为 1,分量要 <0.5kg。
4.2 边界值分析法
边界值的定义
- 对于输出等价类和输入等价类而言稍高于其边界或者稍低于其边界的一些特定状况
边界值范畴
- 正好等于
- 刚刚好大于
- 刚刚好小于
边界值分析法中的三个点
- 上点:边界上的点
- 离点:间隔边界最近的点
- 内点:范畴内的点
举例:1-100,上点:1 100 离点:0 99 2 101 内点:50
适用范围
- 有输出参数,且输出类型或范畴长度有边界时(实用于题目需要中有长度或者范畴的状况)
- 和等价类一起应用,实用于单个性能的输出的状况
步骤
- 明确需要
- 确定无效和有效等价类
- 明确题目条件中的边界值
- 编写测试用例
举例
4.3 断定表法
实用条件
- 断定表示意的是有多个输出和多个输入,而且输出与输出之间互相的组合关系,输出和输入之间有互相的制约和依赖关系
组成部分
- 条件桩:题目条件中的所有的测试输出
- 动作桩:题目条件中的所有输入
- 条件项:测试输出的取值
- 动作项:测试输入的取值
步骤
- 明确条件桩
- 明确动作桩
- 对条件桩进行全组合
- 明确每个组合对应的动作桩
- 设计测试用例
举例
4.4 因果图法
因果图法定义
- 实践中是通向断定表的一个两头过程
适用范围
- 因果图是一种利用图解法来剖析输出的各种组合状况,从而设计测试用例的办法,它实用于检查程序输出条件的各种组合状况
因果图法的外围
- 所谓的起因就是输出,所谓的后果就是输入。
- 因果图的因 —输出条件
- 因果图的果 - 输出后果
因果图根本符号
关系
- 恒等:若 Ci 是 1,则 ei 也是 1;否则 ei 是 0
- 非:若 ci 是 1,则 ei 是 0;否则 ei 是 1
- 或:若 c1 或 c2 或 c3 是 1,则 ei 是 1;否则 ei 是 0
- 与:若 c1 和 c2 都是 1,则 ei 是 1;否则 ei 是 0
步骤
- 标识输出和输入
- 画出因果图
- 将因果图转换为断定表
- 生成测试用例
举例
需要:某软件规格说明书蕴含这样的要求:第一列字符必须是 A 或 B,第二列字符必须是一个数字,在此状况下进行文件的批改,但如果第一列字符不正确,则给出信息 L;如果第二列字符不是数字,则给出信息 M。
转化为断定表
最终转化为测试用例。
4.5 正交分析法
定义
- 正交法又叫正交试验法,又叫正交排列法,应用最小的测试过程汇合取得最大的测试覆盖率,(测试用例的条数写的少一点,而测出的 bug 多一点),正交试验设计法,是从大量的试验点中挑选出适量的,有代表性的点,利用根据伽罗瓦实践导出的“正交表”,合理安排试验的一种迷信的试验设计办法。
正交表的概念:一种特制的表,个别的正交表标记为 Ln(mk)
- n 示意行数,也就是须要测试组合的次数
- k 示意的列数,示意控件的个数(因素的个数,或是因子的个数)
- m 是每个控件蕴含的取值个数(各因素的程度数,即各因素的状态数)
如:L9(34)
有 4 个控件
每个控件有 3 个取值
9 为须要测试的组合个数、有 9 条测试用例
叫 4 因素 3 程度
步骤
- 依据需要造成因子状态表—- 因子:控件名称 状态:每个控件对应的取值
- 确定所采纳的正交表
- 将正交表中的数字用文字代替
- 一行就是一条测试用例
举例
留神
如果各个因子的状态数是不对立的,简直不可能呈现平均的状况时,抉择正交表为 等于或略大于因子数,状态数,且试验次数起码
生成正交试验表的一些办法
在线生成:https://jaccz.github.io/pairwise/tools.html
输出每个控件和控件的取值
生成的表
正交试验的实例表可套用到用例中 http://www.york.ac.uk/depts/maths/tables/orthogonal.htm
正交试验的实例表可套用到用例中 http://support.sas.com/techsup/technote/ts723_Designs.txt
4.6 场景法 - 流程图法
定义
- 模仿用户操作时的场景,次要用于测试多个性能之间的组合应用状况
为什么要用户场景法
- 用户角度:用户平时应用的不是单个性能,而是多个性能组合起来进行应用
- 测试人员角度:平时测试的都是单个性能点进行测试,为了保障测试的全面性,思考多个性能之间组合测试的场景
场景法的适用范围
- 多个性能之间的组合测试
- 往往在冒烟测试时常常应用
场景法中两个重要的概念
- 根本流:依照正确的业务流程操作的一种门路
- 备选流:呈现谬误的操作流程
步骤
- 确定我的项目角色
- 明确角色的罕用性能
- 依据需要构建测试场景
- 一个场景就是一条 case
5 安全性测试设计
平安测试是在软件产品开发根本实现时,验证产品是否合乎平安需要定义和产品质量规范的过程。平安测试是查看系统对非法侵入浸透的防备能力。
蕴含的测试点如下:
- sql 注入
- 明文传输
- 越权拜访
- 短信邮箱验证
- 鉴权缺失
- 明码平安
- 数据健壮性等