如何編寫一份優質的測試用例?

前言

這篇文章主要是想要寫給測試小伙伴們的,因為我發現還是有很多小伙伴在遇到寫測試用例的時候無從下手,我就想和大家簡單的聊聊,分享一下我的一些見解和經驗。

用例的五個構成元素:

  1. 用例標題
  2. 前置條件
  3. 測試步驟
  4. 期望結果
  5. 后置條件

下面從這五個元素的角度,去剖析如何編寫測試用例

用例標題

用例標題就是測試點名稱。用例標題是用來說明這個用例的測試目的的,好的用例標題是別人看完你這個用例標題后就知道你這個用例是測什么的。但并不是標題越詳細越好。既然是標題,就要言簡意賅,能多簡潔就多簡潔,但簡潔的同時又要能體現你的測試目的。用例的標題最好不要超過30個字,太長會讓人看起來很累也很不專業。一般可以遵循這樣的公式:主體(可省略) + 動詞 + 名詞 + 結果(可省略)(即誰做了什么有什么影響),但很多時候是動詞 + 名詞的形式。要注意:我們寫的每一個案例對應的就是要測試的一個點。其實每個點都是用戶的一種操作行為。

前置條件

用例的前置條件就是在測這個用例之前你要先準備的環境和數據。同時,我們需要將前置條件和測試步驟區分開來,但怎么區分呢,是不是還是比較模糊?我們從用例標題入手,我們的用例標題是動作+名詞嘛,那我們的測試重點是動作,那產生這個動作之前的所需的所有環境和數據都算是前置條件,產生這個動作和這個動作帶來的后果都算是測試步驟。這樣是不是就比較清晰了。 前置條件只是說明測試這個用例需要準備的環境和數據,故前置條件不用像步驟那樣寫得那么詳細,但也不能太過于簡潔,不能有歧義。

測試步驟

測試步驟是一個用例的精髓,用例標題體現測試的目的,用例步驟就是如何來測從而達到測試的目的。即然是步驟那就是一步一步的操作過程,但這個操作過程并不是寫得越詳細越好。我們的步驟是來體現我們的測試目的的,即要怎樣做什么操作,這個操作后要如何檢查產生的結果。這個操作可能是一步,也可能是幾步,也可能是來回循環。不管是什么操作都是告訴別人如何去做,如何去檢查。但步驟不能寫得過于詳細,如【登錄控制臺,打開xx頁面,點擊xx按鈕】這種就沒必要寫上去,因為這種既是浪費時間也會給用例的維護帶來成本。只需精簡明確地告訴別人在哪做什么操作即可,同時,寫案例時需要遵循一些準則規范:

  • 用例規范

  1. 每個文件夾下不能超過10個測試用例
  2. 每個用例的步驟不能超過8步(算整個案例測試步驟,比如測試步驟和后置條件中執行1-3步)
  3. 測試用例不寫“編號”和“測試步驟名稱”
  4. 每個測試用例一個測試點,用例標題不宜過長,需要精簡明了
  5. 詳細測試需求點、測試步驟和預期結果必須體現測試目的和測試重點
  6. 測試用例中需要用到附件的,需附上文件和文件存放路徑;(附件大于1M可指定路徑)
  7. 預期結果要量化和直接化,減少用例執行的溝通成本
  8. 測試用例設計時需考慮測試執行效率,功能用例執行10分鐘原則:用例里用到的數據或樣本、腳本需要在備注里附上
  9. “測試步驟”和“預期結果”必須可實現和可執行
  10. 測試用例需驗證客戶業務,不能只檢查配置和頁面,除非為純頁面測試
  11. 體現強關聯,去掉弱關聯;強關聯:案例中缺少此步驟就無法達到案例目的;弱關聯:案例中缺少此步驟可以達到案例目的;對于大家都知道或應該清楚的點不用體現在用例中
  12. 測試用例需要有正反對比驗證:開和關的對比、匹配和不匹配對比、輸出結果的對比等,這種用例可以合并,減少用例冗余
  13. 提示內容不用寫的太具體,說明大概意思即可,后面修改了提示需要返工用例
  14. 用例里不能有具體的版本號
  15. 模塊備注盡可能詳細,便于測試和觀察測試點
  16. 測試方法可實現,測試數據貼近于用戶環境
  17. 和其它功能、第三方之間有關聯的測試場景有沒有遺漏
  18. 標題精簡,需要體現測試目的
  19. 模塊目錄中的備注是否足夠詳細,能支撐其它人快速理解特性和提高測試效率
  20. 測試結果的檢查有沒有站在客戶的角度進行測試和驗證
  21. 頁面的測試需要覆蓋多款瀏覽器的測試
  22. 不用把所有檢查點放在一個用例上,這樣會出現執行漏測或前面失敗了后面就不執行了,問題發現滯后
  23. 若多個案例之間在步驟上就是互相覆蓋的,需要合并:如測最長字符和包含特殊字符這兩個測試點可以合并為一個案例
  24. 用例里不能出現有歧義的詞,闡述需要清晰,不能兩個人執行同樣的 案例可能會產生兩種執行結果
  25. 用例需要專業性,不能出現口語化的詞語;
  26. 期望結果需要明確性,不能出現模糊的詞語;如可能、如果、符合要求等

?

  • 可維護性規范

  1. 測試用例中不能出現頁面配置路徑,如:系統配置-網絡配置-網絡接口
  2. 測試用例中不能出現操作過程,比如打開XX目錄下文件,點擊什么;直接寫需做的操作即可
  3. 測試用例需用到的例行檢查點、公共檢查點、后臺、調試、配置文件等查看方法統一寫到模塊備注

?

期望結果

期望結果對應的是測試步驟,每一個測試步驟都對應一個期望結果,即做了這個操作后,希望它產生的后果。即大家在用例里看到的測試步驟里的1,2,3對應期望結果里的1,2,3。理論上每一個測試步驟都需要有一個對應的期望結果,但有些測試步驟我們并不關注這一步驟的操作后果,那這樣的期望結果可寫可不寫。

這里需要注意期望兩字,期望的意思是說要從用戶的角度出發,我用戶做了這個操作后,我希望它能給我反饋的結果。這個結果不是開發程序代碼返回的結果,開發程序代碼返回的結果是實際結果,執行用例時只有實際結果與用例期望結果一致時,案例才能標pass。所以在寫案例或執行案例時,得到實際結果與期望結果不一致時不要輕易被開發忽悠了,一切以用戶主。

后置條件

與前置條件對應,即執行完這個用例后需要還原環境,否則會給下個用例帶來影響。一般寫功能用例時,后置條件基本不用太關注,因為測試環境本來就需要多樣化才能模擬用戶的環境,若每次執行用例都保持一個純凈環境則帶來的測試工作量也大,而且也不能很好地體現測試環境的多樣性。后置條件一般是自動化需要做的,因為自動化需要保持環境的獨立性,彼此不依賴,執行完一個案例后需要將這個案例創建的數據、策略等全部清空,防止影響下一個案例。

如何劃分用例等級

現用例等級是怎么劃分的?

一般在一個模塊里的案例按照等級進行劃分時,遵循下面的比例:

  • BVT(10%):模塊最基本的功能驗證(含常用部署、基本關聯),推薦1級用例的20%左右
  • Leve1(30%):基本需求點,基本邏輯,基本可靠性,基本關聯,基本用戶場景
  • Leve2(40%):常見功能/邏輯細化點/專項細化點,常見關聯/容錯/邊界值/用戶場景
  • Leve3(20%):錯誤提示,極少測試的用例,非常見部署方式/用戶場景/容錯/邊界值等

我們在劃分用例等級時,為什么要這樣劃分?

BVT的案例應該是最基本最簡單的案例,如一個功能模塊的增刪改就是最基本的;

level1是基本的功能需求基本操作相關的,如上面說的增刪改,增可能有多種增加方式,BVT只是最基本的操作,level1是對BVT的一種補充;

level2是一些內部邏輯細化點或一些常見的異常操作。Level2的異常是對用戶來是比較常見的,是很大概率上會遇到的;

level3是可能會出現但出現概率很低的一些操作或異常場景。level3的異常是很極端的異常,是很小概率會發生的,如不斷重啟之類的。

這樣劃分的意義何在?

這樣劃分是有意義的,從這個等級劃分的原則上看就知道BVT是最好執行的,然后等級越高難度系數越大,特別是level3這種,可能涉及到很復雜的網絡部署或很異常的環境構造。

不同等級的案例需要消耗的時間和帶來的影響是不一樣的。當一個模塊轉測后,我們希望的是能快速驗收這個模塊的質量,那如何驗收?不就是它的基本功能是不是完成了,它的基本操作是不是都能順暢執行,在這些基本功能基本操作都沒問題的情況下,再來檢視內部邏輯細節處理是不是到位,最后再檢視各種異常場景下的處理是不是已經合理。即從簡單到困難,先保障基本功能再檢驗其他的發散點。

?感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:

?

這些資料,對于【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴上萬個測試工程師們走過最艱難的路程,希望也能幫助到你!有需要的小伙伴可以點擊下方小卡片領取?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/163850.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163850.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163850.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

05 Powershell發送http請求

一:發送http請求 1、語法: Invoke-WebRequest -uri "請求地址" -UseBasicParsing 2、實例: $result Invoke-WebRequest -uri "http://rdc.mingyuanyun.com/rdc-service/api/v2/apps/$($app)/versions/maxpackversion"…

騰訊又出王炸產品!使用混元大模型進行數據報表測試

最近騰訊出了自己的大模型,命名混元。 現在已經開始內測,感謝騰訊小伙伴盧曉明同學幫我們提前申請到了內測機會,接下來我們用騰訊混元大模型與實際工作結合,開始我的報表測試之旅。 騰訊混元大模型官方入口:https://hunyuan.ten…

Java 基礎面試題大概有哪些?

Java基礎面試題的范圍非常廣泛,一般包括以下幾個方面: 一、Java基礎語法 數據類型:Java中包括基本數據類型和引用數據類型,基本數據類型包括byte、short、int、long、float、double、char、boolean,引用數據類型包括…

三十分鐘學會Shell(下)

Shell 3.1 運算符 3.1.1 算數運算符 在Shell腳本中,算術運算符用于執行基本的數學運算。Shell支持多種算術運算符,包括加、減、乘、除等。以下是關于Shell算術運算符的一些方法以及相應的示例說明: 加法: a10 b20 c$((a b)) …

【第二部分:結構】ARM Realm Management Monitor specification

目錄 概念Realm概述Realm執行環境Realm寄存器Realm內存Realm處理器功能IMPDEF系統寄存器 Realm屬性Realm活性Realm生命周期狀態狀態轉換 Realm參數Realm描述符 顆粒Granule顆粒屬性顆粒所有權顆粒生命周期狀態狀態轉換顆粒抹除 Realm執行上下文概述REC屬性REC指數和MPIDR值REC生…

洞悉今日,把握明日:咨詢公司的關鍵策略揭秘

在快節奏且充滿不確定性的商業環境中,能夠洞悉當前市場動態并預測未來趨勢的企業更有可能獲得成功。咨詢公司在這個過程中扮演著關鍵角色,本文將探討咨詢公司如何幫助企業洞悉現狀并把握未來趨勢,以及他們運用的關鍵策略。 咨詢公司的市場洞察…

百度地圖,地市區域描邊

描邊首先需要各個點的經緯度數據 json數據下載 直接復制粘貼進入頁面ctrls保存就可以了。 如果需要某省中的各個地市描邊可以點擊這個省的進行下載,這里以山東為例,我是先下載了山東的json數據,但是發現只有山東省下各個市的描邊,于是又下了中…

Mac下載的軟件顯示文件已損壞,如何解決文件已損壞問題,讓文件可以正常運行

Mac下載的軟件顯示文件已損壞,如何解決文件已損壞問題,讓文件可以正常運行 設備/引擎:Mac(11.6)/Mac Mini 開發工具:終端 開發需求:讓顯示已損壞的文件順利安裝到電腦 大家肯定都遇到過下載…

ESP32 MicroPython 顏色及二維碼識別?

ESP32 MicroPython 顏色及二維碼識別? 1、顏色識別2、二維碼識別 1、顏色識別 使用AI顏色識別功能,可以實現顏色辨別、顏色追蹤等應用。顏色識別模型內置有9種常見的顏色識別和一種顏色學習識別模式。他們分別是: ai.COLOR_RED 表示識別紅色 ai.COLOR…

【Linux】關系運算符、shell判斷腳本執行時是否有傳參、判斷文件/文件夾是否存在、判斷字符串是否相等、判斷上個命令執行是否正常、判斷字符串是否為空

🦄 個人主頁——🎐個人主頁 🎐?🍁 🪁🍁🪁🍁🪁🍁🪁🍁 感謝點贊和關注 ,每天進步一點點!加油!&…

全網最詳細的安裝pytorch GPU方法,一次安裝成功!!包括安裝失敗后的處理方法!

文章目錄 前提---查看是否有NVIDIV英偉達顯卡【笑哭】一、查看電腦的顯卡驅動版本方法一:在cmd命令窗口中輸入nvidia-smi,可以發現版本為12.2方法2:點擊NVIDIA控制面板→系統信息 二、安裝CUDA方法1: 在pytorch官網https://pytorc…

Redis高可用之主從復制及哨兵模式

一、Redis的主從復制 1.1 Redis主從復制定義 主從復制是redis實現高可用的基礎,哨兵模式和集群都是在主從復制的基礎之上實現高可用; 主從復制實現數據的多級備份,以及讀寫分離(主服務器負責寫,從服務器只能讀) 1.2 主從復制流…

學習Python和深度學習基礎

1. Python基礎知識 學習Python的基本語法、數據類型、控制流等基礎知識。掌握常用的Python庫,如NumPy和Pandas,它們在深度學習中經常被使用。 2. 深度學習基礎 了解深度學習的基本概念,包括神經網絡、前向傳播、反向傳播等。學習深度學習框…

Disasm 示例程序改寫和適配

Disasm 示例程序改寫和適配 簡介 用途 可用于反匯編x86的二進制匯編文件&#xff0c;展示出來內部的反匯編原理和流程。原由 最近在看<<C 反匯編與逆向分析技術揭秘>>這本書籍&#xff0c;在第一張的簡介中我們可以看到ProViem這個反匯編開源工具的內容&#x…

無線收發器芯片Si24R1 兼容替代NRF24L01

Si24R1是一款工作在2.4-2.5GHz世界通用ISM頻段的單片無線收發器芯片。無線收發器包括&#xff1a;頻率發生器、集成嵌入式ARQ基帶協議引擎、功率放大器、晶體振蕩器調制器、解調器。輸出功率頻道選擇和協議的設置可以通過SPI接口進行設置。是目前2.4G無線射頻芯片中&#xff0c…

Java 文件處理工具類詳解

在軟件開發中,文件處理是一個常見的任務,我們經常需要讀取、寫入和管理文件。為了更便捷地處理文件相關操作,我們編寫了一個 FileUtils 工具類,提供了一些有用的文件處理方法。 工具類介紹 FileUtils 工具類包含了一些常用的文件處理方法,主要功能如下: 獲取統一的文件…

Git本地庫操作

對本地庫的操作很少&#xff0c;我們學習1~6節即可&#xff0c;其他了解下。我們可以在idea中完成對本地庫還有遠程庫的操作&#xff0c;可視化界面用起來更加舒適而且也不會混淆。 1. Git概述 Git 是一個免費的、開源的分布式版本控制系統&#xff0c;可以快速高效地處理從小…

[個人筆記] Windows配置OpenSSH免密連接

Windows - 運維篇 第七章 Windows配置OpenSSH免密連接 Windows - 運維篇系列文章回顧Windows配置OpenSSH免密連接參考來源 系列文章回顧 第一章 遷移WinSrv系統到虛擬機 第二章 本地安全策略xcopy實現實時備份文件夾內容 第三章 利用cmd自帶的icacls命令導出文件的ACL權限 第四…

JavaScript啟動本地應用程序

JavaScript調起本地應用程序 以下內容&#xff0c;自定義部分我也還未經過實際驗證&#xff0c;酌情查看。 文章目錄 JavaScript調起本地應用程序確定協議調用協議傳參自定義寫入協議獲取參數 在瀏覽器中通過 JavaScript調起本地應用程序的一個可行方法就是 通過協議調起。 …