吳世競
(中興通訊股份有限公司,天津 300000)
敏捷開發(fā)強調(diào)的主要是迭代、循序漸進的開發(fā)方式,其核心是測試驅(qū)動開發(fā),整個開發(fā)過程靈活可變。敏捷開發(fā)可以快速的將項目推入實質(zhì)開發(fā)階段,開發(fā)、測試人員直接與客戶溝通,需求確定快速準(zhǔn)確,能很快的給出一個用戶可見的V1.0產(chǎn)品,根據(jù)用戶需求快速修改軟件問題,縮短軟件發(fā)布周期。同時測試和用戶介入早,產(chǎn)品的不合理及問題能盡早暴露,方便及時修改,甚至能及時更正產(chǎn)品需求。但是敏捷開發(fā)注重人員溝通,文檔留存相對較少,可是大型軟件的開發(fā)往往項目時間長、人員流動大,那么傳統(tǒng)的敏捷開發(fā)將不再適用。
大型軟件開發(fā)特點:功能模塊多、開發(fā)交付周期長、性能及穩(wěn)定性要求高。項目時間長不可避免的會出現(xiàn)人員流失,如果完全按照簡單的敏捷開發(fā)測試的方式進行就有可能會因為文檔不全面出現(xiàn)交接時間長、交接不清楚的問題。功能模塊多就對各模塊之間的交互測試要求較高,需要進行大量的探索性測試,這樣依靠自動化測試就不能滿足要求了,必須進行一定程度的系統(tǒng)性的探索測試。
大型軟件敏捷開發(fā)的核心就是要把一個長時間、多功能的項目分為多個可以短時間完成且可以獨立執(zhí)行的小故事,并保證整體軟件一直良好運行。敏捷的重點一般體現(xiàn)在需求確定階段、各子功能各自的開發(fā)階段、交付測試階段。
大型軟件項目各個階段的目標(biāo)不同,敏捷測試的策略及方法的選擇側(cè)重也不盡相同。
(1)需求分析及產(chǎn)品設(shè)計階段
測試人員,包括系統(tǒng)測試經(jīng)理、各主要功能模塊測試負責(zé)人,盡早參與需求分析及產(chǎn)品設(shè)計,了解需求來源,直接接觸客戶,深入了解客戶需求。
大型軟件開發(fā)必須需求文檔,需求文檔要經(jīng)過測試人員測試,提出需求缺陷并跟蹤修改,這樣可大大減少開發(fā)完成后的各測試階段發(fā)現(xiàn)需求不合理導(dǎo)致的需求修改。保證可以根據(jù)需求文檔得出明確可執(zhí)行的需求驗收準(zhǔn)則,尤其系統(tǒng)級別,如軟件的性能、穩(wěn)定性、可移植性等非功能性的要求,并為此輸出項目組、用戶認可的系統(tǒng)測試文檔。
(2)功能模塊劃分階段
各功能模塊測試負責(zé)人參與,項目組組織,遵循高內(nèi)聚、低耦合的準(zhǔn)則劃分功能模塊,并保證各功能模塊的可測試性。功能模塊劃分的好壞直接決定著功能模塊能否敏捷開發(fā)。之后測試人員根據(jù)需求文檔及功能說明,形成詳細的測試通過準(zhǔn)則(AC)及測試用例(TC),甚至用詳盡的TC 代替AC,減少工作量。
(3)功能模塊開發(fā)及交付階段
敏捷測試中需求驅(qū)動開發(fā)、測試驅(qū)動開發(fā)的典型應(yīng)用階段。自動化測試代碼先行、迭代開發(fā)等敏捷測試策略及方法均能在此過程中完美適用。
開發(fā)人員實現(xiàn)功能代碼之前先實現(xiàn)測試代碼,測試代碼須覆蓋功能代碼的每個分支流程,實現(xiàn)自動化的白盒測試。測試人員根據(jù)功能TC,在開發(fā)功能完成之前先完成黑盒(功能)自動化用例的編寫。每個迭代開發(fā)完成后都經(jīng)過白盒+黑盒自動化測試,之后再由測試人員執(zhí)行手動測試,跟蹤故障并根據(jù)故障更新TC及黑盒自動化測試用例。如此測試、開發(fā)迭代進行,直至功能完全交付。此階段,開發(fā)人員自測或者測試人員結(jié)對開發(fā),一定要注意工作角色的轉(zhuǎn)變,開發(fā)人員白盒測代碼一定不能代替黑盒測試代碼。測試人員尤其是同時承擔(dān)測試工作的開發(fā)人員一定要秉承專業(yè)的測試素養(yǎng),依據(jù)AC、遵從TC 進行測試,避免受到開發(fā)思維的干擾。
(4)集成測試階段
分支模式開發(fā),采用自動化冒煙的方式,為每個新合入到主干的功能做第一道防護,保證不影響主干分支已有功能,否則直接回退。在新合入功能之后,選擇典型測試場景實現(xiàn)自動化用例,增加至原有的冒煙用例中。如此循環(huán)迭代,快速有效的完成集成測試。
(5)系統(tǒng)測試階段
敏捷測試中,系統(tǒng)測試階段完全可以精簡測試計劃,主要針對系統(tǒng)的穩(wěn)定性、可移植性、抗壓性等進行測試,并且完全可以采用自動化的方法。當(dāng)然,大型軟件的系統(tǒng)測試單純依靠敏捷測試手法并不能完全滿足要求,必要的探索性測試、多場景的交叉測試、異常測試都是不可或缺的。
(6)發(fā)布測試階段
對于多用戶軟件而言,發(fā)布測試要重點考慮真實用戶,可以做出試用版本,邀請部分用戶試用并提出建議。
敏捷測試要求測試人員具備分析、測試及代碼編寫能力,這也是敏捷測試不同與傳統(tǒng)測試的一個重點要求,要求測試人員根據(jù)需求不斷調(diào)整測試重點及方法??傮w而言,大型軟件的敏捷測試就是要求一群高素質(zhì)測試人員,依據(jù)大型軟件的特點,在軟件開發(fā)測試的各個階段盡可能合理的精簡文檔,盡量多的采用TDD、早介入、自動化等敏捷測試手段,指導(dǎo)軟件開發(fā)、完成測試任務(wù)。