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


     自動化測試一直是測試人員的核心技能,也是測試的重要手段之一。尤爲是在今年所謂的互聯網寒冬的行情下,各大企業對測試人員的技術水平要求的很高,而測試人員的技術水平主要集中在三大自動化測試領域,再加測試輔助腳本的編寫,測試工具的開發,測試平臺的開發等。而普通的測試人員想快速提高技術,自動化測試必是無可挑剔的選擇。
可是因爲業界一直存在着對自動化測試的誤解,嚴重影響了自動化測試的發展,也影響了很多同窗學習自動化測試的信心。主要集中在如下幾點:
一,自動化測試是萬能的
      因爲對自動化測試的認識不足,或是對使用場景不夠明確,認爲只要開展了自動化測試,就能儘量地發現更多的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都有可能。其實施的自動化測試工程也就各有所長,這也說明自動化測試的技術有很大的提高空間。因此要沉下心來,不斷地提高本身,不要剛剛學習了自動化測試就感受本身能力很強,或是動不動就說測試發展遇到了瓶頸。不斷的打好測試技術相關的基礎,完善知識體系,提升解決問題的能力,開闊視野才能步步高昇。java

相關文章
相關標籤/搜索