探索性测试的实施与理解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
探索性测试的方法探讨
陕西西安XXXX学院XXXX
摘要传统的面向故障的软件测试方法存在限制条件高精确程度与低误报率无法兼得的瓶颈效果。
而高误报率直接导致软件测试成本的增加和效率的低下。
本文通过对探索性测试方法的研究中得出该方法的使用场合与特点,从而希望能在有限的软件测试成本内找出与脚本测试相结合的最佳方法,利用探索性测试,能显著提高软件测试的效率。
关键词软件测试探索性测试测试方法缺陷效率
引言
随着软件测试技术的不断发展,各种新颖的测试技术越来越受到软件测试人员的关注。
探索性软件测试是其中一种比较前沿的理论,尤其适用于那些要求在短时间内发现被测软件一些重要缺陷或事先没有能够进行详细测试设计的情况。
探索性软件测试强大的缺陷发现效率是其得到众多青睐的重要原因之一。
如何选择合适的测试方法?我们针对三种测试方法(脚本测试,探索性测试和自动化测试)区别以及他们之间的合作关系展开一定的讨论。
1调研目的
1.1软件测试现状和问题
软件测试是软件开发生命周期中不可或缺的用来保证软件质量、提高软件可靠性的重要阶段。
基于传统理论的软件测试,理论上都要求尽可能早地引入软件测试过程。
而在实际的测试过程中,我们所遇到的问题很多:首当其冲的就是长期处于瀑布模型下的软件工程,将测试工作安排并推迟到了开发周期结束阶段进行,导致大量的测试工作,包括功能测试、集成测试以及性能测试都堆积到了末期进行。
其次,没有有效地利用自动化测试这一先进技术也是目前软件质量备受质疑的关键因素。
虽然很多公司都非常推崇软件测试自动化这一理念。
可真正用到实处能够事半功倍的毕竟不是很多。
第三,需求变更得频繁性也是一个让项目经理头大的问题。
客户一改再改的情况,绝对不是少数。
再加上项目进度、客户压力等其他其他因素,测试工作的时间和内容被一压再压地缩减。
这样恶性循环,谁也不敢保证软件质量。
如何在减少重复性的测试工作的同时,发现尽可能多的软件缺陷,并利用有效的自动化测试降低成本,同时还能够及时高效的覆盖到这
些变更的需求。
这些正是想要帮助大家解决的问题。
1.2探索性测试
探索性软件测试是不同于传统方法的测试技术,在某些情况下,它比脚本测试更高效。
尤其适用于那些要求短时间内,或者在频繁的需求变更下发现被测试软件重要缺陷的情况。
其实每个测试工程师都在不知不觉地使用探索性测试方法。
其定义由James A.Whittaker提出:测试人员在测试应用程序中可以天马行空的想怎么测试就怎么测试,利用程序所提供的信息自由发挥,没有限制,不受任何约束的探索程序各个功能,借由这一方法来发现测试用例以外的软件错误。
探索性测试,就是对手工测试用例加上自动化测试用例的一种补充。
如果说手工测试和自动化测试在整个测试过程中70%,那我们所希望的就是通过探索性测试,能够将我们所忽略或者遗漏30%覆盖到大部分。
100%的覆盖测试是不可能的。
我们能做的就是通过各种测试途径、测试方式,包括单元测试代码,代码覆盖率工具等,尽可能的提高我们测试的覆盖范围。
2三种测试方法的比较
2.1探索性测试与脚本测试
传统手工测试通常是完全按照预先设计好的测试步骤一步一步人工验证所有想要验证的功能。
但是人非万人,总有缺漏。
因此对于探索性测试的重要性是要予以肯定的。
国内外学者对探索性测试和脚本测试方法的缺陷发现率和测试成本进行比较,如下表1所示。
表1实验数据分析
以上实验数据是我们国内的学者通过很多次对比试验得出的结果。
接下来,我们再来看一组国外研究学者们整理的数据报告,表2。
表2缺陷数据
表3缺陷数据难度分布
我们可以观察到以下:首先在传统测试方法中,结合使用探索性测试方法,缺陷的检出率明显高于单一的使用传统测试方法;此外探索性测试能发现更多测试设计以外的缺陷;最后进行探索性测试时,测试人员的经验、态度、思维方法等方面都会影响测试的效果。
①外国专家也得出“Defect Detection Effectiveness” (缺陷发现有效率)类似的结论.②
1)有效率:脚本测试和探索性测试的缺陷有效率没有区别。
(Effectiveness: ThereisnodifferencebetweenETandTCT.)
2)效率: 探索性测试能高效,因为需要更少的设计工作时间。
(Efficiency: ET is more efficient as it requires less designeffort)
3)脚本测试和探索性测试都存在问题,但是他们的问题不同。
脚本测试中,对测试用例的质量是需要考量的。
同时在探索性测试中对测试活动和测试报告需要进行一定的管理。
(Both ET and TCT have problems,but the problems are different in TCT,it is the quality of the test cases,an d in ET,itismanagingthetesting activitiesandreporting.)
2.2探索性测试与自动化测试
自动化测试就是把手工测试的每个步骤用自动化测试工具来实现。
好处是不用人来做了,缺点就是机器在执行测试过程中并不会变通。
至于什么时候开始自动化测试,什么时候开始探索性测试? 先自动化后探索性,还是反之,就要看项目产品的具体情况了。
既然两种方法都有了,为什么我们不也来比较一下他们的
效率和优势呢?首先我们比较手工测试和自动化测试的成本比较。
这里有几个数据我们可以一起看一下
表4 手工测试和自动化测试成本表③
表5 某公司自动化测试汇总表
我们可以看到虽然自动化测试大大降低测试工的成本,但不能完全取代手工测试的工作。
完全的自动化测试只是一个理论上的目标,实际上想要达到100%的自动化测试是不可能实现的。
从数据来看,一个40-60%的利用自动化的程度已经是非常好的了。
3三种测试方法的结合
各种数据可以告诉我们,脚本测试和探索性测试各有所长、相辅相成,不可能互相取代对方的作用。
我们需要做是找到脚本测试和探索性测试的最佳结合点,实现优势互补,更好的完成测试任务。
理论上,脚本测试应该可以进行探索性测试所能做到的所有测试工作,但是脚本测试不可能涵盖所有的测试,原因很简单:这些已经实现制定好的测试用例或者测试脚本,会规定了明确死板的输入和输出。
如果想要设计好所有可能性的用例,又会有太多重复性的工作和庞大的文档工作放在面前。
如果想发现和业务逻辑有关的系统缺陷,那么测试人员所实施的手工测试才是理想的选择。
因为它充分调动了测试人员的聪明才智,能够设计出符合真实情况的场景和案例。
如果再用自动化测试代替这些手工测试,那么我们即能提高覆盖率又能降低成本。
考虑采用自动化测试,尽可能的增加多的适用的测试
用例期望通过有线的测试找出尽可能多的软件缺陷我们可以使用不同的等价划分法、边界值分析方法1,以及白盒测试里的程序控制流分析、数据流分析、逻辑覆盖、域覆盖、符号覆盖等其他方式来增加自动化测试的覆盖率。
在真实情况中,在手工测试的过程中已经或多或少使用到探索性测试了。
将探索性测试执行过的步骤,加入到脚本测试用例中,或者加入到自动化测试中。
在下一轮的测试中通过各种方式覆盖这个测试,同时测试人员腾出手来做其他的探索性测试,这样循环往复,才能真正利用好探索性测试这个方法。
4结论
任何一种偏向性的软件测试方法,都不能满足当今对软件测试质量越来越高的用户要求。
利用探索性测试能显著提高软件测试的效率。
探索性软件是对传统测试方法的补充,它只在特定的环境和要求下使用才能达到最好的效果。
这是对测试人员根据现实情况进行的一种主动测试, 需要测试人员具备更好的专业素质。
需要在有限的时间中选择并做出正确的事情,需要有明确的战略和方向但是有必须预留一定的空间和时间让每个测试人员的大脑可以充分运作起来,在测试的过程中随机应变。
探索性测试鼓励着测试人员边测试边计划,运用测试中收集到的信息,影响自己正在进行测试的实际方式。
测试人员在执行脚本测试的同时,将探索性测试的信息添加到脚本测试的脚本中,以保证下次不遗漏。
尽可能的加到自动化测试用例中,加快测试速度,然后我们就会有更多时间执行探索性测试发现更多的问题。
只有正确的使用脚本测试,加上合理的自动化测试,外加利用探索性测试,才能加快测试的速度,有效的进行测试,并提高测试覆盖率。
在加深对探索性测试的理解过程中,将我们掌握的各种测试技术和方法用最佳的方法和比例结合在一起,在提高软件质量上发挥超出预期的结果。
在国内日趋成熟的软件行业,只有通过提高软件的质量, 同时通过各种方式降低成本,才能提高在本行业中的核心竞争力。
5.致谢
感谢老师的教育和各大网站提供充分的学习资源。
1边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。
通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
参考文献
①【1】朱昭俊,苏赛.探索性测试方法分析.计算机光盘软件与应用.
②【2】Exploratory and Test-case based Software Testing, 2013
③【3】史永莉,陈元琰,罗晓曙等软件自动化测试方案的效益分析田.微计算机信息
【4】徐晖,计算机软件测试技术与深度开发应用探讨
【5】李翼,陈创,计算机软件测试技术浅谈
附录a
探索性测试的优势列举:
1. 它可以鼓励测试人员的创造性
2. 它增加了发现新的或者难以发现的bug。
3. 它允许我们有更多的时间去测试感兴趣的和比较复杂的用例
4. 它可以更有效率的驱使测试人员在一个很短的时间内找到更多的bug和对AUT做一个快速的评估
5. 它显示了一个产品是如何被使用的
6. 它具有非常好的适应性,灵活性,多样性
7. 它比ST更有乐趣
8. 它可以促使测试人员快速的学习一个产品
9. 它可以check其他测试人员的测试工作
10. 它可以很好的应用在敏捷测试项目
11. 它允许我们不用花很多时间在编写那些简单和繁琐的测试用例。