最近公司在搞大規模弄自動化測試,所以今天想來談談測試自動化這個問題,當然我說的“測試自動化”跟“自動化測試”是不同概念,一樣的字,不同的順序。
所謂的“自動化測試”,一般是說用一些工具來幫助測試,比如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、更新體系:我們說“測試自動化”是一個方向,是一個理論,是一個科學研究,這個就意味著它可以不斷進步,至于進步到什么程度,我也無法想象,有可能會出現類似自動分析產品邏輯從而得到測試用例與腳本這樣子,不過唯一能知道的是,人還是會占主導地位,無論更新到什么樣子,人會一直帶領著這個系統前進!