一、前言
自動化測試是測試領域中一個爭議性比較大的區域,雖然它并不是一個新生的事物,但是至今仍沒有一套比較完善的理論可以提供行之有效的方法,使之更好的為產品質量服務。各個研究機構和公司的專家提供了許多自動化測試的理論和模型,但是均沒有形成通用理論,被大眾廣泛認可。
作者通過對安全產品進行自動化測試,從需求定義開始進行跟蹤,涉及產品的設計與實現,對產品的接口、實現功能等進行自動化集成測試,采用測試代碼和測試角本相結合的開發方式。作者總結了在工程中遇到的問題和實施中的成功之處,提出改進意見,對自動化測試人員具有較強的工程參考意義。
二、自動化測試簡介
所謂自動化測試,就是充分利用測試理論和相關的工具,對產品進行自動化的測試,減輕甚至擺脫某些人工測試的繁重勞動,能夠形成統一的測試報告并發布。
自動化測試涉及面很廣,可以涉及單元測試、集成測試、系統測試、壓力測試等諸多方面,針對不同的測試有不同的處理方法和工具。
經過實踐,業界對自動化測試形成了一定的統一觀點:
自動化測試不能代替手工測試;
自動化測試進行的是常規測試和回歸測試,測試集覆蓋率和BUG發現率均不高(這兩組數據沒有定論,根據測試系統的不同,數據會有所不同,但均低于50%,甚至低于30%)。
三、測試中的“人”
人永遠是軟件開發領域中的重要因素,不同的人掌握著不同的角色。充分調用不同角色的主動性,可以有效的提高自動化測試的效率。
1.領導支持
自動化測試是個系統工程,測試人員要制定合理完善的測試用例,需要得到需求、設計、開發等相關人員的配合。沒有領導的鼎力支持,各方力量配合將會減弱,測試的實現目標將會大打折扣,測試工期也將無法保證。
因此從需求調研之初,就需要得到領導的大力支持,充分估計自動化測試所能達到的目標,制定良好的開發計劃,如有可能,由項目經理直接進行領導,以期達到自動化測試的最優效果。
2.避免測試人員“挪作他用”
在許多公司,自動化測試均不是專職人員,經常是針對產品從研發、測試等部門抽調而來,因此他們原來都負擔過別的工作。在自動化測試工作過程中,盡量不要由于其原工作問題,將自動化測試人員調回,更不能因為自動化測試在前期開發過程中收效甚微,在開發工期有限的情況下,暫時裁減開發人員。由于自動化測試工作量很大,從理解需求、設計用例、用例實現、測試驅動的設計與開發,到用例調試、用例的最終應用要經歷比較長的工期,經常性的人員調動會導致工作情緒的波動和工作進度的滯后。
四、文檔工作
在項目管理中,文檔是軟件工程各階段的產品和依據,自動化測試當然也不能例外。
1.測試文檔要及時
自動化測試與其說是一種任務,更不如說是一個公司知識庫的積累過程,測試代碼絕不是自動化測試的最終目的。
因此在測試開發過程中,要隨時書寫自動化測試的配套文檔,并要根據需求和設計的變化,即時更新。文檔包含自動化測試的設計、實現文檔,測試集測試用例文檔,測試驅動文檔。測試文檔的積累,也是對公司知識庫的積累,減少將來進行同樣開發的成本。
2.開發文檔要完善
自動化測試的根本是文檔,它依靠需求和設計文檔來開發用例,而絕不是根據開發人員實際代碼來進行的。因此在自動化測試開始工作之前,要準備好各種文檔,包括需求、接口設計、數據庫定義等,測試人員只有依據這些文檔,才能制定合理的開發計劃,開發出適合本系統的測試用例。
一定要避免由于工期等原因,產品的需求和設計文檔跟不上,甚至編碼前幾天,需求設計才最終確定,在開發過程中也要避免頻繁的更改需求和設計,其結果經常導致自動化測試人員開發測試用例“無依據”,常常要跟著開發人員跑,而不是跟著文檔跑,期間的溝通要花費了大量的時間與精力。同時已經存在的文檔如果經常發生變化,如果通知不及時,也會導致開發成本的加大。
通過自動化測試,可以達到檢查開發文檔,促使開發流程規范化的作用。
3.自動化測試報告清晰
自動化測試之所以在業界一直得以推崇,就是因為測試的自動化、報告的自動化,倘若缺少一份有效的自動化測試報告,即使有再全面的測試用例,別人也會對工作感覺很茫然,缺乏到工作的全面了解。
測試報告中,除有明確的統計數據(包括測試用例數據、通過率等),還需求提供測試的跟蹤信息、測試用例失敗的原因分析。特別是由斷言失敗導致的失敗原因分析,應具有很好的原因說明,良好的可讀性,對問題有很好的描述與定位,可供自動測試人員、開發人員、設計人員和領導等多方人員閱讀,對測試結果有很好的理解和定位。
自動化測試報告最好要做到妥善保存,利用測試報告可以跟蹤項目進度,把握功能點的完成情況,同時也有利于BUG的回歸查找。
五、方法的改進
在實施過程中,需要掌握不同的處理方法,應對處理各種實際問題,包括人員情緒。
1.溝通方式要完善
確認了自動化測試,就需要把自動化測試工作納入到項目的統一安排之中,把自動化測試人員也做為需求、設計、開發的相關共利者,當發生改變時,要即時通知,以便修改測試用例,避免編碼或設計已發生改變,而自動化測試還不知道,其結果將導致查找原因花費大量時間。
溝通也發生在人際關系的處理上。為充分理解需求與設計,自動化測試人員不可避免的要找設計人員溝通產品設計,有時還可能是頻繁的詢問,遇到設計人員工作重或心情不好,就有可能導致溝通上的困難或不充分。因此溝通需要技巧,測試人員需要耐心與細心,與開發人員保持好的關系,同時要盡量把問題一次溝通清楚,避免溝通不清導致測試用例返工,由此導致工作量的浪費。
對于基于組件的自動化測試,需要開發人員對功能充分的理解,明白自己開發的功能必須依靠什么組件,模塊運行必要的支持組件。開發人員理解不充分,就會浪費測試代碼的調試時間,直接影響最終的部署。
原文轉自:http://www.anti-gravitydesign.com