我們遵循敏捷開發(fā)模式,八月以來,嘗試調(diào)整測試的重心和方法,目標是做到敏捷測試,測試要向開發(fā)行進!
開發(fā)和測試
- 測試和開發(fā)具有同等重要的作用
從一開始,測試和開發(fā)就是相向而行的。測試是開發(fā)團隊的一支獨立的、重要的支柱力量。 - 測試要具備獨立性
獨立分析業(yè)務(wù)需求,獨立配置測試環(huán)境,獨立編寫測試腳本,獨立開發(fā)測試工具。沒有獨立性,就沒有一切。 - 測試要有編程能力
測試獨立性必然要求測試要有編程知識,要懂代碼(能看代碼,會寫代碼),代碼是開發(fā)團隊的溝通利器!
能看代碼,就可以直接看開發(fā)人員寫的代碼邏輯,有點 Code Review 的意思了;
會寫代碼,測試自動化就不是問題。
持續(xù)交付是我們的方向
- 自動化測試
- 持續(xù)集成
- 自動化部署
自動化測試金字塔

- 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.
