測試腳本也(yě)好(hǎo),需求也(yě)好(hǎo™λ),一(yī)直在變化(huà),如(rú)何在變化(huà)之後,還(hái)能'↑≥'(néng)保證追溯的(de)正确性?質量經理(lǐ)需要(yào)保證此處的(de)覆蓋度是(shì)完全的(de),并且也σ¥£×(yě)需要(yào)向ASPICE評審老(lǎo)師(shī)提供證據©γ→ 。而此處追溯性證據的(de)出示,也(yδ<ě)是(shì)ASPICE評審最耗時(shí)的(de)地(dì)方 ¥之一(yī)。有(yǒu)沒有(yǒu)什(shén)麽好(hǎ÷∞♥o)的(de)方案能(néng)解決這(zhè)個(gè)問(wèn)題?既省時(shí)、又(α$yòu)準确,還(hái)能(néng)保證追溯性的(de)建立。
這(zhè)種巨大(dà)的(de)精力來(lá×™←i)自(zì)哪裡(lǐ)?不(bù)同于手動★↔•測試用(yòng)例,自(zì)動化(huà)測試用(yòng)例是(shì)由腳本語言₹®♦§來(lái)編寫的(de),腳本不(bù)同于exce φl一(yī)行(xíng)一(yī)行(xíng)的(de),方便建立條目化(huπ§&→à)的(de)對(duì)應關系,相(xiàng)反,他(tā)們難以與需求↔☆↓₽之間(jiān)建立準确的(de)對(duì)應關系。由于自(zì)動化(huà)測•↑£&試腳本的(de)更新速度很(hěn)快(kuài),而需求也(yě)可(kě±±¶)能(néng)産生(shēng)變化(huà),需求₹$産生(shēng)變化(huà)之後,更新追溯性關系的(d₽ε♠e)重任,必然落到(dào)測試工(gōng)程師(sh§✘↑♥ī)頭上(shàng)。這(zhè)是(shì)一(yī)份相(xiàng ♦)當繁瑣且乏味的(de)工(gōng)作(zuò),對(du₽§≈ì)于自(zì)動化(huà)測試工(gōng)程師(shī)來(lái)講,會(huì)有(yλ≥ǒu)巨大(dà)的(de)時(shí)間(jiān)壓力,特别是(shì)當項目比∑≥較緊張的(de)時(shí)候。
可(kě)是(shì),如(rú) 果站(zhàn)在需求工(gōng)程師(shī)或者β™項目經理(lǐ)的(de)角度來(lái♦₹₽)說(shuō),如(rú)果無法看(kàn) ×到(dào)測試用(yòng)例和(hé)需求之間(jiān)的(de)覆蓋度數(shù↕ π₩)據,心裡(lǐ)會(huì)沒底。如(rú≤₩≥)果需求文(wén)檔是(shì)從(cóng)甲方客戶而$©☆♣來(lái),這(zhè)種擔憂更加明(míng)&β•π顯。甲方客戶一(yī)般無法知(zhī)曉乙方的(de)ε↓測試用(yòng)例生(shēng)成過程和(hé)測試執行φ₽≥(xíng)過程,所以更加需要(yào)需求的(dδπ¥₩e)測試用(yòng)例覆蓋度數(shù)據這(zhè)一(yī)“心§↑→$理(lǐ)安慰劑”(這(zhè)大(dà)概也(yě)是(shì)ASPIΩ♥✘÷CE提出這(zhè)一(yī)要(yào)求的(de)原因吧(ba β↑))。
所以,這(zhè)個(<δgè)問(wèn)題就(jiù)變成了(le)是(shì)提前做(zuò),還(h↕♥ái)是(shì)往後放(fàng)?是(shì)在早期就(jiù)盡可(kě)能(néng)地(>∑dì)建立追溯性關聯關系,确保需求沒有(yǒu)被遺漏考∞↔"慮;還(hái)是(shì)在問(wèn)題被發現(xiàn)之後,再去(qù)debug,∑≠更進一(yī)步補充測試用(yòng)例?
我們認為(wèi)前↔÷♠₹者有(yǒu)價值,但(dàn)如(rú)果需要(yào)付出巨大(&®dà)的(de)勞動和(hé)精力去(qù)執♠≠§行(xíng),那(nà)麽投資回報(bào)率很(hěn)低(♠¥←dī),可(kě)能(néng)效果還(hái)不(bù)如(rú)後者。那₩←✘★(nà)麽是(shì)否有(yǒu)可(kě)能(nén$↑g),在不(bù)付出那(nà)麽多(duōββ®)精力的(de)情況下(xià),能(nén$g)達到(dào)前者的(de)目的(de)?
我總結了(le)一(yī)下(xi•★à),大(dà)概應該有(yǒu)如(rú)下(xià)幾個(gè→§')步驟:
1、Ω>在自(zì)動化(huà)測試用(yòng)例的(de)注釋中,标注'↕對(duì)應的(de)需求編号或名稱,确保測試用(yòng)例和± (hé)需求之間(jiān)建立了(le)追溯性。
标注需求名稱是(sh§§ì)萬萬不(bù)行(xíng)的(de),因為(wèi)後續很(hěn)難✘≈✔♠通(tōng)過識别需求名稱,去(qù)确定每一(↑®yī)條需求是(shì)否被覆蓋,從(cóng)而算(s♦×↓uàn)出需求覆蓋度。
₩ φ$ 标注需求編号的(de)前提是(shì),需求要(yào)有(yǒu)全局唯一≠₩♥(yī)的(de)編号。這(zhè)句話(huà)說(shuō)起來(lái)很(hěn)簡單,但(dànφ≈♦)很(hěn)多(duō)團隊往往做(zuò)不(bù)到 (dào)。有(yǒu)些(xiē)團隊使用(yòng)wεφ©εord管理(lǐ)需求,需求沒有(yǒu)編号,隻有(yǒu)章(zhāng)節号。而章←§∑(zhāng)節号會(huì)随著(zhe)章(zhāng)節的(de)增減δ★而自(zì)動變化(huà),很(hěn)快(kuài),對(duì)應關系便陷入混亂 "₹,不(bù)可(kě)自(zì)拔。
2、獲得(de)需↓↕求和(hé)測試用(yòng)例之間(jiān)的(de)矩陣表
如(rδ≥§±ú)何獲得(de)?
手動把上(shàng)述需求編÷>™☆号和(hé)測試用(yòng)例編号摘出來(lá₽ ©☆i),做(zuò)成一(yī)張矩陣表。這(zhè)當然是(shì)個(gè)方法,但(dàn∞↔®)前提是(shì)測試用(yòng)例要(yào)有(yǒu)全局唯一(yī)的(deβ✘Ω©)編号。但(dàn)測試用(yòng)例是(shì)用(yò↕ng)腳本來(lái)維護的(de),腳本中不(bù)會(huì)自(zì)動¶≠生(shēng)成編号,又(yòu)回到(dào)了(le)上(shàng)面的(dε♥↓÷e)困局:人(rén)為(wèi)對(duì)測試用(yòng)例進行(xín→☆g)編号。缺點參照(zhào)上(shàng)面,容易出錯(cuò),且™♠需要(yào)一(yī)個(gè)配置管理(lǐ)員(yuán)不(bù)時(sh§←¶↑í)就(jiù)拉著(zhe)測試工(gōng)程師(shī)審查一(yī)下(xβ∑ià)。測試工(gōng)程師(shī)還(hái)不(bù)得(de)mmp。®♠×↓
想辦法給某一(yī)條測試δ€™用(yòng)例,自(zì)動賦予全局唯一(yī✘ ÷)的(de)編号,并且自(zì)動生(shēng)成上(shàng)述矩陣表,這π¥(zhè)是(shì)更高(gāo)效的(de)解題方法。
3、維護矩陣表的(de)正确性
如(rú)果是(s®"★≤hì)手動獲取的(de)矩陣表,當然得(de)手動維護,這(zhè)時(shí)候工' (gōng)作(zuò)量就(jiù)大(dà)了(le)。
測試用(yòng)↓♥±α例新增了(le):需要(yào)新增測試用(yòng)例編号(查一(yī)下(xià)配置表←←←,找到(dào)正确的(de)編号規則,确認目前編到(dào)多(duō♣¶>♣)少(shǎo)号了(le)……),需要(yào)對(duì)應需求編号(找一(yī)下(xi♥βà)對(duì)應的(de)需求);
測試用(yòng)例删除了(le≥±☆):需要(yào)删除無用(yòng)的(de)測試用(yòng)例編号,且此編号最σ>好(hǎo)以後都(dōu)别用(yòng)了(le),以免引起混亂,還(hái)得(de)确保☆φδ此處更新,全局更新,如(rú)果文(wén£↑)件(jiàn)是(shì)線下(xià)的(de),譬如(rú)這(zhè)份excelσε€存在多(duō)個(gè)人(rén)的(de)電(diàn)腦(nǎo)♣£α裡(lǐ),這(zhè)基本就(jiù)是(shì)新的(de)災難的(♦de)開(kāi)始。
↕₹按照(zhào)上(shàng)面的(de)思路(lù),我們開(kāi♣α★→)發的(de)MappingSpace也(yě)提供了(le)™π一(yī)個(gè)方案,用(yòng)于管理(lǐ)需求≠☆πδ和(hé)測試用(yòng)例,并且自(z↔↕¶ì)動化(huà)地(dì)建立它們之間(jiε©ε ān)的(de)追溯性。詳見(jiàn)下(xià)圖:
轉自(zì)汽車(chē)電(diàn)子(zǐ)與軟件(jσ←≈∑iàn)