测试的存在是为了辅助开发出更高质量的软件,基于这个根本需求,要想编写好测试用例,就必须了解开发流程。
一、根据开发流程的不同设计,演变出了三种开发模型
瀑布模型
该模型的流程为:问题定义->可行性研究->需求分析->软件设计->编码->测试->维护。
特点:每个流程都由各自的一份文档来驱动实现,流程之间的执行方向不可以改变,像瀑布一样由上 至下,不可逆流。
增量模型
该模型的流程为:规格说明->设计->实现和集成->交付客户
特点:整个项目的开发拆为多条流程并行开发,出现一条新的需求,增加一条新的开发流程,解决了瀑布模型中开发方向不可逆的短板,适用于需求容易变动的情况。
快速原型
该模型的流程为:规格说明->设计模型->实现和集成->交付客户
特点:快速根据开发的项目制作出一个基本的整体模型,交付给客户体验,并根据客户的反馈进行修 改设计。重复多次这个过程,直到整个项目完全实现。适用于需求分析还不太明确的情况。
二、依附于开发的流程,常用的测试模型有两种
V模型
该模型的流程为:需求分析->概要设计->详细设计->编码->单元测试->集成测试->系统测试->验 收测试
特点:在完成开发流程中的编码后,测试才开始,适用于小软件的开发
W模型
该模型的流程为:需求分析&验收/系统测试设计->概要设计&集成测试设计->详细设计&单元测试 设计->编码&单元测试->集成&集成测试->实施&系统测试->交付&验收测试
特点:开发流程与测试流程同时进行,不用等待编码完后才开始测试,适用于复杂软件的开发
三、在了解完开发模型和测试模型后,就可以开始正式的学习如何编写测试用例了
什么是测试用例?
测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。
测试用例有哪些特性?
有五个特性
(1)有效性:可以被使用 ,不同测试人员使用的测试结果一致
(2)可复用性:可以重复使用,如回归测试
(3)易组织性:可以被分门别类的提供给测试人员使用
(4)可评估性:可以通过测试用例的通过性作为软件质量好坏的标准
(5)可管理性:可以通过测试用例的通过性作为软件质量好坏的标准
测试用例由哪些元素组成?
有8大基本要素
(1)测试用例编号:字符和数字组合成的字符串,具有唯一性
(2)测试模块:测试的项目属于哪个项目或者被测试的需求,检测的模块,被检测的单元等
(3)前提条件:执行测试用例前需要的条件,若不被满足则会影响到预期测试结果
(4)测试输入:测试用例执行时需要加工的外部信息如瘦狗输入、数据库等
(5)预期输出:预期输出结果包括放回值的内容,界面响应结果等
(6)操作步骤:执行测试用例要经过的操作步骤
(7)测试用例标题:概括测试目的
(8)级别:普通、重要
编写测试用例要遵循哪些原则?
遵循三大原则
(1)明确性:尽量避免测试用例的含糊性,测试结果唯一性
(2)代表性:尽量将功能相似的测试用例合并
(3)简洁性:可读性好、目的明确、结果唯一
编写测试用例有哪些方法
(1)类型划分
有效等价类:对于程序规格来说是合理的,有意义的输入数据构成的集合,可以建议程序是否实现了规 格说明中的功能和性能。
无效等价类:无意义的输入数据构成的集合,对于具体的问题,至少包含一个无效等价类,可以检验程序对无效数据的处理能力,容错力。
(2)边界值法:等价类划分的补充,利用等价类的边界值来测试,长期经验,大量的错误是发现在输入或输出范围的边界上,针对边界设计用例可以查出更多的错误。
(3)判定表法:针对不同逻辑条件的组合值,分别执行不太的操作。适用于有多个输入和对应的多个输出的组合关系。
(4)正交表法:使用最小的测试过程集合获得最大的测试覆盖率
(5)场景法:从起点,通过一系列操作步骤,达成某一种结果,到终点的过程测试。
(6)流程分析法:针对场景测试下的子项进行设计,写用例,覆盖所有路径分支。
(7)错误推断法:基于经验和直觉推测程序中所有可能存在的各种错误,从而针对性的设计测试用例。
测试用例的力度
分为三个程度
(1)简单:只包含测试的纲要,只包含测试内容。
(2)复杂:包含具体的输入项、每一个步骤、期待的结果。
(3)中庸:过于简单会有疏漏,过于复杂,效率太低,维护成本高。
设计测试用例方法总结
(1)测试用例的本质:基于需求。
(2)原则:根据程序的重要性和一旦发生故障带来的损失,确定测试重点。
(3)方法选取
先关注主要功能,业务流程、业务逻辑是否正确,考虑场景法。
需要输入数据的地方,考虑等价划分。
任何情况都是用边界值法。
包含输入条件的组合情况,选因果图和判定表法。
对于配置软件,需要考虑参数的组合情况,考虑正交排列法。
对照程序逻辑,如果发现没有达到要求的覆盖标准,适当补充更多的测试用例。
采用错误推断法,追加其他测试用例。
8.评审
同行评审
用户评审