之前說了太多的測試技術(shù)和測試用例設(shè)計(jì)方法,猛地發(fā)現(xiàn)有點(diǎn)“偏科“了。今天我們放松一些,泡一杯茶,一起來聊一聊測試策略吧。
![]()
當(dāng)然,文章脈絡(luò)肯定是咱們老三樣:什么是測試策略,為什么要制定測試策略,怎么制定測試策略。
什么是測試策略?
在中文的解釋里,策略也可以叫做計(jì)劃、謀略,是可以實(shí)現(xiàn)目標(biāo)的方案集合:
首先,有一個(gè)確定指向的目標(biāo);
其次,是一個(gè)方案的集合;
再次,是靈活可可變動(dòng)的。
所以,我們所說的測試策略,簡單來說,可以歸納為:測什么、怎么測。
“測什么“是目標(biāo),“怎么測”是方法。那么,我們?yōu)槭裁匆贫y試策略呢?
為什么要制定測試策略?
首先,制定測試策略能夠幫助測試團(tuán)隊(duì)更清楚測試目標(biāo),從而更好地判斷測試結(jié)果、產(chǎn)品質(zhì)量是否達(dá)標(biāo),判定產(chǎn)品是否可以發(fā)布。
其次,對于測試管理來說,制定測試策略能夠幫助測試管理人員更好地實(shí)現(xiàn)風(fēng)險(xiǎn)管理。
清楚測試目標(biāo)和測試方法,能夠讓測試管理人員更好地實(shí)施基于風(fēng)險(xiǎn)的測試。并且測試策略可以與開發(fā)/測試過程進(jìn)行融合,更好地在子階段選動(dòng)態(tài)選用測試策略。
不僅如此,還能幫助測試人員更深入地理解測試技術(shù)/手段/工具地差異性,在測試過程中選用更好地測試方法。
總的來說,測試策略是可變的,根據(jù)不同場景地變化,具有明確或具體的測試目標(biāo)。測試策略是為了效益最大化,在有限的條件下選擇最適合的測試方法。
怎么制定測試策略
測試策略需要考慮哪些因素
項(xiàng)目環(huán)境
代表了一組上下文因素,包括項(xiàng)目中的資源、約束條件等,主要包括以下內(nèi)容:
任務(wù),你需要為客戶解決的問題。
問問自己:為什么要測試?你知道誰是你的客戶嗎?你的客戶或者其他人對你的測試任務(wù)有什么樣的想法?
信息,關(guān)于測試所需的產(chǎn)品或項(xiàng)目的信息。
問問自己:我們可以咨詢誰來了解這個(gè)項(xiàng)目?有工程文件可用、用戶手冊、基于web的材料、規(guī)格、用戶故事,這個(gè)產(chǎn)品有歷史版本嗎?有哪些遺留的問題?
以及你的測試版本是最新的嗎?你是如何得知新的或變化的信息的?有沒有類似的產(chǎn)品或項(xiàng)目可以讓我們收集到重要的信息?
開發(fā)者關(guān)系,你如何與程序員相處,這取決于你有疑問能不能很快且良好地得到解決。
問問自己:你是否與程序員建立了友好的工作關(guān)系開發(fā)人員對你的測試策略有什么看法?
測試團(tuán)隊(duì),執(zhí)行或支持測試的任何人。
問問自己:你知道誰將參加測試,他們是否擁有所需的知識(shí)和技能?
“測試團(tuán)隊(duì)”中是否有可能提供幫助的人,那些之前測試過類似產(chǎn)品的人可能會(huì)有什么建議,作家、用戶、程序員?是否有特定的測試技術(shù),團(tuán)隊(duì)中有人有特殊的技能或動(dòng)機(jī)去執(zhí)行?
設(shè)備和工具,管理測試所需的硬件、軟件或文檔。
問問自己:是否擁有測試所需的所有物理或虛擬硬件,是否擁有能夠自動(dòng)控制和觀察產(chǎn)品行為的工具,是否擁有創(chuàng)建測試數(shù)據(jù)、設(shè)計(jì)場景或分析和跟蹤測試結(jié)果的工具,是否需要任何文檔來跟蹤或記錄測試的進(jìn)展?
時(shí)間表,項(xiàng)目事件的順序、持續(xù)時(shí)間和同步。
問問自己:
測試設(shè)計(jì):你有多少時(shí)間進(jìn)行測試?
測試執(zhí)行:何時(shí)執(zhí)行測試是否有一些測試是重復(fù)執(zhí)行的,比如,為了回歸目的?
開發(fā):構(gòu)建何時(shí)可以用于測試、添加功能、凍結(jié)代碼等?
測試項(xiàng)目,要測試的產(chǎn)品。
問問自己:
范圍:產(chǎn)品的哪些部分在你的測試職責(zé)范圍內(nèi),哪些部分不在?
可用性:你有要測試的產(chǎn)品嗎,你們有可用的測試平臺(tái)嗎?
波動(dòng)性:產(chǎn)品是否在不斷變化,如何針對這些變化進(jìn)行測試?
新功能:你知道最近有什么添加到產(chǎn)品中的新功能嗎?
交付,測試項(xiàng)目的可觀察產(chǎn)品。
問問自己:
內(nèi)容:你需要做什么樣的報(bào)告?
目的:你的可交付成果是否作為產(chǎn)品的一部分提供,還有其他人幫你做測試嗎?
標(biāo)準(zhǔn):你是否有一個(gè)特定的測試文檔?
產(chǎn)品元素
涉及產(chǎn)品的各個(gè)方面,包括產(chǎn)品固有的方面以及產(chǎn)品與外部事物之間的關(guān)系。主要包括以下內(nèi)容:
結(jié)構(gòu),構(gòu)成實(shí)體產(chǎn)品的所有東西。
例如代碼、硬件、非執(zhí)行文件、附屬品等。
功能,產(chǎn)品所做的一切。
例如應(yīng)用、時(shí)間相關(guān)、安全相關(guān)、啟動(dòng)/關(guān)閉、錯(cuò)誤處理、交互作用等。
數(shù)據(jù),產(chǎn)品加工的所有東西。
例如輸入/輸出、預(yù)置、持久化、相互依賴/相互作用、無效/噪聲、生命周期等。
接口,每一個(gè)產(chǎn)品被訪問或表達(dá)的管道。
例如用戶界面、API/SDK、導(dǎo)入/導(dǎo)出等。
平臺(tái),產(chǎn)品所依賴的所有東西(以及項(xiàng)目之外的東西)。
例如外部硬件、外部軟件、嵌入式組件、產(chǎn)品足跡等。
操作,如何使用產(chǎn)品。
例如用戶、環(huán)境、常見使用、錯(cuò)誤使用、極端使用等。
時(shí)間,產(chǎn)品和時(shí)間之間的關(guān)系。
例如輸入/輸出、快/慢、改變速率、并發(fā)性等。
質(zhì)量標(biāo)準(zhǔn)類別
評(píng)價(jià)產(chǎn)品質(zhì)量的標(biāo)準(zhǔn),例如可靠性、穩(wěn)定性等,它是主觀的、多維的。主要包括以下內(nèi)容:
能力
問問自己:它能執(zhí)行所需的功能嗎,它執(zhí)行的結(jié)果正確嗎?
可靠性
問問自己:它會(huì)在所有需要的情況下都能很好地工作并抵抗失敗嗎?
測試要點(diǎn)如:
健壯性:在合理的條件下,產(chǎn)品可以持續(xù)運(yùn)行一段時(shí)間而不退化。
錯(cuò)誤處理:產(chǎn)品在錯(cuò)誤的情況下能夠抵抗失敗,在失敗的情況下能夠很好地恢復(fù)。
數(shù)據(jù)完整性:保護(hù)系統(tǒng)中的數(shù)據(jù)不丟失或損壞。
安全性:產(chǎn)品不會(huì)出現(xiàn)危害生命或財(cái)產(chǎn)的故障。
可用性
問問自己:一個(gè)真正的用戶使用這個(gè)產(chǎn)品有多容易。
測試要點(diǎn)如:
易學(xué)性:目標(biāo)用戶可以快速掌握產(chǎn)品的操作。
可操作性:產(chǎn)品可進(jìn)行復(fù)合操作。
易訪問性:產(chǎn)品符合相關(guān)的標(biāo)準(zhǔn),并符合O/S易訪問性特性。
外觀性
問問自己:產(chǎn)品有多吸引人?
測試要點(diǎn)如:
美學(xué):產(chǎn)品吸引感官。
獨(dú)特性:產(chǎn)品在某種程度上是新的或特別的。
必要性:產(chǎn)品具有用戶期望的功能。
實(shí)用性:產(chǎn)品解決了重要的問題,而且解決得很好。
入迷:用戶在使用產(chǎn)品時(shí)被吸引住,獲得樂趣,完全沉浸其中。
形象:產(chǎn)品表現(xiàn)出期望的質(zhì)量印象。
安全
問問自己:產(chǎn)品如何防止未經(jīng)授權(quán)的使用或入侵?
測試要點(diǎn)如:
認(rèn)證:系統(tǒng)驗(yàn)證用戶權(quán)限操作正確。
授權(quán):通過認(rèn)證的用戶在不同的權(quán)限級(jí)別上被授予的權(quán)限。
隱私:保護(hù)客戶或員工數(shù)據(jù)不受未授權(quán)人員侵犯的方式。
可伸縮性
問問自己:產(chǎn)品部署的規(guī)模是擴(kuò)大還是縮小?
測試要點(diǎn)如:產(chǎn)品可以擴(kuò)展或收縮部署。
兼容性
問問自己:它與外部組件和配置的配合情況如何?
測試要點(diǎn)如:
應(yīng)用兼容性:該產(chǎn)品與其他軟件產(chǎn)品協(xié)同工作。
操作系統(tǒng)兼容性:產(chǎn)品適用于特定的操作系統(tǒng)。
硬件兼容性:該產(chǎn)品適用于特定的硬件組件和配置。
向后兼容性:產(chǎn)品與自身的早期版本兼容性。
性能
問問自己:它的速度和響應(yīng)速度如何?
可安裝性
問問自己:
系統(tǒng)要求:產(chǎn)品是否識(shí)別出某些必要的組件缺失或不足?
配置:系統(tǒng)哪些部分受安裝影響,文件和資源存儲(chǔ)在哪里?
卸載:當(dāng)產(chǎn)品卸載時(shí),是否干凈地卸載?
測試技術(shù)
決定了測試人員如何、何處以及何時(shí)應(yīng)用特定技術(shù)需要對項(xiàng)目環(huán)境、產(chǎn)品元素和質(zhì)量標(biāo)準(zhǔn)進(jìn)行分析。主要包括以下內(nèi)容:
功能測試,測試它能做什么。
確定產(chǎn)品可以做的事情(功能和子功能),確保每個(gè)子功能都做了它應(yīng)該做的事,而不是它不應(yīng)該做的事。
域測試,分治數(shù)據(jù)。
尋找產(chǎn)品處理過的任何數(shù)據(jù),既要看輸入,也要看輸出;
決定使用哪個(gè)特定的數(shù)據(jù)進(jìn)行測試,考慮邊界值、典型值、方便值、無效值或最佳代表;
考慮值得一起測試的數(shù)據(jù)組合。
壓力測試,壓倒產(chǎn)品。
尋找那些在具有挑戰(zhàn)性的數(shù)據(jù)或受限的資源存在時(shí)容易過載或“崩潰”的子系統(tǒng)和功能;
確定與這些子系統(tǒng)和功能相關(guān)的數(shù)據(jù)和資源;
選擇或生成具有挑戰(zhàn)性的數(shù)據(jù),或資源約束條件來測試。
例如,大型或復(fù)雜的數(shù)據(jù)結(jié)構(gòu),高負(fù)載,長時(shí)間測試運(yùn)行,許多測試用例,低內(nèi)存條件。
流測試,做一件又一件事。
執(zhí)行端到端連接的多個(gè)活動(dòng);
不要在兩次操作之間重置系統(tǒng);
改變時(shí)間和順序,并嘗試并行線程。
場景測試,測試一個(gè)引人入勝的故事。
首先考慮產(chǎn)品周圍發(fā)生的一切;
設(shè)計(jì)測試,包括與產(chǎn)品有意義和復(fù)雜的交互。
需求測試,確認(rèn)每一個(gè)需求。
確定參考材料,包括關(guān)于產(chǎn)品的聲明(默示或明確),考慮規(guī)范、幫助文本、手冊等;
分析個(gè)人需求,澄清模糊的需求;
測試關(guān)于產(chǎn)品的每個(gè)聲明;
如果您正在從一個(gè)明確的規(guī)范進(jìn)行測試,那么期望它和產(chǎn)品保持一致。
用戶測試,讓用戶參與進(jìn)來。
識(shí)別用戶的類別和角色;
確定每一類用戶將做什么(用例),他們將如何做;
獲得真正的用戶數(shù)據(jù),或者讓真正的用戶參與測試;
強(qiáng)大的用戶測試涉及多種用戶和用戶角色,而不僅僅是一個(gè)。
風(fēng)險(xiǎn)測試,想象一個(gè)問題,然后找到它。
想象產(chǎn)品會(huì)有哪些問題,哪一種最重要?關(guān)注這些,列出一些有趣的問題,并專門設(shè)計(jì)測試來揭示它們。咨詢專家、設(shè)計(jì)文檔、過去的錯(cuò)誤報(bào)告或應(yīng)用風(fēng)險(xiǎn)啟發(fā)式可能會(huì)有所幫助。
自動(dòng)化測試,編寫一個(gè)程序來生成并運(yùn)行無數(shù)的檢查。
尋找或開發(fā)可以執(zhí)行許多操作和檢查許多事情的工具;
考慮部分自動(dòng)化測試覆蓋率的工具;
考慮部分自動(dòng)化oracle的工具;
考慮自動(dòng)變更檢測器;
考慮自動(dòng)測試數(shù)據(jù)生成器。
如何將測試策略實(shí)體化
測試策略轉(zhuǎn)化為測試活動(dòng),通過測試策略確定的測試活動(dòng),并拆解為一個(gè)個(gè)測試任務(wù)嵌入測試計(jì)劃,才能將測試策略有效實(shí)體化。
例如,測試策略S確定了測試活動(dòng)A1、A2,A1和A2拆解出測試任務(wù)T11、T12、T13,和T21、T22。為測試任務(wù)分配測試責(zé)任人和測試工期,最終成為一個(gè)完成的測試計(jì)劃。
![]()
表1測試策略實(shí)體化,最終形成基礎(chǔ)測試計(jì)劃
由上所述,本文簡單講述了測試策略的含義、意義以及制定測試策略需要考慮的元素和測試策略的實(shí)體化。
希望能幫助大家對測試策略有個(gè)更全面和清晰的認(rèn)識(shí)。
最后:在我的V:atstudy-js,可以免費(fèi)領(lǐng)取一份10G軟件測試工程師面試寶典文檔資料。以及相對應(yīng)的視頻學(xué)習(xí)教程免費(fèi)分享!其中包括了有基礎(chǔ)知識(shí)、Linux必備、Shell、互聯(lián)網(wǎng)程序原理、Mysql數(shù)據(jù)庫、抓包工具專題、接口測試工具、測試進(jìn)階-Python編程、Web自動(dòng)化測試、APP自動(dòng)化測試、接口自動(dòng)化測試、測試高級(jí)持續(xù)集成、測試架構(gòu)開發(fā)測試框架、性能測試、安全測試等。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.