在
測試領域,很多的測試從業人員都在討論或者曾經討論過
自動化測試。支持者認為自動化能夠提高測試效率,減少枯燥繁瑣的用例執行。持反對意見人的當心自動化測試的引入成本太大,反而沒有手工測試來的高效。更有人當心自動化測試無法保證軟件的質量,其實能否保證軟件的質量,不是由自動化測試決定,而是取決于你的用例的設計。對于新的事物,在沒有任何實踐的基礎上不能輕易地下結論,因為每個人都有慣性的思維,有時候很難跳出固有的思維去考慮新的事物。
自動化測試本身作為一種測試的手段不存在任何的問題。它的好與壞,本質是由其最終結果來決定的。如果自動化測試帶來收益大于我們投入的成本,那么自動化測試就是成功的。我們要做的就是在自動化測試實施過程中去提高我們的收益,去降低我們的成本。
何為自動化測試?自動化測試是希望能夠通過自動化測試工具或其他手段,按照測試工程師的預定計劃進行自動的測試。目的是減輕手工測試的勞動量,騰出更多的時間和精力去測試重要模塊,同時又保證已有覆蓋自動化測試的模塊的質量,從而達到提高軟件質量的目的。自動化測試的目的在于發現原有模塊引入的新缺陷,保證已有功能的質量。
自動化測試開展的前提
首先部門或者公司要從管理層次上支持你,其次要有專門的測試團隊去建立適合自動化測試的測試流程、測試體系,排除上面的因數之外我總結了自動化測試一些前提條件。
1. 長期性
指的是被測產品(或功能)是否需要一個長期的維護,因為短期的項目是沒有實現自動化測試的必要的,短期的項目很明顯他的投入成本肯定大于其收益。
2. 穩定性
被測產品(或功能)是否有一個相對穩定的產品。如果功能和界面都處于不穩定階段而且經常發生變化的,那腳本和用例的維護成本是非常高的,
所以也是不具備實施自動化的前提條件。
3. 合適測試工具
(工欲善其事,必先利其器)
假如被測產品(或功能)難以通過工具識別其控件的話
假如使用腳本語言難懂難學,而且擴展性差。
4. 人員
你的產品組內是否具備合適人員去開展自動化,是否具備一定合適的人去做自動化腳本開發。自動化測試實施的好與壞,很大程度上取決于該測試工程師,因為要有效實施自動化測試,單一的測試工具的熟練是遠遠不夠的,他需要其它一些輔助的測試手段,所以同時也就需要該測試工程師具備一定的方案解決能力,能夠找到較優的方案來解決現實中碰到的問題。
5. 用例
自動化測試需要好的
測試用例的輔助,這個應該是大家的共識,所以不展開來講。所以這里希望我們的自動化測試工程師需要與
用例設計者進行密切的合作。
整體來說自動化測試能否有效開展,能否有效的實施,不是單一取決于某一個人或者某自動化測試工程師的能力,他是整個團隊合作的結果。
自動化測試成本
這是領導們最關心的問題。因為他們都希望自動化測試帶來的收益要遠大于所投入的成本。不然怎么體現自動化測試價值?如果沒有價值還不如直接手工測試來的干脆。
那么自動化成本有哪些?
1、調研成本
2、腳本開發維護成本
3、自動化用例設計與維護成本
4、資源投入成本
如何有效的降低自動化測試成本呢?
一、 提高調研成本,減少人為因數成本
調研成本省不了,而且要加大投入,如果投入成本不大,選擇的工具和框架都不適合自動化的開展,那么自動化測試肯定以失敗告終。一旦給自動化測試選好了型,后期的轉化成本非常的高,所以一開始就要選擇合適的工具和框架。
當然為了盡量減少調研成本,需要選擇合適人,需要整個團隊的配合。
二、 選擇好的測試工具
選擇好的測試工具,首先要看其所使用的語言是否容易普及,是否功能強大,在自動化測試工具當中,我認為最重要的是GUI對象的識別能力,第三方接口的處理能力。
三、 構建合適的測試框架
有了好的測試工具之后,我們需要一個合適的測試框架,測試框架應該是一個企業級的應用,而不是單一的產品和功能。它至少可以減少重復代碼編寫,包含常用的操作,簡單的配置或自動配置,運行結果自動收集,運行結果簡潔且容易分析。
四、 選擇合適的人,減少研究,實施投入成本
這里我主要講是選擇合適的人,做正確的事上。那么什么樣的人適合做自動化測試呢,首先的一點肯定要有一定的代碼編寫能力。其次我覺得需要一定軟件工程的思想。沒有好的思想,是很難組織起清晰架構的代碼來的。
合適人,做正確的事。這里就充分體現管理者能力了,尤其是測試框架上的研究,往往不是靠單一的人所能夠做到,因為會受到知識體系,思維,能力等相關的束縛。所以我的意見是這些應該是交給一個組織,該組織內集合測試負責人,測試工程師,自動化測試工程師,來依靠團隊的力量來打造合適的測試框架。當然框架的實現上應該交給自動化測試工程師。
那么什么樣的人才是合適的呢
1、需要有一定的手工測試經驗和自動化測試經驗,能知道測試框架為誰而做,需要做什么?
2、能夠將復雜的設計簡單化,能夠充分理解軟件工程的思想,將最簡單的應用提供給測試工程師
五、 減少用例的設計維護成本
如果有好的框架支撐的話,那么用例的設計維護成本完全是可以減少的。
六、 保持腳本整體架構清晰易懂,易維護
七、 合適的加大資源投入成本
我覺得資源投入成本是值得的,資源投入如果能夠減少人力的投入的話。我想是所有管理者都愿意看到的。
自動化測試收益
在如何評價自動化測試收益方面,每個人的角度不通過,得出結果可能也不相同。我想從以下幾個方面來看自動化收益:
1、快速測試
測試人員手工測試多個功能,測試執行的并行度總有個上限。而多個并行執行的自動化測試腳本可以更快速地驗證版本,一次性地報告問題
2、降低手工測試投入成本
將功能測試人員從繁瑣重復的測試中解脫出來,有更多的時間和精力去進行一些探索性的測試。
3、提供了軟件的質量
自動化測試能夠幫助我們減少生產環境中某種特定類型的缺陷。這些缺陷包括環境或者配置相關的缺陷、在主流程上本來正常但因為后期修改影響到的功能、以及容易被忽略的地方等
4、提高了我們對軟件質量的信心
5、自動化測試可以喚起更高的工作熱情
這一方面來自于可以部分地將測試人員從大量重復的測試執行中解放出來,另一方面來自于新技術、新工具帶來的新鮮感
如何有效地提高自動化測試收益?
要有效的開展自動化,一定程度上來說,成本是很難降低的,只有將收益最大化。增加收益的方式有很多種:
一、提高自動化測試迭代次數,提高自動化的使用頻率
要提高自動化的使用頻率,就需要將原有觀念自動化測試收益往往來源于回歸階段進行更正,實際證明自動化同樣可以在日常測試中發揮作用。自動化的使用用例的重復性使用頻率越高,其價值也就越大,其收益也會越大。
二、腳本復用,提高腳本對應功能點的用例覆蓋率
提高該腳本所覆蓋功能點的用例覆蓋,也就是我們不但要考慮減少了自動化腳本開發成本以及降低維護成本,同時也要考慮該腳本帶來的收益已盡量去最大化。
三、提高自動化用例的覆蓋率,最大程度上減少手工重復的勞動
盡可能的提高用例的覆蓋率,并通過自動化來代替我們的手工測試,這樣不但能在保證軟件質量的同時減少手工重復的勞動,
四、建立并維護好測試用例庫,幫助我們節省資源并快速培養測試人員
五、推廣成功案例到其它產品