8.1 错误猜测法
8.1.1 基本概念
错误猜测法又可称为错误推测法,定义为一种测试技术,是基于测试人员对以往项目测试中曾经发现的缺陷、故障或失效数据,在导致软件错误原因分析的基础上设计测试用例,用于预测错误、缺陷和失效发生的技术。
缺点:
1、错误推测的结构化方法是基于测试人员丰富的经验,对软件错误产生原因进行分析,构建缺陷或故障列表,并尝试设计产生缺陷或故障的测试用例的方法。
2、错误推测法能否成功主要取决于测试人员的技能。
优点:
1、当使用错误推测法与其它测试技术相结合时,可以使测试人员更好地了解系统功能及其工作方式。
2、根据对系统的理解,经验丰富的测试人员可以通过假设和推测找到系统无法正常运行的原因,发现更多的缺陷,有效地提高软件测试的效率。
8.1.2 软件错误类型
软件错误是指软件的期望运行结果与实际运行结果之间存在差异的问题。软件的错误分类在错误推测法的使用中尤为重要,可以帮助测试人员根据软件错误的分类提前列出可能出现的缺陷,构建测试用例。
1、软件需求错误
软件需求错误包括但不限于:
- 软件需求不合理;
- 软件需求不全面、不明确;
- 需求中包含逻辑错误;
- 需求分析的文档有误。
2、功能和性能错误
功能和性能错误包括但不限于:
- 需求规格说明中规定的功能实现不正确、存在未实现或冗余的情况;
- 性能未满足规定的需求;
- 为用户提供的信息不准确;
- 异常情况处理有误。
3、软件结构错误
软件结构错误包括但不限于:
- 数据定义或数据结构有误;
- 数据存取或数据操作有误。
4、数据错误
数据错误包括但不限于:
- 数据定义或数据结构有误;
- 数据存取或数据操作有误。
5、软件实现和编码错误
软件实现和编码错误包括但不限于:
- 编码错误或按键错误;
- 违反编码要求和标准,例如语法错误、数据名错误、程序逻辑有误等。
6、软件集成错误
软件集成错误包括但不限于:
- 软件的内部接口或外接口有误;
- 软件各相关部分在时间配合、数据吞吐量等方面不协调。
对于上述软件错误来说,软件结果错误、数据错误与功能和性能错误出现的频次较高也最为普遍,所以更需要充分的重视。
8.1.3 估算错误数量的方法
为了保证错误推测法的有效实施,可以预先对错误数量进行估算。测试人员通过软件中可能存在的错误数量,能够运用错误推测有效地推测程序中所有可能存在的各种错误。以下介绍了可以估算程序中可能存在错误数量的两个方法。
1、Seeding模型估算法 Seeding模型的工作原理为,在开始排错工作前,排错人员并不知道软件中的错误总数,因此将软件中含有的未知错误数据记为N,在此基础上,人为向程序中再添加Nt个错误。经过t个月的排错工作以后,检查排错的清单,将排错类型分为两类,一类为程序中原有的错误,数量记为n,另一类则是由排错人员人工插入的错误,数量记为nt。则预估该软件中错误总数N的方法为:
N = (n/nt)/Nt
但在实际应用中,排错人员由于无法确定程序中出现错误的数量和内容,可能会导致新添加的错误与原有错误重复,不一定准确。
根据上述模型基础上对其进行改进。设置A、B两组测试人员相互独立地对某个软件进行测试,记A组人员和B组人员测得的错误数分别为i和j个,两组测试人员共同测试出的错误数为k,软件错误数的估算值N与这三个量的关系如下:
N=(i×j)/k
2、Shooman模型估算法
Shooman模型是通过估算错误产生的频度来保证软件的可靠性的方法。估算错误产生的频度主要体现为估算平均失效等待时间MTTF。因此,Shooman模型估算MTTF的公式为:
MTTF=Ir/(K(Er-Ect))
其中,K为经验常数;Er是测试之前程序汇总的原有故障总数;Ir是程序长度(机器指令条数或简单汇编语句条数);t是测试(包括排错)的时间;Ec(t)是在0-t期间内检出并排除的故障总数。此公式中K及Er可通过两次以上不同的互相独立的功能测试进行估算得到。
Shooman模型主要应用于软件的开发阶段,而Seeding模型主要应用于软件的测试阶段。因此通过对错误数量的估算,能够有效地提升软件可靠性。
8.1.4 错误猜测法的测试用例编写
测试手机终端的通话功能,设计各种通话失败的情况
无SIM卡插入时进行呼出(非紧急呼叫) |
插入已欠费SIM卡进行呼出 |
射频器件损坏或无信号区域插入有效SIM卡呼出 |
网络正常,插入有效SIM卡,呼出无效号码(如1、888、3333、不输入任何号码) |
网络正常,插入有效SIM卡,使用“快速拨号”功能呼出设置无效号码的数字 |