测试开发的战略战术
战略战术一般是指军事方面,可是这与测试开发有什么关系呢?当我在和同事交接任务的时候,我说来说我从战略战术的角度来给你讲一下自动化测试,他还笑话我呢?这有什么啊,一个优秀的测试开发必须像统军元帅一样思考问题,你或不信,听我试言之!
当我们接到一个任务,比如说对一个网站或是app做自动化测试的时候,你需不需要先分析一下“敌情”呢?知已知彼,百战不殆嘛!被测试对象是不是已成形还是正在快速迭代过程中?被测试对象是用什么语言开发的?开过程是否规范,有没有相应的开发文档?测试人员能否看到被测试对象的源码等等。我们需要判断出是在诺曼底还是在加莱登陆!!
在知己方面,我们需要测试用例覆盖到什么程度?自动化测试用例是用来在测试环境下回归测试还是要做线上回归测试?我们兵力如何?你是一个人在开发这个自动化测试框架及用例,还是需要整个团队,多人合作开发?团队成员的能力如何?大家都擅长什么语言?在兵器方面,现有的开源框架或是工具都有哪些儿?它们各自的优势是什么?哪儿个框架或是工具能高效的解决我们的问题,或是需要进行二次开发?在后勤方面,自动化测试用例后期维护成本是多大?是由开发人员维护还是其他的团队成员维护?测试用例的规模有多大,后期需不需要多线程执行?自动化测试用例执行的情况是要给技术人员知晓呢,还是需要把测试执行结果报告给领导?这些问题我们都要考虑到,这就是我们的后备军。
以上是我们在做自动化测试工作之前要从战略角度考虑的问题,下面我们从战术的角度分析一下自动化测试的实施。
当我们从战略的角度准备好了自动化测试用例的各个方面,那我们就需要具体实施自动化测试用例了。首先我们要规划自动化测试用例的框架问题了,为了将战略胜利转化成战术胜利,我们要讲究如何配置步兵,装甲兵,航空兵等各种兵种的配合,如果各种兵种一涌而上,是不能充分发挥各自的优势的!这就是在我们的自动化测试用例中,不能把操作步骤 ,测试数据,测试判断等眉毛胡子一把抓的。而在编写具体的测试的时候,也不能太死板,要思维灵活,善于利用各种方法来达到我们测试用例的目的。“沙漠之狐”隆美尔不就用过88毫米的高射炮平射打过英国的坦克嘛,如果我们局限于高射炮只能用来对付飞机的话,隆美尔就不会取得意想不到的胜利的。在我们判断测试用例的执行结果的时候,不要只盯住直接受操作影响的地方,而那些儿间接影响的地方也可以用来做检测点的。
对于输入数据为了达到每次测试不受上次的影响,我们习惯于随机数来作为输入数据,可是这样又不便于检测。此时我们可以用半随机数作为输入,检测的时候检测是否包含那块没有随机的内容就可以了。虚虚实实,真真假假,灵活地根据敌情来使用不同的战术,才能立于不败之地。墨守成规,纸上谈兵,终究是不行的,要在平时工作的过程中灵活多变,不断地积累经验才能使工作越来越轻松。
运筹帷幄,决胜千里。只要我们前期考虑好了各种应该照顾到的情况,把自动化测试框架搭建起来,封装好各种常用的函数,编写自动化测试用例就只是在组织测试数据。就像我们把步兵,装甲兵,炮兵和航空兵等兵种配置好,取胜就是下达命令的事情。至于是要用火炮攻击敌人的堡垒,还是用轰炸机轰炸,或是用舰载炮远程打击,就要看具体的情况了。如何灵活地运用战略战术取胜,这体现了元帅的综合指挥能力;而自动化测试用例实施前,你能否考虑到涉及到的各种情况,或是方方面面的事情,就体现出你的测试开发的能力!