如何提高自動化測試覆蓋率



     自動化測試一直是測試人員的核心技能,也是測試的重要手段之一。尤其是在今年所謂的互聯網寒冬的行情下,各大企業對測試人員的技術水平要求的很高,而測試人員的技術水平主要集中在三大自動化測試領域,再加測試輔助腳本的編寫,測試工具的開發,測試平台的開發等。而普通的測試人員想快速提升技術,自動化測試必是無可挑剔的選擇。
但是由於業界一直存在着對自動化測試的誤解,嚴重影響了自動化測試的發展,也影響了不少同學學習自動化測試的信心。主要集中在以下幾點:
一,自動化測試是萬能的
      由於對自動化測試的認識不足,或是對使用場景不夠明確,認為只要開展了自動化測試,就能盡可能地發現更多的bug,有的甚至認為只要自動化測試做的好,完全可以替代手工測試。這個是過度地誇大了自動化測試的作用,自動化測試主要的作用是代替人工,做一些兒繁復的工作,如回歸測試,監控等,針對的是核心業務或是成熟的功能。在開展自動化測試之前,要對自動化測試有個清晰的認識,否則后期會對自動化測試失望的。
二,自動化測試無用論
     另一種對自動化測試的錯誤認識就是,自動化測試根本沒有用處。這個認識的來源是,有些同學在公司開展了自動化測試,也連續跑了起來,可是根本發現不了任何bug,每次跑都通過了,所以就認為自動化測試沒有用。其實自動化測試的實施是有先決條件的,針對成熟的業務,覆蓋核心業務。同時,根據需求,自動化測試覆蓋的粒度也不會是非常精細的。自動化測試是用來保障核心業務不出問題,或是第一時間發現問題。所以長時間發現不了bug是正常的。如果你的自動化測試三天兩頭發現Bug,要不是公司業務發展不夠穩定,就是你寫的自動化測試有問題。要對自動化測試有清晰的認識,不能過度誇大其功能,也不必貶低其作用。
三,自動化測試能速成
     由於現在業界對自動化測試要求較高,已經有不少同學開始學習自動化測試。但是卻對自動測試的認識不足,了解了自動化測試框架,能通過一門語言寫一兩個測試用例,就認為自己為自動化測試,相應的找工作的要求啊,薪資待遇提的就相當高。自動化測試是一套完整的測試理論,不是借助於自動化測試框架能寫測試用例就掌握的事情。如果想要學習,還是要踏踏實實的打基礎,掌握一門編碼語言,學習相應的自動化測試框架,再了解自動化測試實施的原理,掌握自動化測試設計架構,以及為將來要做的事情提前規划;一兩個月的學習只是入門,后續還是需要長期的實踐,進行技術的積累和沉淀才行。
在明確自動化測試的誤區后,我們來分析一下作為測試人員應該如何正確對待自動化測試。首先要對自動化測試有個明確的認知,自動化測試是測試人員必備的技能,除非你想在一家公司工作上幾年,然后轉行不做測試,否則你的測試之路必然會受其影響。
一,正確學習自動化測試
      此處不再討論自動化測試是不是應該學習,這是一項必備的能力。既然如此,所以我們還是需要掌握這個能力的,但是又不能盲目。不要認為自動化測試會變成必備的能力,所以就把接口,WebUI, App全面學習,也不管是java,還是python,這樣就會越來越亂。首先要選擇一個語言體系,如java,或是python,掌握好相應語言的基本能力;其次,安排好學習順序,如先學習接口自動化測試,然后是WebUI自動測試,再接着就是App自動化測試。當能進行自動化測試實施的時候,需要提高一下能力,學習自動化測試的架構設計,持續化集成的實施等等,步步為營,穩扎穩打。
二,根據實際工作需求實施自動化測試
      學習要和實際工作相結合才能更好地提升,如果一家公司有自動化測試相關技術建設,是一個很好的發展平台。如果公司沒有這方面的投入,我們需要從零開始做起自動化測試。如何從零開始做自動化測試呢?
1,分析自動化測試的目的,發布前回歸測試或是線上產品監控等;通過分析以往遇到問題,如果采取自動化測試,能避免哪些問題,以數據手段說服領導來推動自動化測試的實施。
2,分析與選擇自動化測試覆蓋的用例范圍。自動化測試要么回歸測試,要么進行線上數據的監控,所以不是所有的測試用例都要轉化成自動化測試。選擇覆蓋核心業務的測試用例,或是根據測試的需求,對功能測試用例先進行預先的處理,如通過最短路徑算法,選擇覆蓋率較高的測試用例,轉化成自動化測試用例,以提高自動化測試用例的覆蓋率。
3,探討自動化測試實施參與人員。自動化測試工程是你單獨實施,還是有團隊成員一起參與實施?如果是個人的話,就選擇自己熟悉的知識體系進行實施,如果是團隊一起參考,就要考慮團隊成員的技術水平,選擇轉化成本最低的技術棧,以保證投入產出比最高。
4,根據參與人員做技術選型。根據確認好的自動化測試的實施人員,做好技術選型,如使用java語系,還是python語系?當然自動化測試框架是固定的,如接口自動化的python+requests, java+HttpClient; WebUI自動化測試就是Webdriver;App自動化測試的Appium等等。
5,設計自動化測試架構。自動化測試不管技術棧如何選擇,在開始寫自動化測試之前,不可能是一個個自動化測試用例的簡單羅列,需要先進行自動化測試架構的設計。選擇PageObject模式,還是數據驅動模式?封裝好公用函數,設計好測試用例的管理,測試數據的管理,測試用例集,日志,測試報告管理等等。
6,編寫與調度自動化測試用例。根據前面選擇的自動化測試用例需要覆蓋的范圍,將相應的測試用例轉化成自動化測試代碼。在編寫自動化測試用例的過程中,不斷完善公用函數的封裝,調度並編寫自動化測試用例。
7,根據自動化測試的目的,設置自動化測試執行策略,實施持續化集成。在編寫完自動化測試用例后,根據需求組織測試用例集,並設置自動化測試用例集的執行策略。借助於jenkins等任務調度工具,實施持續化集成,如開發提測后觸發執行自動化測試,做回歸測試;或是設置定時任務,在相應的測試環境下定時執行自動化測試,監控業務流程。
8,指定后期維持與擴展策略。自動化測試需要不斷地維護才能保證其可用性,如被測對象優化,架構重組,增加新功能等,都需要優化相應的自動化測試用例,才能保證自動化測試的時效性。同時需要對指定相應的人員進行培訓,做定時維護,維護與編寫對應的文檔,做好技術積累和傳承工作。
三,如何提高自動化測試的覆蓋率
     實施自動化測試最重要的就是要保證其可用性,而不少同學寫了不少自動化測試用例,但感覺到其可用性不高。究其原因,不是自動化測試本身的問題,是實施自動化測試的時候沒有考慮周全。
1,不合事宜地引入自動化測試
     在公司業務發展穩定前,或是產品變動頻繁的階段,為了自動化測試而做自動化測試。此時的自動化測試失敗率會非常高,不僅維護成本高,而且沒有達到自動化測試回歸與監控的目的。於是,就會造成放棄自動化測試,或是懷疑自動化測試的作用。在此時,不要急於引入自動化測試,如果確實需要引入自動化測試時,需要把測試粒度設置的粗一點兒,覆蓋核心和變動不大的業務線。
2,沒有統籌進行自動化架構設計
     自動化測試用例不能是簡單的測試用例的集合,如果將一個個單獨的自動化測試用例放在一起,就組成自動化測試工程的話,那后期的管理與執行就會相當復雜。投入產出比與預期相差太遠,這也不是一個正常的自動化測試工程的實施過程。正常情況下,需要先對自動化測試工程進行架構設計,選擇合適的設計模式,對代碼做分層架構設計,自主選擇要執行的測試用例集等。
3,測試用例選擇不合理
     在實施自動化測試用例之前,沒有對測試用例進行合理的選擇,拿着手工測試用例一個個轉化自動化測試用例。如果在此情況下,測試用例肯定覆蓋不全面。所以需要前期對測試用例進行合理的選擇,做智能化處理,如根據業務需求,選擇核心業務的測試用例;或是如前面提到的,通過最短路徑算法,選擇覆蓋率較高的測試用例集合。先從用例選擇的角度來分析用例覆蓋率,而后再轉化成自動化測試用例,從而更好的提高自動化測試用例覆蓋率。
     從事自動化測試的測試開發同學很多,但是相應的級別也不盡相同,從T3到T6都有可能。其實施的自動化測試工程也就各有所長,這也說明自動化測試的技術有很大的提升空間。所以要沉下心來,不斷地提升自己,不要剛剛學習了自動化測試就感覺自己能力很強,或是動不動就說測試發展遇到了瓶頸。不斷的打好測試技術相關的基礎,完善知識體系,提高解決問題的能力,開闊視野才能步步高升。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM