如何應用場景法設計軟件測試用例
我們的現實生活是由一幅幅生動的場景畫面所組合而成的。對于一個電影導演來說,要想獲得一個高票房的收入,在拍攝的過程中必須事先精心設計好畫面中的每一個場景,否則觀眾是不會來買單的,同樣測試的工作也不例外,交付用戶使用的系統要想獲得用戶的認可,必須站在用戶的角度,以用戶的使用邏輯及操作習慣為出發點,結合功能用例的設計方法,使用例設計更貼近實際,從而最大程度上滿足用戶的需求。
舉一個生活中常見的例子,來感受一下常用的測試設計方法與場景測試之間的關系:測試一個創建賀卡的功能,對比兩個不同視角的結果。從功能測試的角度出發,要測試的功能點大致為: 1.為卡片添加文本信息 2.為卡片添加圖片 3.從卡片庫中獲取草圖 4.發送卡片: 1) 通過email發送 2) 打印卡片;添加文本、圖片,從庫中加載卡,以及發送卡片這些可以通過我們常用的等價類,邊界值等手段進行測試,而站在用戶使用的角度出發則會更偏重于: 1.發送生日賀卡 2.發送周年紀念卡 3.發送聚會請帖 4.從一張空白卡片開始制作賀卡,并通過前面提供的這一堆功能創建一張自己需要的卡片。這就是場景測試的一個縮影,場景其實就是對每一個活動進行再細化描述活動執行的過程。
現在的軟件幾乎都是由事件觸發來控制流程的,事件觸發時的情景便形成了場景,而同一事件不同的觸發順序和處理結果形成事件流。這種在軟件設計方面的思想被引入到軟件測試中,生動的描繪出事件觸發時的情景,有利于測試設計者設計測試用例,同時測試用例也更容易的得到理解和執行,從而最大程度上覆蓋用戶需求。這就是我們通常所說的基于場景的測試方法。
說到這里,大家可能會比較關注場景測試適用于什么樣的項目呢?個人認為對于業務流程或事件比較復雜的程序,主要用來探索對于比較有經驗的用戶是怎么來使用軟件的,并查找出更加有說服力的bug。不同的觸發順序和處理結果形成事務流,通過設計足夠多的測試用例來覆蓋基本流和各種備選流。流程性比較強,顯然一個一個模塊測試是不明智的,他的模塊之間需要有數據流的流動才能運轉,這是可以采用場景法確定數據流的大致情況。有些軟件有明確的但是復雜的各種輸入(原因),他們會導出許多復雜的輸出,這個時候用因果圖方法理清因、果之間的關系。但是光用這兩個方法顯然是不夠的,針對每一個輸入,有無數種情況,我們要用等價類的方法把無限測試變為有限測試。當然邊界值、錯誤測試都是很有用也必要的測試案例的補充。對于一個軟件,如果沒有很明確的流程,也不需要使用因果圖、場景法等方法,但是它依然需要等價類、邊界值與錯誤輸入等技術。對于這類軟件我們可以分模塊來進行功能的“掃菜單”方式組織案例的編寫。
談到場景測試,首先要知道什么是場景?場景是從用戶的角度來描述系統的運行行為,反映系統的期望運行方式,是由一系列的相關活動組成的, 它就像一個劇本,是演繹系統未來預期的使用過程。場景可以看作是用戶需求的內容,完全站在用戶的視角來描述用戶與系統的交互,之后的功能需求說明,則是用戶需求分解的結果,定義了必須實現的軟件功能。場景描述是一個迭代細化的過程,一般以故事敘述的方式描述如何幫助用戶解決問題,輔以系統的交互草圖。場景需要有清晰、明確的上下文環境,說明這個場景發生在什么背景下,何時會發生,從用戶的角度出發,描述用戶做什么,與系統的交互行為,以及用戶對出現問題的反應。設置場景的目的是讓所有人員明白用戶的目標是什么,以及用戶希望怎樣做,不涉及具體的界面展現是怎樣的,也不關注具體的實現方式是怎樣的。
場景來源于哪里?場景是use case的一個實例,一個簡單的場景是通過一個use case,并定義一些相關的數據以及覆蓋這個case所流經的路徑,數據通過輸入,輸出,以及一些中間狀態與具體的場景相關聯。一個復雜的場景包含對多個use case的組合,通過控制場景或子場景的執行順序、條件控制、并行或反復處理來組合而成的,表明多個功能之間的信息流是如何進行運作的。 場景需要定義actors, roles, business processes, events以及the goal(s) of the actor(s) 。
什么是基于場景的測試方法呢?說白了就是在場景的基礎上進行的測試,通過執行測試場景或與需求以及系統可操作的流程相關的測試用例來驗證系統的功能。一個場景測試用例僅測試一個場景、事務或業務流程�;趫鼍凹夹g的軟件測試,首先需要完成對被測試系統進行分析建模,通過分析需求規格說明書,獲得系統級的輸入/輸出變量,然后模擬用戶的各種使用場景,基于該使用場景對測試對象進行測試。
基本流是經過用例的最簡單的路徑。備選流可能是從基本流開始,在特定條件下執行。備選流也可能會源于另一個備選流。備選流一般有兩種去向:回到基本流或者異常中止。在用例場景作成時,有時候很難搞清楚哪些是基本流,哪些是備選流�;玖骶褪悄切┩瓿赡硞€操作需要經過的必須步驟,而備選流則是完成這些必須步驟中出現的一些可選操作。當業務流、場景都確定下來以后,一個業務的具體操作流程就確定了,基于場景的測試主要集中在用戶和系統之間的交互,主要用來檢測業務需求的正確性,而不是代碼本身的正確性。
文章來源于領測軟件測試網 http://www.kjueaiud.com/