在車載項(xiàng)目開發(fā)過程中,測試是關(guān)鍵中關(guān)鍵的一環(huán),包括供應(yīng)商釋放每版軟件時(shí)的全量測試,也包括主機(jī)廠的驗(yàn)收測試。那針對測試這塊,測試用例設(shè)計(jì)的規(guī)范一般是怎么樣呢?今天一起來探討一下。
首先是規(guī)范測試用例的背景是什么呢?主要有兩個(gè)維度,首先是為保證測試用例對需求的覆蓋率,第二個(gè)就是對單個(gè)功能點(diǎn),主要驗(yàn)證不同的輸入及其組合所帶來的各種輸入動(dòng)作,系統(tǒng)輸出是否合理。
測試用例設(shè)計(jì)規(guī)范的目的是為測試用例的質(zhì)量負(fù)責(zé),使測試能有序、合理化的進(jìn)行,從而提高實(shí)施測試時(shí)的測試質(zhì)量。
那下面就來仔細(xì)聊聊測試用例設(shè)計(jì)的規(guī)范。首先是一條測試用例要包含哪些內(nèi)容呢?
01. 編寫用例原則
在上面對整體測試規(guī)范的背景和目的簡單說明后,那先來看看測試用例編寫的原則,主要包括系統(tǒng)性,全面性,正確性,可操作性,下面挨個(gè)來聊聊。
系統(tǒng)性:要能完整的說明整個(gè)系統(tǒng)的業(yè)務(wù)需求、系統(tǒng)由幾個(gè)子系統(tǒng)組成以及間的關(guān)系;對模塊業(yè)務(wù)流程要說明子系統(tǒng)內(nèi)部功能、重點(diǎn)功能以及之間的關(guān)系;
全面性:應(yīng)盡可能覆蓋各種路徑、盡可能覆蓋各個(gè)業(yè)務(wù)點(diǎn);
正確性:輸入界面后的數(shù)據(jù)應(yīng)與測試文檔所記錄的數(shù)據(jù)一致,而預(yù)期結(jié)果也應(yīng)與測試數(shù)據(jù)發(fā)生的業(yè)務(wù)吻合。
可操作性:測試用例中要寫清楚測試的操作步驟,以及不同的操作步驟相對應(yīng)的測試結(jié)果。
02. 編寫用例標(biāo)準(zhǔn)
討論完測試用例的原則后,那用例實(shí)際應(yīng)該怎么編寫呢,其標(biāo)準(zhǔn)是什么呢?首先測試用例編寫應(yīng)該統(tǒng)一模板并約定模板的使用方法;其次測試用例編寫應(yīng)當(dāng)根據(jù)實(shí)際情況編寫測試用例編寫手冊,包括用例編號規(guī)則、編寫方法、維護(hù)等內(nèi)容等;然后則是用例編寫應(yīng)根據(jù)手冊中約定的編寫方法、內(nèi)容等進(jìn)行編寫,并且寫要明確步驟,輸入輸出要素清晰,并且與需求和缺陷相對應(yīng);最后按照用例編寫原來中全面性,用例編寫應(yīng)嚴(yán)格根據(jù)需求及測試需求功能分析點(diǎn)進(jìn)行,要求覆蓋全部需求功能點(diǎn)。
最后用例編寫要注重用例的可復(fù)用性,減少后續(xù)類似需求的測試設(shè)計(jì)工作量。
03. 用例設(shè)計(jì)步驟
在聊完用例原則和標(biāo)準(zhǔn)后,就要開始實(shí)操了,看用例設(shè)計(jì)的步驟了。
第一步是測試需求分析:從需求分析文檔中,找出待測的需求點(diǎn),通過分析、理解,整理成為測試需求,要清楚被測對象具體包含哪些功能點(diǎn)。
第二步則是業(yè)務(wù)流程分析:首先要對業(yè)務(wù)知識要熟悉,然后對被功能需求要進(jìn)行全盤的整理出來。
第三部則是測試用例設(shè)計(jì):測試用例設(shè)計(jì)的類型主要包括功能測試、邊界測試、異常測試、性能測試、壓力測試等,在設(shè)計(jì)用例時(shí)要盡量考慮邊界、異常等情況。
第四部則是測試用例評審:由測試用例編寫者發(fā)起,參加的人員需包括測試負(fù)責(zé)人、項(xiàng)目經(jīng)理、開發(fā)人員及其他相關(guān)的測試人員。
第五步則是測試用例完善:測試用例編寫完成之后需要不斷完善,包括功能需求迭代,或者是在軟件交付后客戶反饋的軟件缺陷,而缺陷又是因測試用例存在漏洞造成,也需要對測試用例進(jìn)行完善。
04. 用例維護(hù)
測試用例編寫并不是一次性的工作,后續(xù)還需要定期的維護(hù)測試用例,為什么要維護(hù)呢?
刪除過時(shí)的測試用例
因?yàn)樾枨蟮母淖兊仍蚩赡軙挂粋€(gè)基線測試用例不再適合被測系統(tǒng),那么這些測試用例就會過時(shí),需要對這些測試用例進(jìn)行及時(shí)的刪除。
修改測試用例
隨著項(xiàng)目的進(jìn)展,測試需求可能會有部分變更,甚至大范圍的變更,這個(gè)時(shí)候就會根據(jù)需求的變化相應(yīng)的對測試用例進(jìn)行維護(hù),修改已經(jīng)不符合目前需求的內(nèi)容,并備注加以說明。
刪除冗余的測試用例
如果存在兩個(gè)或更多測試用例對一組相同的輸入和輸入進(jìn)行測試,則需要對其進(jìn)行刪除,只需留下其中的一個(gè)。
增添新的測試用例
對新增的功能、在評審過程及測試過程中發(fā)現(xiàn)缺少測試用例或者系統(tǒng)出現(xiàn)BUG但是沒有與之對應(yīng)的測試用例,需要按照測試用例的設(shè)計(jì)標(biāo)準(zhǔn)進(jìn)行增添,增加測試用例時(shí),需要在相應(yīng)功能模塊的最下方插入新增的測試用例,并在備注欄中加以說明。
05. 用例設(shè)計(jì)方法
測試用例要包括欲測試的功能、應(yīng)輸入的數(shù)據(jù)和預(yù)期的輸出結(jié)果。測試數(shù)據(jù)應(yīng)該選用少量、高效的測試數(shù)據(jù)進(jìn)行盡可能完備的測試;基本目標(biāo)是:設(shè)計(jì)一組發(fā)現(xiàn)某個(gè)錯(cuò)誤或某類錯(cuò)誤的測試數(shù)據(jù),測試用例應(yīng)覆蓋方面:
等價(jià)劃分:將所有可能的輸入數(shù)據(jù)(有效的和無效的)劃分成若干個(gè)等價(jià)類。
邊界值分析法:確定邊界情況,針對系統(tǒng)在測試過程中主要輸入一些合法數(shù)據(jù)/非法數(shù)據(jù),主要在邊界值附近選取。
場景法:通過運(yùn)用場景來對系統(tǒng)的功能點(diǎn)或業(yè)務(wù)流程的描述,從而提高測試效果的一種方法。用例場景來測試需求是指模擬特定場景邊界發(fā)生的事情,通過事件來觸發(fā)某個(gè)動(dòng)作的發(fā)生,觀察事件的最終結(jié)果,從而用來發(fā)現(xiàn)需求中存在的問題。
基本流:是經(jīng)過用例的最簡單的路徑;
正確性測試:輸入用戶實(shí)際數(shù)據(jù)以驗(yàn)證系統(tǒng)是滿足需求規(guī)格說明書的要求;測試用例中的測試點(diǎn)應(yīng)首先保證要至少覆蓋需求規(guī)格說明書中的各項(xiàng)功能,并且正常。
健壯性測試:程序能夠接收正確數(shù)據(jù)輸入并且產(chǎn)生正確(預(yù)期)的輸出;輸入非法數(shù)據(jù)(非法類型、不符合要求的數(shù)據(jù)、溢出數(shù)據(jù)等),程序應(yīng)能給出提示并進(jìn)行相應(yīng)處理。把自己想象成一名對產(chǎn)品操作一點(diǎn)也不懂的客戶,在進(jìn)行任意操作。
完整性測試:對未經(jīng)授權(quán)的人使用軟件系統(tǒng)或數(shù)據(jù)的企圖,系統(tǒng)能夠控制的程度,程序的數(shù)據(jù)處理能夠保持外部信息的完整。
接口間測試:測試各個(gè)模塊相互間的協(xié)調(diào)和通信情況,數(shù)據(jù)輸入輸出的一致性和正確性。
壓力測試:輸入10條記錄運(yùn)行各個(gè)功能,輸入30條記錄運(yùn)行,輸入50條記錄運(yùn)行,進(jìn)行測試。
錯(cuò)誤推測:主要是根據(jù)測試經(jīng)驗(yàn)和直覺,參照以往的軟件系統(tǒng)出現(xiàn)錯(cuò)誤之處。
效率:完成預(yù)定的功能,系統(tǒng)的運(yùn)行時(shí)間。
可操作性:理解和使用該系統(tǒng)的難易程度(界面友好性)。
可移植性:在不同操作系統(tǒng)及硬件配置情況下的運(yùn)行性。
回歸測試:按照測試用例將所有的測試點(diǎn)測試完畢,測試中發(fā)現(xiàn)的問題開發(fā)人員。
比較測試:將已經(jīng)發(fā)版的類似產(chǎn)品或原有的老產(chǎn)品與測試的產(chǎn)品同時(shí)運(yùn)行比較,或與已往的測試結(jié)果比較。
兼容性測試:操作系統(tǒng)的兼容性測試內(nèi)容不僅包括軟件的安裝,還需對關(guān)鍵流程和功能點(diǎn)進(jìn)行檢查。而需要測試哪些操作系統(tǒng)的兼容性,首先取決于軟件用戶文檔上對用戶的承諾,其次就需要對一些常用操作系統(tǒng)兼容的檢查
歷史版本兼容性測試:某些功能存在新版本和歷史版本數(shù)據(jù)顯示、頁面展示不一致的問題。需要不同版本進(jìn)行測試。
06. 用例評審
在完成用例編寫后,就需要預(yù)約會議,對用例進(jìn)行評審,為什么需要評審呢?主要是測試用例是軟件測試的原則,但由于軟件人員對在需求理解、設(shè)計(jì)等理解程度不同等因素的影響,首次產(chǎn)生的測試用例質(zhì)量難以避免會有不同程度的差異,故對編寫的測試用例進(jìn)行評審是很有必要的,其作用是測試用例的評審過程能夠起到用例結(jié)構(gòu)清晰化、場景覆蓋全面化以及優(yōu)先用例的合理化安排等。
評審的內(nèi)容包括用例設(shè)計(jì)的結(jié)構(gòu)安排是否清晰合理,是否高效的需求進(jìn)行覆蓋用例的優(yōu)先級別是否安排合理;是否覆蓋了測試需求的所有功能點(diǎn),包括需求中的業(yè)務(wù)規(guī)則、所有用戶可能使用的流程或場景等;用例是否有很好的可執(zhí)行性。例如用例的前提條件、執(zhí)行步驟、輸入數(shù)據(jù)和期待結(jié)果是否清晰、正確;是否已經(jīng)刪除了冗余的測試用例;是否包含充分的負(fù)面測試用例是否簡潔、復(fù)用性強(qiáng)、是否易于管理。
那評審過程是怎樣的呢?基于項(xiàng)目需求的測試計(jì)劃完成之后,進(jìn)行初審,主要是對測試范圍和測試要點(diǎn)進(jìn)行審查在測試用例的設(shè)計(jì)完成之后進(jìn)行復(fù)審,主要是對測試用例的結(jié)構(gòu)和覆蓋率進(jìn)行評審所有測試用例結(jié)束后,主要是對測試用例的具體描述是否有很好的可執(zhí)行性,是否有冗余用例的存在進(jìn)行評審。
評審之后,經(jīng)評審的用例由用例設(shè)計(jì)者根據(jù)評審的建議或意見進(jìn)行修改,更新用例,再次發(fā)起評審、修改、更新用例,反復(fù)評審后,直至用例達(dá)到要求。
在用例經(jīng)過用例評審后,則就可以排計(jì)劃讓測試人員安排測試了。包括建立測試計(jì)劃;建立對應(yīng)的版本追溯;確認(rèn)測試人員,測試報(bào)告輸出等。
轉(zhuǎn)自汽車ECU開發(fā)