<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>
            • 軟件測試技術(shù)
            • 軟件測試博客
            • 軟件測試視頻
            • 開(kāi)源軟件測試技術(shù)
            • 軟件測試論壇
            • 軟件測試沙龍
            • 軟件測試資料下載
            • 軟件測試雜志
            • 軟件測試人才招聘
              暫時(shí)沒(méi)有公告

            字號: | 推薦給好友 上一篇 | 下一篇

            軟件測試中基于狀態(tài)轉換的測試

            發(fā)布: 2011-1-14 13:06 | 作者: 網(wǎng)絡(luò )轉載 | 來(lái)源: 領(lǐng)測軟件測試網(wǎng)采編 | 查看: 136次 | 進(jìn)入軟件測試論壇討論

            領(lǐng)測軟件測試網(wǎng)

            軟件測試中基于狀態(tài)轉換的測試

            測試用例(Test Case)是為某個(gè)特殊目標而編制的一組測試輸入、執行條件以及預期結果,以便測試某個(gè)程序路徑或核實(shí)是否滿(mǎn)足某個(gè)特定需求。

              測試用例(Test Case)目前沒(méi)有經(jīng)典的定義。比較通常的說(shuō)法是:指對一項特定的軟件產(chǎn)品進(jìn)行測試任務(wù)的描述,體現測試方案、方法、技術(shù)和策略。內容包括測試目標、測試環(huán)境、輸入數據、測試步驟、預期結果、測試腳本等,并形成文檔。

              不同類(lèi)別的軟件,測試用例是不同的。不同于諸如系統、工具、控制、游戲軟件,管理軟件的用戶(hù)需求更加不統一,變化更大、更快。筆者主要從事企業(yè)管理軟件的測試。因此我們的做法是把測試數據和測試腳本從測試用例中劃分出來(lái)。測試用例更趨于是針對軟件產(chǎn)品的功能、業(yè)務(wù)規則和業(yè)務(wù)處理所設計的測試方案。對軟件的每個(gè)特定功能或運行操作路徑的測試構成了一個(gè)個(gè)測試用例。

              隨著(zhù)中國軟件業(yè)的日益壯大和逐步走向成熟,軟件測試也在不斷發(fā)展。從最初的由軟件編程人員兼職測試到軟件公司組建獨立專(zhuān)職測試部門(mén)。測試工作也從簡(jiǎn)單測試演變?yōu)榘ǎ壕幹?STRONG>測試計劃、編寫(xiě)測試用例、準備測試數據、編寫(xiě)測試腳本、實(shí)施測試、測試評估等多項內容的正規測試。測試方式則由單純手工測試發(fā)展為手工、自動(dòng)兼之,并有向第三方專(zhuān)業(yè)測試公司發(fā)展的趨勢。

              要使最終用戶(hù)對軟件感到滿(mǎn)意,最有力的舉措就是對最終用戶(hù)的期望加以明確闡述,以便對這些期望進(jìn)行核實(shí)并確認其有效性。測試用例反映了要核實(shí)的需求。然而,核實(shí)這些需求可能通過(guò)不同的方式并由不同的測試員來(lái)實(shí)施。例如,執行軟件以便驗證它的功能和性能,這項操作可能由某個(gè)測試員采用自動(dòng)測試技術(shù)來(lái)實(shí)現;計算機系統的關(guān)機步驟可通過(guò)手工測試和觀(guān)察來(lái)完成;不過(guò),市場(chǎng)占有率和銷(xiāo)售數據(以及產(chǎn)品需求),只能通過(guò)評測產(chǎn)品和競爭銷(xiāo)售數據來(lái)完成。

              既然可能無(wú)法(或不必負責)核實(shí)所有的需求,那么是否能為測試挑選最適合或最關(guān)鍵的需求則關(guān)系到項目的成敗。選中要核實(shí)的需求將是對成本、風(fēng)險和對該需求進(jìn)行核實(shí)的必要性這三者權衡考慮的結果。

              確定測試用例之所以很重要,原因有以下幾方面。

              測試用例構成了設計和制定測試過(guò)程的基礎。 測試的“深度”與測試用例的數量成比例。由于每個(gè)測試用例反映不同的場(chǎng)景、條件或經(jīng)由產(chǎn)品的事件流,因而,隨著(zhù)測試用例數量的增加,您對產(chǎn)品質(zhì)量測試流程也就越有信心。 判斷測試是否完全的一個(gè)主要評測方法是基于需求的覆蓋,而這又是以確定、實(shí)施和/或執行的測試用例的數量為依據的。類(lèi)似下面這樣的說(shuō)明:“95 % 的關(guān)鍵測試用例已得以執行和驗證”,遠比“我們已完成 95 % 的測試”更有意義。 測試工作量與測試用例的數量成比例。根據全面且細化的測試用例,可以更準確地估計測試周期各連續階段的時(shí)間安排。 測試設計和開(kāi)發(fā)的類(lèi)型以及所需的資源主要都受控于測試用例。 測試用例通常根據它們所關(guān)聯(lián)關(guān)系的測試類(lèi)型或測試需求來(lái)分類(lèi),而且將隨類(lèi)型和需求進(jìn)行相應地改變。最佳方案是為每個(gè)測試需求至少編制兩個(gè)測試用例:

              ·一個(gè)測試用例用于證明該需求已經(jīng)滿(mǎn)足,通常稱(chēng)作正面測試用例; ·另一個(gè)測試用例反映某個(gè)無(wú)法接受、反;蛞馔獾臈l件或數據,用于論證只有在所需條件下才能夠滿(mǎn)足該需求,這個(gè)測試用例稱(chēng)作負面測試用例。

             

            世間萬(wàn)物,緣起緣滅,每天都在經(jīng)歷著(zhù)各種各樣的狀態(tài)轉換。

            作為一個(gè)測試人員,在工作過(guò)程中,經(jīng)常會(huì )碰到軟件中事物具有多個(gè)狀態(tài),各個(gè)狀態(tài)在滿(mǎn)足某些條件時(shí),實(shí)現狀態(tài)的轉換。

            軟件中事物狀態(tài)間的轉換一般可分為兩類(lèi):一類(lèi)是各個(gè)狀態(tài)之間轉換有一定的序列關(guān)系,如工作流,必須先發(fā)生A狀態(tài),才能到B狀態(tài),狀態(tài)A和B之間有先后順序;一類(lèi)是各個(gè)狀態(tài)是并列關(guān)系,各個(gè)狀態(tài)間可以相互轉換,如狀態(tài)C和D,可以由C轉換成D,也可以由D轉換成C。這兩種類(lèi)型的狀態(tài)轉換,都需要注意用戶(hù)角色權限。

            所謂狀態(tài)轉換的測試,是指在測試過(guò)程對于軟件中事物狀態(tài)的轉換,我們需要模擬使狀態(tài)發(fā)生轉換的各種用戶(hù)操作場(chǎng)景,以及通過(guò)一些非正常手段來(lái)校驗不允許發(fā)生的狀態(tài)流轉;旧蠈顟B(tài)轉換的測試,我們設計的用例需要涵蓋允許的狀態(tài)轉換和不允許的狀態(tài)轉換、以及用戶(hù)角色權限的校驗。

            對于那些只有2個(gè)狀態(tài)轉換的情況,往往在基于主流程或備選流程的用例中添加狀態(tài)校驗項來(lái)實(shí)現;而對于那些有復雜的流轉過(guò)程或者有多種狀態(tài)的情況,只是通過(guò)用例中添加的狀態(tài)校驗項來(lái),很容易遺漏狀態(tài)的轉換關(guān)系,更主要的各個(gè)狀態(tài)的轉換被拆分到各個(gè)功能模塊的用例中,非常的零碎,如果希望就針對狀態(tài)轉換的一個(gè)回歸,篩選用例將會(huì )是一件非常麻煩的事情,而不存在的狀態(tài)轉換校驗則沒(méi)有辦法體現,由此我們很是需要專(zhuān)門(mén)針對狀態(tài)的流轉做一個(gè)測試設計。

            無(wú)論是序列關(guān)系還是并列關(guān)系的狀態(tài)轉換,我們都可以從需求說(shuō)明書(shū)(PRD)中獲取狀態(tài)的流轉信息,為了更清晰的描述這種狀態(tài)流轉,我們可以通過(guò)狀態(tài)圖來(lái)表達。有了狀態(tài)圖,我們就可以從用戶(hù)使用的角度、結合用戶(hù)的實(shí)際需求去考慮,這些狀態(tài)的流轉是否符合用戶(hù)的操作習慣,檢查是否有冗余或者缺失的狀態(tài);程序的實(shí)現是否可以讓用戶(hù)操作盡可能的簡(jiǎn)單易用;狀態(tài)流轉路徑末端節點(diǎn)是否是終結狀態(tài),終結狀態(tài)是否存在逆向的狀態(tài)流轉。

            下面就這兩種類(lèi)型的進(jìn)行實(shí)例說(shuō)明。

            序列關(guān)系的狀態(tài)轉換:spu編輯狀態(tài)的轉換。

            Spu編輯狀態(tài)的轉換,是一個(gè)有序的過(guò)程,在一個(gè)生命周期內,某個(gè)狀態(tài)下,滿(mǎn)足要求才會(huì )流轉到下一個(gè)狀態(tài),大部分狀態(tài)的流轉是單向的,任意一個(gè)狀態(tài)流轉分支都是從初始狀態(tài)出發(fā),到終結狀態(tài)終止。

            并列關(guān)系的狀態(tài)轉換:商品狀態(tài)的轉換。

            商品各個(gè)狀態(tài)間的轉換,也有起始狀態(tài)和終止狀態(tài),不同于序列狀態(tài),幾乎每個(gè)狀態(tài)都和多個(gè)狀態(tài)存在在轉換關(guān)系,且狀態(tài)之間的轉換是相互的,猶如蜘蛛網(wǎng)一樣,面對這種網(wǎng)狀的狀態(tài)圖,測試的時(shí)候需要特別注意狀態(tài)之間不允許發(fā)生的轉換是否存在。

            從兩個(gè)實(shí)例,根據狀態(tài)圖,我們可以看到我們需要關(guān)注的內容:

            狀態(tài):狀態(tài)圖中的每一個(gè)狀態(tài),都必須進(jìn)行測試,校驗該狀態(tài)下,向其他狀態(tài)的轉換是否如狀態(tài)圖中展示的一致。

            狀態(tài)之間允許的轉換:可能是如下情況,相同數據,不同操作引起不同轉換;不同數據(前置條件不一樣),相同操作引起的不同轉換;不同數據,不同操作引起的不同轉換。對每一個(gè)允許的狀態(tài)轉換進(jìn)行驗證,設置狀態(tài)轉換的前置條件,操作使狀態(tài)發(fā)生轉換的功能,驗證操作是否正常、狀態(tài)是否如預期變化。對使用頻率特別高、或者特別容易出錯的轉換、以及最不常使用的轉換,需要構造更多的測試數據,做盡可能多的覆蓋。

            狀態(tài)之間不允許的轉換:狀態(tài)之間不允許的轉換測試,關(guān)注系統返回的錯誤信息和狀態(tài)值是否變更,不需要對所有的不可能進(jìn)行驗證,應該挑選那些特別容易發(fā)生的轉換進(jìn)行測試。

            狀態(tài)轉換的角色權限:狀態(tài)之間的轉換操作,是有用戶(hù)角色要求的,我們不僅要驗證有權限的角色能夠正常操作,還需要驗證沒(méi)有權限的角色是否能操作,對于沒(méi)有權限的角色驗證,在不可能全部驗證的情況下,也是挑選相對容易出錯的操作進(jìn)行。

            狀態(tài)的轉換,在軟件中是非常普遍的,通過(guò)狀態(tài)圖梳理各個(gè)狀態(tài)轉換的關(guān)系,并在狀態(tài)圖的基礎上按照狀態(tài)和狀態(tài)轉換的覆蓋原則進(jìn)行測試設計,可以有效的保證軟件狀態(tài)轉換的正確性。測試過(guò)程中,還可以進(jìn)行隨機的狀態(tài)轉換測試。

            延伸閱讀

            文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/

            TAG: 經(jīng)典的 軟件測試


            關(guān)于領(lǐng)測軟件測試網(wǎng) | 領(lǐng)測軟件測試網(wǎng)合作伙伴 | 廣告服務(wù) | 投稿指南 | 聯(lián)系我們 | 網(wǎng)站地圖 | 友情鏈接
            版權所有(C) 2003-2010 TestAge(領(lǐng)測軟件測試網(wǎng))|領(lǐng)測國際科技(北京)有限公司|軟件測試工程師培訓網(wǎng) All Rights Reserved
            北京市海淀區中關(guān)村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
            技術(shù)支持和業(yè)務(wù)聯(lián)系:info@testage.com.cn 電話(huà):010-51297073

            軟件測試 | 領(lǐng)測國際ISTQBISTQB官網(wǎng)TMMiTMMi認證國際軟件測試工程師認證領(lǐng)測軟件測試網(wǎng)

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>