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