測試向開發(fā)行進,論自動化測試

我們遵循敏捷開發(fā)模式,八月以來,嘗試調(diào)整測試的重心和方法,目標是做到敏捷測試,測試要向開發(fā)行進!

開發(fā)和測試

  • 測試和開發(fā)具有同等重要的作用
    從一開始,測試和開發(fā)就是相向而行的。測試是開發(fā)團隊的一支獨立的、重要的支柱力量。
  • 測試要具備獨立性
    獨立分析業(yè)務(wù)需求,獨立配置測試環(huán)境,獨立編寫測試腳本,獨立開發(fā)測試工具。沒有獨立性,就沒有一切。
  • 測試要有編程能力
    測試獨立性必然要求測試要有編程知識,要懂代碼(能看代碼,會寫代碼),代碼是開發(fā)團隊的溝通利器!
    能看代碼,就可以直接看開發(fā)人員寫的代碼邏輯,有點 Code Review 的意思了;
    會寫代碼,測試自動化就不是問題。

持續(xù)交付是我們的方向

  • 自動化測試
  • 持續(xù)集成
  • 自動化部署

自動化測試金字塔

Test Automation Pyramid(測試自動化金字塔).png
  • UI Tests
    也稱 GUI 測試,我們暫時不涉獵這部分的自動化測試。
  • API Tests
    這是重點。我們當下提供的都是 HTTP API,相對穩(wěn)定,適合自動化測試。
  • UNIT Tests
    在 iOS 團隊有實踐基礎(chǔ),隨著測試自動化進展,后端會自然接入進來。

據(jù) Google軟件測試之道 介紹,谷歌的經(jīng)驗比例是70/20/10,即:70% 的 Small Tests,20% 的 Medium Tests,10% 的 Large Tests(對應(yīng)UNIT / INTEGRATION / SYSTEM | End-to-End)。

自動化測試

  • 如同業(yè)務(wù)功能測試是測試的基本能力一樣,自動化測試也正在成為測試的基本能力。
  • 在深刻理解需求的基礎(chǔ)上,自動化腳本測例要能體現(xiàn)如同文本測試用例的基本編制要求:“精煉表達、主次分明、漸進可用”;

測試分類

  • 前端 App 功能以手工測試為主;
  • 前端 App 性能以工具測試為主;
  • 后端接口擬全部實現(xiàn)自動化測試;
  • 后端性能暫時通過靜態(tài)分析在設(shè)計時予以考慮。

App 功能以手工測試為主

App 功能測試以手工為基礎(chǔ),可以繼續(xù)實施以測試用例為核心的策略。
前端重在交互和展現(xiàn),所以功能邏輯和 UI 測試必不可少。

App 性能以工具測試為主

對于App,則要使用工具進行性能測試,性能在用戶體驗中是蠻重要的,而性能的改善需要開發(fā)長期的努力。
要不斷發(fā)現(xiàn)、開發(fā)和學(xué)習(xí)使用各類工具,以幫助我們更有效率地完成任務(wù)。開發(fā)工具時鼓勵使用 PHP 和 Python來實現(xiàn)。

服務(wù)端接口自動化測試

對于服務(wù)端提供的 HTTP 接口,建議使用 PHPUnit 技術(shù)實現(xiàn)自動化測試。

  • 測試用例
    接口測試用例的設(shè)計思路直接體現(xiàn)在測試類和方法前的描述即可,不再需要在禪道上體現(xiàn)。
  • PHP 測試腳本
    測試人員要學(xué)習(xí) PHP 腳本語言,進行測試開發(fā)編程,逐步提高編程水平,在人員招聘上也要有意識地搜尋測試開發(fā)人才。
  • 測試類和方法的設(shè)計開發(fā)是逐步精化的
    每個方法實現(xiàn)一個測試用例,每個方法都可以隨著開發(fā)代碼的完善而逐步完善,和開發(fā)相向而行,要體現(xiàn)盡早測試理念。
  • 測試套件(test suite)的編寫要滿足不同測試類型的需要
    要能體現(xiàn):smoke testing、sanity testing、regression testing等等。
  • 鼓勵就 PHPUnit 和開發(fā)人員進行深度溝通、互相學(xué)習(xí)
    PHPUnit 不僅僅可以用來進行接口測試,其本意是基于代碼的單元測試。開發(fā)人員應(yīng)當使用 PHPUnit 對重要的類和組件進行充分測試,切實提升擬交付測試的API接口的質(zhì)量。

自動化測試的ROI

敏捷開發(fā)條件下,迭代模式使得代碼量逐步累加,越靠后的迭代我們所面臨的整合測試壓力、測試任務(wù)就越大。
敏捷測試需要測試人員能夠隨時啟動自動化的回歸測試對馬上發(fā)布的迭代代碼進行快速驗證。

持續(xù)集成

一旦實現(xiàn)服務(wù)端接口自動化測試腳本,則可以逐步實現(xiàn)持續(xù)集成。svn上服務(wù)端代碼的任何變化,都可以自動啟動接口自動化測試,對于任何錯誤都即時通知開發(fā)人員。如果測試通過,則自動和 App 進行集成測試。

自動化部署

有了自動化測試和持續(xù)集成這兩個作為前提,經(jīng)過自動化部署,就可以達到持續(xù)交付。本文不展開討論此話題。

盡早測試理念

什么時候是合適的測試時機?答案是:盡早測試。擴展開來就是:

  • 盡早測試 Test early
    盡早測試,盡早集成,逐步集成,Small Tests 做的越多越主動。
  • 經(jīng)常測試 Test often
    這時候,自動化測試的成本效益優(yōu)勢就體現(xiàn)出來了。
  • 充分測試 Test enough

從產(chǎn)品構(gòu)想開始,一直到線上運營、用戶反饋,隨時都是測試的好時機。只不過,不同的階段,測試內(nèi)容有所不同。

測試開發(fā)人員的基本要求

1、有理念:理解測試開發(fā),會反向思維、探索測試
2、懂業(yè)務(wù):了解用戶,會澄清需求
3、懂代碼:能看代碼,會寫代碼
4、用工具:善用工具,會開發(fā)工具;
5、講策略:手工和自動測試并用,講求成本效益(手工測試是基礎(chǔ),自動化測試支持持續(xù)集成和持續(xù)交付)

注:微軟的實踐經(jīng)驗也深刻影響了業(yè)界對于測試的理解和探索。

** Sanity Test **

A sanity test is intended to provide quick assurance that a system change hasn't broken any key functionality. You normally do a sanity test only in situations where you have to fix something quickly and you can't afford substantial down time to do a full regression test - in which case you would typically deploy directly into production upon successful completion of the sanity test.

End to End Testing

End to End Testing

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評論 19 139
  • 轉(zhuǎn):http://www.itdecent.cn/p/d5fca0185e83 Xcode測試 前言 總算在今天把...
    測試小螞蟻閱讀 3,358評論 0 20
  • 1.測試與軟件模型 軟件開發(fā)生命周期模型指的是軟件開發(fā)全過程、活動和任務(wù)的結(jié)構(gòu)性框架。軟件項目的開發(fā)包括:需求、設(shè)...
    宇文臭臭閱讀 6,861評論 5 101
  • <<互聯(lián)網(wǎng)敏捷DevOps和自動化之5.持續(xù)集成>>持續(xù)集成的價值是什么?對于開發(fā)和測試人員又意味著什么呢?1.1...
    燕京博士閱讀 2,893評論 0 5
  • 非常認可這句話:自動化測試是為了提高效率,測試腳本要易維護,不能讓測試腳本變成另一種技術(shù)債務(wù),不能為了自動化測試而...
    Kewings閱讀 8,237評論 0 10

友情鏈接更多精彩內(nèi)容