开篇
不知道大家有没有一个感觉,就是在做测试的过程中,某些方法、术语、理论总感觉并不陌生,并且有些理论我们好像早就知道了,只是没有系统化而已。
那么,有这种感觉其实是正常的。因为很多知识其实古人早就总结出来了,并且通过典故形成了成语,然后现如今被现代人应用到各个领域。
本文就结合我们熟知的成语来说一说测试过程过程中的一些知识点,我相信你一定会为感觉特别亲切。
测试目的
测试的目的之一,就是使自己确信产品是能够正常工作的。测试人员的基本素质之一就是具备怀疑一切的态度。
那么,大家在日常生活中,对某个事物表示怀疑的时候,经常会说:耳听为虚,眼见为实。在汉·刘向《说苑·政理》中,也有类似的说法:“夫耳闻之,不如目见之;目见之,不如足践之。”,也就是说凡事讲究证据,道听途说不可信。
还有一个词就是无征不信,出自《礼记·中庸》,意思是没有证据的话或事不可信,没有验证的事不可相信。
在我之前的项目中,经常出现这样的情况:开发人员在发布版本转测试的时候,经常口头上说,他们做过了自测试,没有问题,满足提测条件。但是,往往一转过来,测试人员一测,就发现冒烟测试不通过,各种阻塞性问题,白白浪费了很多人力。
究其根本,有的时候是开发人员测试方法不对,有的时候是开发人员自测不够充分,有的时候甚至是开发人员并没有真正的进行自测。所以,后来测试对开发提测质量进行了严格的要求:提测必须提供开发自测报告、静态代码扫描报告,缺一不可。没有这些证明材料,测试绝对不相信开发的一面之词,正所谓无征不信,耳听为虚眼见为实。
测试方针和测试策略
另外,在测试过程文档中,提到的测试方针和测试策略,在古语中也有类似的见地。
测试方针
测试方针:描述组织的测试目标和目的。方针一词,原指罗盘针,指引地理方向。 现常指指导工作或事业前进的方向和目标。
说白了,测试方针就是测试活动的大方向。
以我之前做软件维护测试的项目为例,由于维护测试项目的特点:改动小,主要是解决客户问题,所以,一般情况下测试方针都是:给客户解决的问题回归测试通过,修改点相关的模块无修改引入问题。这就是测试方针,至于如何实现这个方针,那就是通过制定测试策略来保证了。
测试策略
测试策略:描述组织中通用的、不按项目而变化的测试方法
策略相关的成语:
出谋划策,谋:谋略,画:筹划,即制定计谋策略,出处:明代冯梦龙《东周列国志》第六十九回。此处,策即指策略。
一般在古代战争中,给将军出谋划策的叫做军师。军师制定的计谋和策略主要是指挥军队通过什么样的方法能够打胜仗。
而在测试活动中,制定的测试策略也同样是指挥测试团队通过怎样的测试方法,实现测试目标(测试方针)的。制定测试策略的“军师”,在不同的组织中形式不太相同。有的组织是TSE(测试系统工程师)制定测试策略,有的组织是测试经理制定测试策略,有的组织是测试经理、测试分析师共同讨论完成测试策略的制定。
继续以上一节中引用的项目为例,为了实现测试方针(给客户解决的问题回归测试通过,修改点相关的模块无修改引入问题),我们通过制定相应的测试策略来指挥测试人员开展测试活动:
1、所有承诺解决的客户问题,使用手工测试的方式,进行充分的回归测试
2、通过执行修改相关的模块的自动化用例来进行继承功能的回归测试
3、其他的模块不需要测试
还有一个成语叫有勇无谋:只有勇气,没有计谋。指做事或打仗只是猛打猛冲,缺乏计划,不讲策略,只会鲁莽的去做事,从不会投机取巧。出自唐·陆贽《论两河及淮西利害状》。这里边的谋,就对应着测试策略中的策略。
这让我想到了一个活生生血淋淋的例子。一个测试团队成员,由于没有按照测试策略执行,导致了严重的后果。
事情的经过是这样的。本来已经制定好的测试策略是,按照测试用例的优先级从高到低执行,目的是尽早发现重点功能的缺陷。但是,该测试人员自作主张,认为执行的先后顺序并没有太大影响,然后竟然先从容易执行的用例开始执行,执行难度大、场景较复杂的用例放在了最后执行,这其中就有优先级为高的测试用例。最后,悲剧出现了,有一条高优先级的用例测试出了缺陷。而这个时候,已经到了整个项目的中后期,代码的改动风险很大,但是又没有办法,存在问题的功能虽然不是十分核心的功能,但是也是客户提出来的需求,不得不改。所以,最后在修复这个缺陷的同时,增加了不少周边相关的用例进行加固测试,这才降低了修改的风险。
该案例中的这位测试人员正是有勇无谋的代表。有好的策略没有严格的落地,和没有好的策略,在本质上没有区别,结果都是酿成恶果。
测试工具的使用
我们在测试过程中,为了提高测试效率会引入自动化工具进行测试执行和测试管理。
那么在古代,人们早就总结出来了“善假于物”,出自《荀子·劝学》,君子生非异也,善假于物也。意为君子的资质与一般人没有什么区别,君子之所以高于一般人,是因为他能善于利用外物。善于利用已有的条件,是君子成功的一个重要途径。
如果项目中多一些“君子”,多借助“物”,那么项目成功的概率就会大很多。试想一下,测试中如果少“物”或者无“物”,将是一个什么样的场景。
如果没有缺陷管理系统,那么测试人员发现缺陷,通过文本工具记录和跟踪,可想而知,要浪费多少沟通成本,并且可继承性、可追溯性特别差;如果回归测试用例没有实现自动化,那么每个版本测试人员都通过手工测试的方式进行回归测试,如果用例数量达到了一定的规模,可想而知,花在回归测试工作上的人力成本将是怎样的;如果没有测试仪器仪表,想要模拟收发各种类型的报文几乎是不可能的。
风险管理
另外,测试管理和项目管理理论中都有提到风险管理。基于风险的测试基于风险的测试包含四个主要活动:风险识别、风险评估、风险缓解、风险管理。对于风险肯定是早预防早发现早处理为最优。
预防风险
关于预防风险,古人有云:未雨绸缪,防患于未然。意思是趁着天没下雨,先修缮房屋门窗。比喻事先做好准备工作,预防意外的事情发生。出自《诗经·豳风·鸱鸮》。
人们现在做项目,预防风险的意识已经越来越强了。在开发生命周期中,测试经常左移,旨在提前发现需求和设计上的问题,起到良好的预防风险的作用。另外,再比如对于重要项目,提前充分做好人力储备,以备不时之需,未雨绸缪,也是预防风险的实例。
减轻风险
关于减轻风险,古人有云:亡羊补牢,为时未晚。羊逃跑了再去修补羊圈,还不算晚。比喻出了问题以后想办法补救,免得以后继续受损失。出自《战国策·楚策》。
风险发生了,及时制定有效措施,减轻风险,是风险缓解常用的策略。
比如,软件测试人员经常通过分析线上反馈的缺陷,以此作为依据形成新的测试用例,作为对现有用例库的补充,应用到后续的测试活动中。这正是“亡羊补牢”的一个过程,起到了很好的止血效果,防止再犯类似的错误。
测试改进
前面提到的通过线上问题,总结教训,进行测试用例优化,除了是亡羊补牢,同时也是在做测试过程改进。
下面我们就说说测试过程改进。
项目回顾(例如,经验教训),是过程改进活动的组成部分。测试结束过程一个重要的工作就是进行总结经验教训,通过总结来自测试项目和整个软件开发生命周期中的重要经验教训,来实现过程改进。
成语前车之鉴,意思是吸取前面车子翻倒的教训。比喻先前的失败,可以作为以后的教训。
做项目一多,“翻车”时有发生。但是,只要好好总结经验教训,吸取“翻车”的教训,引以为鉴,就一定不会再犯同样的错误了。反之,就很可能会重蹈覆辙。
之前项目有个版本,由于低估了某一个需求的重要性及复杂性,将该需求交给一个新员工进行测试分析、测试设计和测试执行。由于新员工的经验不足,测试场景没有考虑全面。随着测试进程在一步一步向前推进,发现越来越多的缺陷都和该需求相关,并且这些缺陷的改动特别大,甚至涉及到代码重构。所以,最终决策该需求当前版本不上线,不得不遗留到下个版本继续优化。
测试结束时,通过对这次“翻车”事件的分析,发现在测试团队与产品经理、开发人员的沟通方面比较欠缺。后续需要针对每个需求的重要性、复杂性进行详细评估,并且测试需要针对重要需求,与产品、开发进行测试方案的讨论。这样就可以很好的避免类似的情况再次发生。
所以,只要我们牢记“前事不忘后事之师”,吸取以前的经验教训,作为今后行事的借鉴,将会把项目做得越来越出色。
结语
通过本文将测试过程与成语联系起来,你是否体会到测试理论更加有趣了呢?你是否也更加佩服古人的智慧了呢?你也可以扩展联想一下,其他测试术语与成语的联系呀,还是蛮有趣的。
作者:快乐至上
来源:51Testing软件测试网原创