1、回歸測試:
由於回歸測試的測試目標是已有的,穩定的功能,我們會下意識的以為是不會有問題的,並且往往只需要測試一次就行,在這中情況下,如果能有一個穩定的自動化測試腳本來代替手工的操作,將極大的提高工作效率,在關注新功能的同時不會忽略回歸測試。而且隨着產品版本不斷的迭代,疊加的功能也會越來越多,我們會更關注新功能,沒有更多的精力和意識去關注既有功能是否被破壞掉了,所以自動化是不二的選擇。
2、手工測試和自動化的區別:
手工測試:測試人員能很好的把握測試用例之間執行的先后順序,一個個有序的執行測試,后執行的測試可以利用前一個測試執行后所創建的數據記錄
自動化測試:需要在程序中將腳本的執行順序顯示的用代碼表示出來,並且清晰的告訴計算機如何判斷結果的正確與否,測試用例之間的依賴關系很難在腳本中清晰的表達出來,運行腳本的人員並不知道用例之間的依賴性。
3、測試環境
我們知道,在測試之前對於測試環境的搭建是很重要的,保證測試環境的正確性、快速的搭建出測試環境,有利於之后測試的順利進行。一般對於同一個需要測試的軟件,系統的環境要求是一樣的,要是在不同的機子上測試,每次都需要重新搭建一個環境,這樣既耗時又耗費力氣,如果能將環境的配置信息編寫成腳本,每次只需要運行腳本就可以將環境搭建好,那么節省大量的人力物力。
4、不是所有都是自動化
軟件產品開發的特點就是緊急,時間緊,如何在短時間內實現自動化,是否需要自動化都是需要考慮的。如果產品周期短,腳本的開發執行成本遠遠大於手工執行腳本,在根據之后對於該腳本的執行次數來看,就可以簡單的判斷是否可以自動化。自動化測試雖然好,但不能一味的將所有的都自動化,自動化投入的時間成本會比較高。自動化框架和腳本的開發是一個投入量很大的項目,而一個可讀性不高,健壯性不強的腳本,往往會讓測試人員耗費大量的精力去維護,其結果往往得不償失。所以在腳本開發時要特別注意腳本的了可讀性、獨立運行性和可重復性,降低后續的維護成本。
對於自動化測試工具:
1、界面自動化測試工具,我們往往入門的時候都是用的商業或者開源的工具,例如:QTP、RFT之類,這些都是界面級別的自動化測試,界面自動化測試的有一定開發難度,但是確有不少的開源庫可以提供,完全可以基於以上庫開發,或者有一些開源的工具很成熟了,你所做的就是基於以上進行一下更改。例如:測試java界面的工具就有aboot、swbot、mathron等開源工具,測試web界面的有selenium、watin等,測試移動端的有robotium、monkey等。要能二次開發這些工具,主要是需要理解抓取對象和回放的原理,然后是一些配置文件的處理,對象庫里主要是XML的處理,一般錄制功能我覺得可以忽略。
2、白盒測試工具,一些代碼級別的測試工具,例如:對代碼覆蓋率的分析、對代碼質量的分析等,這方面涉及較淺,就不隨便造次了。
3、接口自動化測試工具,接口自動化測試工具在開發的時候,首先需要明確業務接口類型,然后掌握一定的接口工具的應用方式,一般的接口工具都是會解析某種接口定義文件,然后將接口文件以界面的形式展現出來,可以通過對界面接口的操作:對某個接口填寫參數,然后發送到服務器端,查看響應,或者直接get接口返回值。例如:SoapUI工具是針對WebService系統的測試,主要是解析WSDL接口定義文件。Jmeter和LR也可以做接口測試工具,例如:java接口和HTTP接口等。之前,開發過的接口工具包括:SNMP接口和corba接口工具,其原理也是解析mib和IOR接口定義文件,然后可以對接口進行set與get操作。所以,開發這類的工具,一定要明確什么是軟件接口、然后接口描述文件是什么,最后是如何去對接口進行操作,日志和結果的展現等,還有一些就是額外的功能了,例如:錄制,將測試人員對接口的操作錄制下來,成為工作流等。
4、性能自動化測試工具,看到性能測試工具,大家很容易想到LR、Jmeter之類,這方面的工具,我用的較少,但是會基於自己公司內部的產品一些特殊性能場景方面的測試,會專門開發一些這樣的工具,例如:開發一個發送SNMP網絡報文的工具,模擬告警最大接收和並發性能,開發一個網元模擬器,能夠模擬大量不同IP的網元,可以在公司網元管理器上測試同時管理的最大網元等。所以,性能測試首先要與業務場景相結合,然后掌握一定的性能基礎和指標,分析好相關的接口協議和需要模擬的業務,就可以快速開發相應的工具了。
5、系統應用級別的自動化測試工具,這種工具需要明確應用場景,即明確需求,例如:我之前開發一些部門內部工具集合,專門提供給測試人員進行腳本錄制()、公司級別的有采集和巡檢工具。(對外支持),這部分工具帶來的效益是很大的。所以說,千萬不要將自動化測試局限在測試方面,其實提高測試與開發的人員的效率、以及對公司產品的質量保障方面的工具都是能給公司帶來直接效益的。也許幾行代碼也是一個能提升效率的好的工具。
測試工具雖好但不能迷戀,不能期望測試工具可以取代手工測試。測試工具在測試工作中起的是輔助作用,一般用來提高測試效率。自動化測試彌補了手工測試的不足,減輕一定的工作量。實際上測試工具是無法替代大多數手工測試的,而一些諸如性能測試等自動化測試也是手工所不能完成的。
對於自動測試技術,應當依據軟件的不同情況來分別對待,一般自動技術會應用在引起大量重復性工作的地方、系統的壓力點、以及任何適合使用程序解決大批量輸入數據的地方。然后再尋找合適的自動測試工具,或者自己開發測試程序。一定不要為了使用測試工具而使用。
我個人認為自動化測試,就是用技術和自動化去服務測試,保證質量,提高產品生產率(不是測試生產力)。無論如何這個行業需求是關鍵,脫離需求和具體環境,一切都是玩笑。