天天看點

自動化測試常見問題 —— 寫給想要做自動化測試的人

前言

接觸了不少同行,由于他們之前一直做手工測試,現在很迫切希望做自動化測試,其中不乏工作5年以上的人。 本人從事軟體自動化測試已經近5年,從server端到web端,從API到mobile,切身體會到自動化帶來的好處與痛楚,在此分享一下個人體會。

自動化測試常見問題 —— 寫給想要做自動化測試的人

想做自動化,首先得了解一下自動化測試的一些常見問題:

什麼是自動化測試?

  • 自動化測試,顧名思義,自動完成測試工作。通過一些自動化測試工具或自己造輪子實作模拟之前人工點點/寫寫的工作并驗證其結果完成整個測試過程,這樣的測試過程,便是自動化測試。自動化測試,看上去很美,感覺好像是第一次工業革命,它開創了以機器代替手工勞動的時代,實則不然.因為每一個自動化測試的case都是從手工測試做起的,如果沒有手工測試的基礎,是沒法進行自動化測試。

為什麼要進行自動化測試?

為什麼進行自動化測試,答案要從自動測試的收益和人肉測試的成本說起:

  • a. 自動化測試節約成本(根據項目)

    畢竟自動化測試确實解放了一批人力(人力成本才是IT公司最大的成本),可以讓機器沒日沒夜的執行一些重複勞動.

  • b.有些測試項目手工很難實作(手工成本較高)

    比如12306的壓力測試、負載測試,同時找那麼多人去測試不現實可以通過機器去模拟.

  • c.項目品質流程需要

    比如版本管理需要build verify,以保證check in的code不會影響版本庫。類似于smoke test

自動化測試的優缺點?

優點

  • 避免測試人員因重複勞動産生厭倦
  • 提高測試效率
  • 保證每次測試地一緻性和可重複性
  • 更好的利用無人值守時間
  • 進行一些手工無法進行的測試
  • 維護成本相對比較高

缺點

  • 系統開發時間不一定能縮短
  • 沒有手工測試發現缺陷多
  • UI layout issue 不容易發現

什麼樣的項目适合做自動化測試?

有以下幾個特點的項目比較适合自動化測試:

  • 項目變動少
  • 周期長
  • 項目資源足夠(自動化不是一個人完成的,需要一幫人長期維護)

舉例說明:

  • 網際網路項目,一周内要上線,你不上線别人上線人家就不用你的,項目周期短,變動快,你自動化還沒做好,項目說不定就下線了。比如某寶雙12活動相關項目,一周之内就下線了。

    适合做自動化測試的項目,比如某寶用戶端,每個release,大部分功能都不變,并且3-5年内項目不會下線,這個就比較适合自動化.

什麼樣的人适合做自動化測試?

  • 這個問題是寫給想要做自動化測試的人,或許你以為軟體測試的門檻很低,低到任何人都可以做,随便點點就可以了,這個行業太low了,是以你想做自動化測試,提升自己的逼格,我想說手工測試并不low,如果讓一個什麼都不懂,一點業務基礎都沒有的人去做測試,能測出來問題嗎?不要忽略你的業務知識儲備.

    你的業務知識儲備的積累能讓你成為不可替代的行業專家,而做自動化的碼農會因為一個時代的更疊被小鮮肉替代。

扯了這麼多,究竟什麼什麼樣的人能做自動化測試?

我的了解分一下幾點:

  • a. 擁有代碼能力

    掌握一門開發語言,java、Python、ruby、c#

  • b. 熟悉被測系統 比如你是web測試,你就得懂js、css、html、xpath 你是移動端測試,你就得具備Android

    開發基礎和iOS開發基礎,會debug app 你是 C/S測試你就要很熟悉TCP、IP協定

  • c. 掌握一套自動化測試架構(工具)

    比如 selenium/appium

    nunit/testng

    robot framework/cucumber

  • d. 善于學習,達到知其然知其是以然

    IT行業變化太快,每隔一段時間就會出現一些新興的東西,也會出現原來很火的東西逐漸沒落,誰也無法預測。

    曾經諾基亞還是手機霸主,靠塞班一統天下,然而不思進取,落得個賣身求生存.

    曾經qtp很火,曾經selenium也很火,現在appium也很火

    軟體行業從桌面軟體到web端,又從web端遷移到移動端,誰也不知道下一個是什麼。而我們作為軟體行業的從業者,不能因為那些很火的東西不火了而讓自己沒落,一個人最為核

    心的能力就是學習能力,如果你善于學習,你就不必擔心這些變遷,因為你可以毫無壓力的遷移,selenium的原理你掌握了,學習appium簡直小菜一碟,因為appium使用的是

    selenium WebDriver protocol .如果你能做到知其然知其是以然,你也可以造輪子,改造appium,畢竟現在很多功能需要完善。

如果你沒有達到以上的幾點,建議你還是做手工測試吧。

如果你有代碼基礎,想要從事自動化測試怎麼去學習?

很多初學者很糾結,學qtp還是學selenium

我的建議是學selenium,開源的,免費的,你可以下載下傳源碼研究,去了解其原理,再者現在selenium的資料不要太多,随便搜搜一大堆,學起來比較輕松。

不建議學selenium IDE錄制,當然你可以通過錄制一些然後轉換為相應的腳本去學習,等你學好了selenium, 再去學appium你會有一種天然的似曾相識。為什麼不建議學QTP/UFT?因為收費/臃腫/現在做桌面軟體測試的工作已經不太多了。

關于買書,不建議買書,很多書已經過時了,并且品質渣渣,你買了那些書中的code已經不能用了,如果你真的想學,就去官網找example,去相應的社群和群交流,或者直接看API/源碼.

總結:

新人學習自動化測試要:

  • 掌握一門門開發語言
  • 掌握一些基礎的知識
  • 少買書,多看測試架構的document,多去社群交流