探索性方法在面向故障软件测试中的应用
作者:网络转载 发布时间:[ 2013/6/6 10:16:49 ] 推荐标签:
摘要:传统的面向故障的测试方法存在限制条件高精确程度与低误报率无法兼得的瓶颈效果,而高误报率直接导致了测试成本的增加和效率的低下。本文在面向故障的测试框架下,深入研究了探索性软件测试方法,对该测试过程进行了量化处理,提取出一系列指标和效应函数,作为所采用的用于优化的遗传算法中的迭代条件,进而寻找出在有限测试成本内的佳检查点组合,终实现了既定精确程度的条件下测试成本的优化。
关键词:探索性测试;面向故障;遗传算法;检查点
1、引言:
软件测试是是软件工程的重要组成部分,是保证软件质量、高软件可靠性的关键。软件测试工作的好坏直接决定着软件产品质量的好坏。近年来,随着软件应用范围的扩大,软件复杂度的提高,以及软件设计技术的不断发展,软件开发规模越来越大,处理的问题愈来愈复杂。软件系统的可靠性也变得更为重要,传统的软件测试技术和方法以及测试工具己无法满足大型的、复杂的软件测试需要。软件测试己成为当前软件技术研究的重点和难点。
探索性软件测试是软件测试领域比较前沿的理论,尤其适用于那些要求在短时间内发现被测软件一些重要缺陷或事先没有能够进行详细测试设计的情况。利用探索性测试,能显著提高软件测试的效率。
面向故障的软件测试方法是指测试是针对某些故障的,而不是传统意义上的针对的是整个软件。因为面向故障的方法在测试之前把测试目标定位到一类具体的故障,所以这些故障具有类似的检测难度。
已经有很多文献把遗传算法应用到软件测试中并取得了较好的结果,但是这些应用大多是基于路径覆盖,条件覆盖以及测试数据生成的。在探索性测试方面,J¨org Denzinger把遗传算法应用到系统冗余(错误)行为测试中效果也较明显,他的测试倾向于系统测试,把时间和待测个体(这些个体被看作agent)的动作构建成一个序偶,进而用遗传算法迭代寻找出冗余错误的动作。
传统的面向故障的测试方法存在限制条件高精确程度与低误报率无法兼得的瓶颈效果,而高误报率直接导致了测试成本的增加和效率的低下。本文在面向故障的测试框架下,深入研究了探索性软件测试方法,对该测试过程进行了量化处理,提取出一系列指标和效应函数,作为所采用的用于优化的遗传算法中的迭代条件,进而寻找出在有限测试成本内的佳检查点组合,终实现了既定精确程度的条件下测试成本的优化。
2、探索性测试:
探索性测试的创始人James Bach对探索性测试的定义为:了解被测软件,设计测试用例,执行测试同时进行的软件测试技术。也是说不进行事先计划和设计的一种特殊类型的测试,由有经验的测试人员根据实际情况产生诸如“我这么测结果会怎样?”的灵感来进行测试,这一方式往往能帮助在测试设计之外发现更多的软件错误。
探索性测试往往是测试人员依据测试任务进行主动的、探索性的测试,这要求探索性测试的实施具备比传统测试更强的测试设计能力,他要根据测试的实际情况,来及时的设计出测试用例,只不过这个测试不需要形成文档而已,但是要给出测试的结果报告,此外,还需要很强的观察能力,思维能力和调动各种资源的能力,如他人的帮助,工具的使用等,特点概括如下:
(1)探索性测试强调测试设计和测试执行的“同时”性。这个“同时”是相对于传统软件测试过程中的“先设计,后执行”来说的。
(2)测试工程师通过测试来不断学习被测试系统。
(3)探索性测试的重点是创造。
运用探索性测试对软件进行测试,首先通过阅读能找到的软件需求和开发文档,学习了解软件的运行环境、了解测试任务、配置测试环境等。准备这些测试计划的同时,根据已经掌握的情况,对被测试系统实施初次的测试用例设计。利用设计出来的测试用例,进行初次的探索性软件测试执行。测试的执行结果,一方面反馈到设计好的测试用例中去,对已有的测试用例进行重新修订;另一方面与原先学习到的系统作比较,加深对原来界定不清问题的理解,进一步的加深对原系统的了解。之后,又可以进一步利用对系统的学习了解成果,设计出新的测试用例,执行测试。如此反复,直至完成原先设定的测试目标。
3、面向故障的软件测试:
面向故障的软件测试方法是指测试是针对某些故障的,而不是传统意义上的针对的是整个软件。因为程序是软件的具体表现,所以为了便于测试,其定义的故障模型必须落实到程序上,也是说,故障是程序中某个或某几个程序的错误。定义在程序中的故障必须满足下列几个条件:
(1)故障必须是和实际是对应的。也是说,实际软件中存在大量这种故障,而且所提出的故障模型能覆盖大多数实际存在的故障。
(2)故障必须能引起错误。一旦该故障被执行且产生的变异能传播到程序中的某个输出,则程序的结果必然是错误的,或者说程序的行为是错误的。
(3)故障的个数是可以容忍的。故障的个数一般和程序的规模是线性关系,个数太多,难以实现,以至无法实用。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11