第一计-瞒天过海
【释义】
防备得周全时,更容易麻痹大意;习以为常的事,也常会失去警戒。秘密常潜藏在公开的事物里,并非存在于公开暴露的事物之外。公开暴露的事物发展到极端,就形成了最隐秘的潜藏状态。
在我们测试过程中,漫天过海是很常用的一种计谋。
很多错误,往往都是隐含在我们已经习惯了正确的区域,这也是为什么,我们在不停的在做让人觉得很枯燥无味和产出比很低的回归测试的原因。
很多测试团队,都是习惯了使用已经存在的功能测试用例来进行回归测试,导致很多bug在被僵化的测试过程所遗漏。所以,进行更加有效的回归测试必须要去探索那些我们遗漏的阴影区域。而如何去探索这些区域呢,一般可以考虑的方法有如下几个:
1、在功能测试完毕后,对bug进行分析,得出bug的分布图和原因。然后在没有发现bug,但是被主要bug趋势范围影响到的功能区域,加强回归测试的深度。
2、在回归测试完毕后,对功能区域进行评价,对于发现问题较多的功能区域进行更加宽泛的广度优先的二次回归。
3、定期的评审回归测试用例,对测试集合进行调整,不要只针对新功能直接影响的,而是那些在底层更迭模块所影响的应用层进行更多的关注。
另外一个大范围使用瞒天过海的测试范畴就是安全性测试。
在安全性测试中,我们大部分的方法就是设置一个虚假的信息,企图访问系统,从而给系统带来损害。
比如我们使用jmeter去获得一个特定角色的访问过程,该角色的权限为低级。我们在测试时,人为的修改该角色的权限,通过jmeter发起请求,看是否能够成功的骗过登录策略进入系统。
还有就是我们认为的修改数据库中的某条数据,然后进行下束流程,看系统是否在流程进行过程中对数据完整性进行有效的校验。
总之,瞒天过海在测试领域里,就是要验证那些隐藏的流程和数据处理过程。这些流程和过程在我们用户前端是被屏蔽或者隐藏掉的。虽然正向的和反向的操作都不会出现问题。但是,除了正向和反向的操作这些已经被开发刻意处理过的范围之外,仍然会潜藏一些常规方法无法探知的缺陷。这些缺陷只有通过非常规的测试手段,主动的攻击才会被表露出来,从而获得更深层次的质量保障。
第二计-围魏救赵
【释义】
进攻兵力集中、实力强大的敌军,不如使强大的敌军分散减弱了再攻击。攻击敌军的强盛部位,不如攻击敌军的薄弱部份来得有效。
围魏救赵其实说起来很简单,大部分人也都试用过。那就是把要测试的对象不断的拆分,一直到最simple的程度。从而避免因为测试一个过于复杂的对象导致bug的遗漏。
这个过程其实就是一个break down的过程。简而言之,就是对一个对象的测试用例进行分层的过程。
我们在测试用例开发过程中,一定要引入分层的概念,这样的好处不但利于我们在各个测试阶段simple的工作从而准确定位bug,而且有利于我们在需求更新时,更加快捷有效的更新我们的测试用例。
一般测试用例分层的策略就是:
1、UI层,只考虑GUI的范畴。
2、Field层,考虑的是各个element本身自有的属性逻辑。
3、Functional层,考虑的是单个或者多个element的实现的业务逻辑流和或者功能。
4、Business Rule,考虑的是上下文,和直接间接被影响的功能区域。
5、安全测试,考虑的是相关的安全策略。
总之,所谓的围魏救赵,目的就是通过将测试对象细化,降低测试的复杂度,有利于我们通过一点来击破整个屏蔽,减少测试的成本。