類似于軟件工作產(chǎn)品,測試過程中的每個階段都有可能會輸出測試文檔,即測試工作產(chǎn)品。ISTQB基礎級大綱中是以ISO 29119 - 3(ISTQB基礎級2011版本參考的是IEEE 829 - 1998標準)作為測試工作產(chǎn)品的指南,其提供了結構化的測試文檔架構,同時描述了測試文檔與測試階段之間的關系。其包含的主要文檔包括:測試計劃、測試設計說明、測試用例說明、測試規(guī)程說明、缺陷報告、測試總結報告等。詳細內容可參考標準:ISO 29119 - 3。
但是,測試實踐中感覺測試文檔并沒有發(fā)揮其應有的作用,經(jīng)常發(fā)現(xiàn)的問題包括:
1)成本高:測試人員需要花費大量的時間編寫測試文檔,例如,按照公司模板填充內容;
2)效果差:測試文檔填充了很多原始材料,但實際情況往往是寫文檔的人不看,需要看文檔的人看不懂;
3)常變更:特別是在輕量級的開發(fā)過程中,變更是常發(fā)生的事情,導致變更的工作量巨大;
因此,純粹照搬使用IEEE - 829標準或ISO 29199 -3標準,很難達到測試文檔的使用目標,也不是這些標準的初衷。為了提高測試文檔的效率和有效性,測試人員在編寫時需要考慮下面的2個因素:
1、合理裁剪文檔標準
編寫測試文檔時,通常我們不會完全按照模板進行,而是考慮實際的測試周境進行裁剪。例如:
1)測試目標:測試人員測試該產(chǎn)品或者系統(tǒng)的目標是什么。假如測試文檔不能支持這個目標,或者無助于達到這個目標,那么這樣的測試文檔(與所創(chuàng)建的所有其他軟件工作產(chǎn)品一樣)價值就會降低很多;
2)測試文檔是產(chǎn)品還是工具:假如測試文檔是軟件系統(tǒng)或者產(chǎn)品的一部分,即測試文檔需要發(fā)布給客戶,這時候測試文檔就需要按照客戶的要求遵循某種標準。假如測試文檔只是內部使用的工具,那么就不必太完整、太整齊,能夠在最低限度上有助于達到目標即可;
3)采用的開發(fā)模型:假如目前采用的軟件開發(fā)模型是V模型之類的重量級模型,那么采用的測試過程通常是依賴于預先定義的測試,這時候需要詳細的測試用例的操作和維護文檔。假如采用的是敏捷開發(fā)等時間周期短的輕量級開發(fā)模型,相應的測試也需要調整,可能會更多的偏向探索性測試,而非完整詳細的腳本化測試,此時則更需要策略方面的文檔,例如:關于某個測試領域的想法,但不是具體的測試用例;
4)軟件工作產(chǎn)品是否常變更:如果軟件設計變更很頻繁,則不要將許多細節(jié)寫入測試文檔中,因為這些細節(jié)很快就會過時。這種情況下,不要編寫大量的測試文檔,它們被修改或者放棄的速度太快,不值得在測試文檔上投入太多;
5)給誰看:假如測試文檔是主要給新的測試人員或者沒有經(jīng)驗的測試人員看,那么需要足夠詳細使得他們能夠正常開展工作。
測試人員在裁剪測試文檔時,上面的這些問題可以幫助測試人員思考,寫出他們所需要的東西,以及內容的詳細程度,以達到測試文檔的目標。
2、關注文檔輸出,更關注文檔過程
前文“質量保證QA與質量控制QC”一文中,提到了過程質量會決定軟件工作產(chǎn)品的質量。該理念同樣適用于測試文檔:我們平時講到的文檔,例如測試計劃,通常指的是測試計劃這篇文檔,即Test Plan,是測試計劃Test Planning的輸出。而Test Plan是否有用,更多的是取決于你的Test Planning的過程,而不是文檔本身。也就是說,我們在談測試文檔是否有用的時候,應該更多得關注在得到文檔的具體過程,也就是文檔的內容你是如何得來的。延伸一下:編寫測試文檔的過程本身,比測試文檔的輸出更重要。
還是以測試計劃Test Plan為例,了解該文檔有哪些內容組成可以是很快的,你可以參考標準,也可以借鑒組織提供的模板。但是,你看到的測試計劃文檔,只是我們測試知識體系應用的冰山一角,為了支撐這冰上一角,需要冰上下面更多知識的幫助。例如:測試計劃中有工作量數(shù)據(jù),文檔中定義是20人周PW。假如我只是看測試計劃的測試人員,我很容易就知道了工作量的大小。但是,我很可能并不知道這個20人周是如何得來的,其中考慮的測試任務有哪些?需要輸出的工作產(chǎn)品有哪些?測試的范圍,甚至是作者本身針對該工作量估算所做的假設。因為我不知道該數(shù)據(jù)背后得來的過程,那么在實際工作量和計劃工作量之間出現(xiàn)偏差時,我很可能是一臉懵逼。你很難在實際與計劃之間出現(xiàn)偏差時,快速地進行反饋響應和動態(tài)調整。
因此,我們在說測試文檔是否有用時,首先需要考慮你是否基于你的測試周境對測試文檔進行了合理得裁剪;其次,你是否是基于你的測試知識體系(參考文章:構建測試人員的能力體系),關注在測試文檔生成的過程,了解文檔中每部分與測試相關內容是如何得到的。假如做到這2點,你就可以不僅知道測試文檔是什么,更清楚該文檔告訴你應該怎么做,從而實現(xiàn)對測試過程、測試任務、測試執(zhí)行進度等的有效監(jiān)控。