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