最近公司在搞大规模弄自动化测试,所以今天想来谈谈测试自动化这个问题,当然我说的“测试自动化”跟“自动化测试”是不同概念,一样的字,不同的顺序。
所谓的“自动化测试”,一般是说用一些工具来帮助测试,比如LoadRunner可以帮忙测试负载,QTP可以帮忙做功能测试,当然很多公司还自己写一些脚本做单元测试。这些工具的帮忙,可以极大地提高公司的测试效率,从而可以解放很多资源去做更加复杂、高级的测试。(所以“自动化测试”只是一个工具或者技术)
而所谓的“测试自动化”,主要是说我们的测试流程,应该怎样来充分地结合各种工具/系统(测试管理工具、自动化测试工具等等工具/系统),使得这个测试流程更加合理、更加高效。前面说的LoadRunner这类“自动化测试”工具对于“测试自动化”而言只是一个帮助因素。(所以“测试自动化”是一个方向,一个理论,一门科学研究)
在像LoadRunner这类工具出现之前,其实我们对于“测试自动化”的理论早已存在,出现的原因是由于软件发展速度太快,带来了越来越多光靠人力难解决的问题,比如:
1、性能问题:很多软件都是很多人一起使用的,比如股票系统,可能会几百万、几千万人在用,但是股票系统开发公司不可能用人力来模拟这么多人一起使用
2、功能问题:软件功能和逻辑是越来越多、越来越复杂,但是有不少旧的逻辑其实一直没怎么变,比如新建项目,备份项目等操作,但是这些虽然不变化,但是在每个Release时,总是需要测试的,这样子,就需要人力和时间了
3、变更问题:很多功能虽然表面上看起来样子没啥变化,但是其实内在逻辑什么都可能在不断变化,优化算法啊,修Bug,都可能带来改变,怎么去保证能Catch到每次改变呢?这个是问题。
4、……
就这样子,大家为了解决这种问题,推出了各种各样的工具,而且也解决地很不错,不过其实很多公司还是继续存在着问题,什么原因呢?过度地认为工具能帮忙解决一切,整天叫嚣着工具代替人,而忽视了一个重要因素:人的思维。
我们知道工具虽然很厉害,但是思维绝对无法超过人,工具里面的逻辑都是人编进去的,而人的思维确实无限的,如果工具真的解决一切,为啥这些工具还不断经常推出新版本,不正是说明还有很多事情工具做不到,需要人来帮忙去让它们实现吗?
所以在“测试自动化”的理论体系中,人总是在“训练”工具,而不是在“使用”工具。
在测试自动化现有理论体系中,主要由以下几部分组成:
1、人
2、自动化测试工具(LoadRunner,QTP,Selenium,Test Complete……)
3、测试管理工具 (DevTest, TestDirector ……)
关于“人”,我最后介绍了,先把2和3介绍一下,2其实已经介绍过了,对于3而言,虽然表面上可能没2厉害,但是其实起得作用可能比2还大,因为自动化测试工具只能测试产品的一个部分,而怎样能保证整个产品的所有部分都能被测好呢,这个就需要用到测试管理工具,比如TechExcel的DevTest,它的测试用例可以绑定自动化测试工具,而所有的测试用例就代表了一个完整的产品了,当这些测试用例去触发绑定的自动化测试工具运行后返回结果以后,相当于这个产品全部测完了。
而最重要的“人”的作用呢?其实我不说,大家应该都能想出很多作用来,接下来我来总结一下:
1、维护产品的完整性:需要根据功能的变化,Bug的发现、自动化测试工具的局限性,经常地更新测试用例、测试脚本。这个是最基本的。
2、发挥人的能动性、发散性:自动化工具永远无法把一个产品测好,所以作为人而言,不要以为懂了自动化测试工具而骄傲,也不用因为只懂手工测试而感到沮丧,关键是要了解测试的内涵,从而就能了解产品的内涵,最后让产品在你的脑海中能融会贯通,这样子,你自己的脑袋就是无敌的自动化测试工具了。
3、吸收+创新+创造:相信我,即使一个完美的产品的测试,如果真正意义上说完成了是永远无法做到的,更何况普通产品了。所以这也就意味着这里面会有大量的地方可以得到加强,吸收以往经验,发掘与加强遗漏点,追寻潜在点,创造新方法,都是一个“人”都能做到的,当然你需要大量地去思考、去探索。
4、更新体系:我们说“测试自动化”是一个方向,是一个理论,是一个科学研究,这个就意味着它可以不断进步,至于进步到什么程度,我也无法想象,有可能会出现类似自动分析产品逻辑从而得到测试用例与脚本这样子,不过唯一能知道的是,人还是会占主导地位,无论更新到什么样子,人会一直带领着这个系统前进!
本文转载自51Testing软件测试网,查看更多:http://www.51testing.com/html/news.html