技术门诊是51CTO社区品牌栏目,每周邀请一位客座专家,为广大技术网友解答疑问。从热门技术到前沿知识,从技术答疑到职业规划。每期一个主题,站在最新最热的技术前沿为你引航!

   
    本期特邀淘宝资深
软件测试工程师、畅销书作者高翔老师针对
探索式测试的问题给予解答,欢迎网友积极提问,与专家一起讨论!

查看本期门诊精彩实录:http://doctor.51cto.com/develop-271.html

精选本期网友提问与专家解答,以供网友学习参考。

【257期门诊集锦】探索式测试的奥秘_第1张图片

 

Q

你好:

探索式测试是一种软件测试风格(Style),它强调独立测试人员(Individualtester)的个人自由和职责(Personal Freedom and Responsibility),为了持续优化其工作的价值(Value),将测试相关学习(Test-related Learning)、测试设计、测试执行和测试结果分析作为相互支持的活动,在整个项目过程中并行地执行。请列举实例解释下以上描述,谢谢!

A

这个还是演示某个软件的测试比较好。我可以给大家一些例子。 比如我测试QQ登陆功能,我不知道QQ登陆功能的具体需求,比如他的业务规则(什么用户能登陆、什么用户不能登陆、会有什么提示错误信息、最大长度、最小长度、数据库字段等等)。我可以拿到这个任务后,确定我的session:就是登陆功能的功能测试。另外我有自己的个人经验去预估测试时间,比如1.5hour

我在测试的时候,是有目的的去测试,比如我的test idea是测试QQ用户名为10个字符的登陆情况。我不知道QQ软件是否支持这个功能,我会去操作它,得到结果和信息告诉我有没有超过这些长度。也就是将测试相关学习和测试结果分析拿出来,得到新的test idea:测试用户名为16个字符的登陆,当然这些都是举例说明,如何将测试结果和测试设计和执行进行支持的活动。

由于篇幅原因,我这里不能多说,你可以在《探索式测试实践之路》中找到非常多的案例,具体可以参考:http://blog.sina.com.cn/s/blog_6cf812be0100nnyx.html

Q:

探索性测试是否可以理解为测试人员依托足够的工作/产品经验,按照自己的逻辑总结出的一套有规律或针对性的测试方法。对新入职的员工是否适用?如何让对测试零基础的人快速上手?

A:

你说的一半是对,一半是不对的。

探索式测试是一种软件测试风格(Style),它强调独立测试人员(Individualtester)的个人自由和职责(Personal Freedom and Responsibility),为了持续优化其工作的价值(Value),将测试相关学习(Test-related Learning)、测试设计、测试执行和测试结果分析作为相互支持的活动,在整个项目过程中并行地执行。

探索式测试是会考虑到测试人员的经验,但不是绝对的,探索式测试的一些测试方法对于新人学习来说,非常好的学习机会,如果有好的培训经验和能力,完全可以让测试零基础的人快速上手。

“探索式测试不适合测试新手”是一种似是而非的说法。第一,所有高效的测试都依赖于测试人员的测试技能和行业知识。测试专家能够准确地选择测试策略、有效地运用测试方法,因此测试效果更佳。第二,测试新手采用任何测试方法,都需要指导和帮助。这有助于他们充分利用方法的优点,并避免方法的潜在陷阱。可见,更有意义的问题是:如何帮助测试新手尽快地掌握测试方法,尽快地成长为测试专家?

从个人发展的角度看,探索式测试有助于测试新手快速学习。探索式测试将学习与应用作为相互支持的活动逐步展开,为测试人员的技能提升提供了平滑的学习曲线。此外,并行地执行测试学习、测试设计、测试执行和测试评估为测试人员的成长提供了持续、及时、有效的反馈,这有助于他主动学习和快速调整。

从企业发展的角度看,测试团队应该积极帮助测试新手成长。可以采用的方法包括:为他安排工作导师、评审其测试文档、评审其测试记录、在测程中安排测试专家与他结对测试、定期进行一对一的会谈等。这些活动会消耗测试团队的人力资源,但是它们是帮助新员工成长最快速、最有效、最廉价的方法

Q:

一直在想一个问题,软件能否在开发的阶段就设置好以后的测试点,因为测试就是不断重复模拟用户使用的过程,如果可以预先植入这些测试点,那以后的测试是否可以由电脑代劳从而自动完成呢?

如果帅哥有空,还请指点一二。

A:

表面上现在的测试设计出来的测试点可以一定程度上转换为自动化测试脚本,从而可以自动化回归,但这个还是依赖于事先做好的TC,甚至是手工测试。

另外也可以应用基于模型的测试,软件需求评审过后,建立模型,自动生成测试用例和测试脚本,自动运行,但是不是所有的测试点都可以由电脑代劳的。 这一定上也是探索式测试发挥效率的地方。因为测试的过程,本身也是学习的过程,测试能发现的问题,有时候是在使用软件过程中也就是测试过程中灵感出来发现的bug,所以这个是无法避免的。

建议看看本书,可以多了解下如何在一开始就完全设计出这些测试点,从而提升TC的覆盖率。

Q:

※如何正确认识探索式测试?

以前不知道,专门网上搜索了一下,似乎更是一种理念而不是技术,所以很关心下面的问题!

 ※如何使用探索式测试方法进行测试?

所在企业不久前实现了自动化测试辅助测试人员,可否举一个探索式测试方法在实际中的应用。

※在项目中如何实践探索式测试?

非常关心这个问题!

期待并感谢高工的解答!  

A:

你问得问题也比较大,我简单说下,详细了解的话,建议你看看《探索式测试实践之路》。首先是测试方法的学习和理解和应用。另外的就是测试负责人需要了解探索式测试实践的流程和测试策略。实际应用的例子,那本书里面也有详细的描述。

实践的话题,国外已经实践非常多了,我这边总结了探索式测试实践的四象限,多个角度的去实践探索式测试,帮助测试人员和测试经理们更加的了解ETET的效果。

Q:

老师您好,我对探索式测试有过一段时间的学习(主要是james whittaker那本书),也有过一定实践,所以有这样几个关于探索性测试的问题要请教您一下:

1.您觉得现阶段我们是用探索式测试作为手工脚本测试的一个补充更好,还是完全取代传统脚本测试方法更好?

2.在接触探索式测试的开始,会觉得有些无从下手,漫无目的地尝试;也会运用很多方法,但仍然常常会对某个功能重复测试了多次。这种情况是由于不够熟练还是其他原因?怎么能更好的避免?

3.现在在做探索式测试的尝试时,我都会先分析,然后比如用出租车测试法、遍历测试法、深巷测试法、包括超模测试法、懒汉测试法等等,在一个场景的实践中很多时候会发现自己不太知道如何取舍这些方法,反而导致效率低下,并且bug量不如手工脚本的那么全面完整,这种情况应该如何提高?  

A:

1. 探索式测试实践的话,有很多种方式,可以看看《探索式测试实践之路》,这里面介绍了4种主要的方式。ET不会完全替代ST,但根据测试团队的熟悉程度,看看是ET主导,还是ST主导。

2. 这个很正常,一方面加强探索式测试的方法学习,不断的实践和加深印象。另外重复测试也是很正常的现象,我们做的就是减少这个重复度,需要了解测试方法背后的含义和系统设计的思路。

3. 不要过度的依赖于这些方法,另外就是知道方法背后的背景和系统设计的的问题,才能解决你的问题。为啥bug量不如ST的全面完整呢?你的意思是发现bug较少还是什么?我这边的实践都是ET发现的bug较多。