传统的测试,手段很多,但是基本思想只有一个,那就是弱智无能的:万箭齐发~
所有的测试动作,都是盲目的“覆盖”!这种做法实在太愚蠢啊~
测试的过程,基本是一个固定不变的傻逼流程,其中涉及各种文档、各种假动作、各种装模作样的会议,其实没有人懂自己在干什么!
这个傻逼流程之所以傻逼,是因为低效实在太低太低太低!
通常这个傻逼流程会以需求等表面东西为出发点,设计测试用例在需求等最表面的一层进行覆盖;同时妄想通过对这一层的覆盖达到对整个质量的保证,多么可爱又可笑啊,白日梦做了这么多年都醒不过来~!岂不知质量的决定因素在最根本的代码那一层,而不在最表面的那一层!
测试用例的设计,也基本是上最原始最基本的等价类、边界值、正交组合等思想(这些思想很重要,都是来自数学和逻辑学的基础思想);但是软件测试作为一项工程,直接使用这些最基本的思想和逻辑,这么多年了完全没有加入自己的东西,这太可悲了!
从“需求”等最表面一层出发,到代码层,中间的步骤复杂又曲折,也没有靠得住的对应关系!覆盖最表面的一层,覆盖最根本的一层,二者之间隔着一万个黄河和一万个长江,这也是传统的测试在常识和逻辑上的致命问题!
最简单的是手动测试,目的是覆盖~后来傻逼用例太多了,执行不了,就上自动化,指望代替人工提高效率,目的还是覆盖~太傻逼了!很多人搞了多年自动化,对自动化的目的的认识错得离谱~
归根结底,软件测试从业者的水平大多太低,甚至可以说大多数都是外行~
我从事软件测试9年,近两年来一直在思考软件测试的思想,摒弃和否定了很多东西~
现在只剩下一个想法:有的放矢~
如果有人对测试技术有兴趣,应该了解过探索式测试,我觉得探索式测试就是一种“有的放矢”的测试思想~
“有的放矢”的测试思想,要求测试人员对自己面前的系统、产品有深入的了解,包括但不限于架构、模式、代码、操作系统、网络、交互等各个方面;然后再通过各种手段,包括但不限于代码扫描、工具、代码走读和对比等方式,了解到哪里需要测试------换句话说就是找到“的”,这个步骤最困难也最重要!
所以“有的放矢”其实应该称为“找的放矢”!从“需求”等最表面一层出发到代码层中间有很多东西,都有可能是“的”,通过各种手段找到这些“的”,有些“的”可以在最表面的需求层,有些“的”会介于最表面层和代码层之间比如兼容问题、安全问题,有些“的”会在最根本代码的层,比如性能问题(算法问题)、稳定性问题(代码逻辑)。
核心思想就一个字:深入理解仔细思考灵活选择方法,找到位于不同层次的全部所有的“的”!
最后,选择合适的做法去执行测试,也就是“放矢”,包括但不限于手动测试、自动化、性能、兼容性、正交全组合、边界值和等价类等!
“有的放矢”的测试,不再有多的像傻逼那么多的测试用例,也不会有傻得像傻逼那样的莫名其妙的bug单,不会再有一千个用例需要回归测试时迫不得已想到自动化,不再像以前那种测试那样傻逼、低效、恶心、弱智、无能和苟且~
有人对我上面的话感兴趣吗?来聊聊~