商丘市網(wǎng)站建設(shè)公司合肥網(wǎng)站優(yōu)化軟件
這是鼎叔的第五十二篇原創(chuàng)文章。行業(yè)大牛和剛畢業(yè)的小白,都可以進(jìn)來聊聊。
歡迎關(guān)注本專欄和微信公眾號《敏捷測試轉(zhuǎn)型》,大量原創(chuàng)思考文章陸續(xù)推出。
探索式測試在敏捷測試象限中處于右上角,即面向業(yè)務(wù)且評價(jià)產(chǎn)品,這篇補(bǔ)充一下探索式測試在項(xiàng)目測試中體現(xiàn)出的敏捷價(jià)值觀,分享國外專家在探索式測試實(shí)踐的觀點(diǎn)。
注:所謂評價(jià)產(chǎn)品,就是在測試中使用系統(tǒng)并盡量重現(xiàn)最終用戶的實(shí)際體驗(yàn),這也是探索式測試為什么對用戶體驗(yàn)評測至關(guān)重要的原因。
客戶的參與,場景的創(chuàng)建
要?jiǎng)?chuàng)建準(zhǔn)確的用戶場景,真實(shí)生活中的領(lǐng)域知識是關(guān)鍵,因此應(yīng)該端到端地測試完整系統(tǒng),這時(shí),聊聊角色扮演探索式測試與肥皂劇模型 就非常適合。通過這些場景活動(dòng),能幫助成員理解更復(fù)雜的業(yè)務(wù)問題,并充分考慮用戶使用產(chǎn)品的動(dòng)機(jī)。
讓客戶盡可能多地參與迭代項(xiàng)目的效果演示,越能獲得客戶的即時(shí)反饋。有的團(tuán)隊(duì)會(huì)在演示后讓利益干系人(包括客戶)做一些探索式測試,可以幫助團(tuán)隊(duì)把功能考慮得更加細(xì)致,并基于剛發(fā)布的功能馬上思考將來要做的用戶故事。
大師對于探索式測試的定義
Cem Kaner很早就給探索式測試下了個(gè)人定義,它是一種讓所有測試人員全身心投入工作時(shí)使用的方法,即同時(shí)進(jìn)行測試的設(shè)計(jì)、執(zhí)行和學(xué)習(xí);也是一種強(qiáng)調(diào)測試人員的自由和責(zé)任的測試,是持續(xù)貫穿項(xiàng)目的平行活動(dòng)。
這個(gè)定義說明,探索式測試不是草率的,可能需要廣泛而精細(xì)化的準(zhǔn)備。其中最厲害的準(zhǔn)備,就是測試人員多年積累的知識和技能。探索式測試不是一種技術(shù),也不是指南,它讓測試活動(dòng)具備探索性的原因,是測試人員的認(rèn)知投入,能夠?qū)W習(xí)如何應(yīng)對持續(xù)變化的情況。
探索式測試人員的不同
探索式測試人員記錄產(chǎn)品預(yù)期行為的想法,并不會(huì)列出太多細(xì)節(jié),不需要太多清楚的指示。他的注意力會(huì)轉(zhuǎn)移到產(chǎn)品界面呈現(xiàn)的新問題或新風(fēng)險(xiǎn)上去。在測試執(zhí)行過程中,他會(huì)快速考慮這個(gè)問題是否干擾用戶工作流的順暢,并評估其嚴(yán)重程度。
當(dāng)探索式測試人員收到新的構(gòu)建版本時(shí),往往傾向于不再重復(fù)之前的測試,而是著重于變化,以圖發(fā)現(xiàn)過時(shí)的舊測試遺漏了什么,這種方法很有成效(考慮到底層自動(dòng)化回歸測試已經(jīng)覆蓋了重復(fù)性的各種測試場景)。
探索式測試的特點(diǎn),就是測試人員自己要掌控測試程度,基于上一步的測試結(jié)果,對自己下一步該做什么能自然地給出明智的選擇。
沒有一個(gè)有思想的人,執(zhí)行活動(dòng)時(shí)是完全照著原稿進(jìn)行。人可以快速學(xué)習(xí)新的信息,并研究其根源和影響。但機(jī)器代碼只認(rèn)識它被編程的內(nèi)容,當(dāng)奇怪的測試結(jié)果發(fā)生時(shí),代碼就可能忽略、崩潰,甚至毀壞數(shù)據(jù)。
從客戶角度出發(fā)的測試活動(dòng)確實(shí)不會(huì)是完全探索型的,探索式測試人員也要從測試目標(biāo)驅(qū)動(dòng),目標(biāo)一定程度上由客戶在項(xiàng)目早期設(shè)定。探索式測試的任務(wù)也會(huì)參考檢查清單,模型,覆蓋要求和風(fēng)險(xiǎn)清單,但是如果被這些觀點(diǎn)控制(而不僅僅是被指導(dǎo)),那測試活動(dòng)更有可能變成”計(jì)劃好的傳統(tǒng)測試“。應(yīng)該通過變化來驅(qū)動(dòng)對問題的積極搜索,而不是局限于計(jì)劃好的用例,這些用例往往只證實(shí)我們已經(jīng)知道的東西。
因此,優(yōu)秀的探索式測試人員應(yīng)該不斷地研究產(chǎn)品,和其他角色合作,而不是遵循程序結(jié)構(gòu)化的方式埋頭執(zhí)行。這也是和敏捷宣言-”個(gè)人和交互,大于過程和工具“,”強(qiáng)調(diào)客戶協(xié)作,而不是合同談判“,不謀而合。探索式測試包含了和敏捷研發(fā)同樣的價(jià)值觀。
測試中的好嗅覺
沒有刻意練習(xí)的黑盒測試人員,可能并不知道如何進(jìn)行探索式測試。來自探索過程中的記錄,也可以幫助人員能重現(xiàn)問題,以便于進(jìn)一步研究。
怎樣修煉測試過程中的好嗅覺?
基于對系統(tǒng)的理解,結(jié)合批判性思維,定義好測程,可以在短時(shí)間內(nèi)運(yùn)行的實(shí)驗(yàn)性測試,最后給出過程中的反饋。
分析風(fēng)險(xiǎn),即用戶認(rèn)為什么是錯(cuò)誤的,讓人不高興的。
對應(yīng)的,用戶心里強(qiáng)烈希望功能行為是什么樣子的,并測試它。
基于過去經(jīng)驗(yàn),思考相似系統(tǒng)是如何失敗/成功的,并探索它。
和開發(fā)交談,發(fā)現(xiàn)什么是對我們很重要的。
讓自動(dòng)化回歸測試套件做它擅長的重復(fù)性任務(wù),讓敏捷的人類做擅長的思考和處理各種意料之外吧!
基于測程(會(huì)話)的測試管理
探索式測試是在“上下文驅(qū)動(dòng)測試流派”出現(xiàn)后才流行起來的?;趕ession的測試管理才能保障探索式測試可監(jiān)督,可度量,也讓探索式測試變成一種可以高度訓(xùn)練的習(xí)得性能力,而不是一個(gè)低門檻的自由測試。
Session,有些書里翻譯成測程,有些翻譯成會(huì)話,鼎叔的專題里默認(rèn)用第一種翻譯。
在測程結(jié)束后,我們會(huì)分析測程中的三類任務(wù)的耗時(shí),以便知道哪個(gè)環(huán)節(jié)花費(fèi)了更多時(shí)間:測試設(shè)計(jì)&執(zhí)行,缺陷分析報(bào)告,創(chuàng)建章程。
探索式測試和自動(dòng)化測試的結(jié)合
一個(gè)理念(來自Jonathan Kohl),是用交互式的自動(dòng)化測試來輔助探索式測試,比如自動(dòng)化地創(chuàng)建測試,產(chǎn)生數(shù)據(jù),完成重復(fù)性任務(wù),將工作流程自動(dòng)推進(jìn)到探索式測試想開始的地方?;谧詣?dòng)化防護(hù)的成果之上,再探索更多隱蔽的遺漏缺陷。
我們還可以不斷修改自動(dòng)化測試套件,觀察它的執(zhí)行結(jié)果會(huì)發(fā)生什么不同(這類似于變異測試)。
優(yōu)秀探索式測試人員的品質(zhì)
能系統(tǒng)地追蹤軟件的壞味道。
通過使用預(yù)言(基于問題的原則和機(jī)制)來認(rèn)知問題。
善于在時(shí)間盒內(nèi)經(jīng)常支線漫游探索-side trip
思考專家用戶和新手用戶會(huì)如何使用產(chǎn)品
和業(yè)務(wù)領(lǐng)域?qū)<?#xff0c;或者技術(shù)領(lǐng)域?qū)<乙黄鹛剿?#xff0c;還可以邀請可用性(用戶交互)專家一起來探索
檢查有競爭關(guān)系的軟件,獲得啟發(fā)(競品軟件啟發(fā)探索法)
角色扮演測試法的啟發(fā)
從角色扮演測試高手那學(xué)到的一些高級做法:
想象用戶的一天(這個(gè)方法也可以用于用戶故事地圖的腦爆會(huì),這個(gè)將來會(huì)介紹)
使用虛構(gòu)的歷史名人或社會(huì)名人,想象他們?nèi)绾问褂梦覀兊能浖?/p>
想象一個(gè)想方設(shè)法作弊的角色,或者黑客角色
想象購買服務(wù)的公司老板角色
用戶圖形界面以外的探索
不要只依賴于用戶界面測試,也可以在其他方向進(jìn)行整個(gè)系統(tǒng)的探索測試,比如:
探索API測試:當(dāng)多個(gè)參數(shù)一起發(fā)生作用時(shí),提供許多可能的變化(模型),有時(shí)參數(shù)是可選的。另一種場景是改變API調(diào)用的順序,從而可能導(dǎo)致結(jié)果的改變,暴露用戶界面上無法發(fā)現(xiàn)的問題。還有一個(gè)好處,API接口可以在軟件生命周期的早期進(jìn)行開發(fā),這意味著對它的探索可以在早期進(jìn)行。為此,我們可以和開發(fā)人員合作實(shí)現(xiàn)易用的API測試套件。
WEB服務(wù)的探索:在測試計(jì)劃中預(yù)留對用戶的服務(wù)SLA的探索式測試(SLA即服務(wù)水平協(xié)議),模仿用戶在訪問Web服務(wù)的各種可能方式。
文檔質(zhì)量的探索:從之前的缺陷大掃除活動(dòng)來看,很多開發(fā)及測試人員對于要交付給用戶的文檔缺乏足夠的檢查,很容易探索出顯而易見的問題。因?yàn)槲臋n內(nèi)容的主觀成分很多,自動(dòng)化完成相關(guān)測試是很困難的。我們鼓勵(lì)結(jié)對合作探索其他人員負(fù)責(zé)的文檔,也注意要檢查幫助文字的鏈接結(jié)果。
最終文檔的質(zhì)量對于用戶體驗(yàn)是很有價(jià)值的。
報(bào)告的探索:有一類特殊文檔,就是報(bào)告,對于客戶也許很重要。因?yàn)閳?bào)告功能經(jīng)常放到最后實(shí)現(xiàn),往往質(zhì)量糟糕。基于用戶評價(jià)的視角,報(bào)告檢查應(yīng)該滿足簡單、可讀、易于理解的質(zhì)量要求。對于報(bào)告的測試,最大的難點(diǎn)不是格式,而是獲取正確的數(shù)據(jù),有時(shí)建議使用生產(chǎn)數(shù)據(jù)來測試不同的報(bào)告版本結(jié)果。
探索式測試的輔助工具
短迭代意味著很難有時(shí)間進(jìn)行充分的探索式測試,我們看看有哪些輔助工具能簡化探索式測試步驟,并為其他重要的視覺測試留出寶貴時(shí)間。
測試設(shè)置工具:我們通常發(fā)現(xiàn)最耗時(shí)間的測試任務(wù)就是各種設(shè)置,以及正確的初始化。這種操作要進(jìn)行多次,是使用自動(dòng)化的好機(jī)會(huì)。這種工具要能接受不同的輸入,一遍遍運(yùn)行測試場景。通過模仿終端用戶的使用方式驅(qū)動(dòng)界面的工具,能讓測試結(jié)果更有信心。
生成測試數(shù)據(jù):這個(gè)也不用說,我們探索各種類型的輸入數(shù)據(jù)測試時(shí),這種工具太重要了,可以節(jié)約大量成本。
監(jiān)控工具:把探索式測試中無法在屏幕上展示的錯(cuò)誤信息,能夠單獨(dú)告警展示出來,并能夠分析具體錯(cuò)誤來源,讓開發(fā)也能直接快速處理。
模擬器:為系統(tǒng)生成具有關(guān)鍵特征行為/類似真實(shí)數(shù)據(jù)的工具,還可以不停得往系統(tǒng)中輸入數(shù)據(jù),用于探索正常情況下難以出現(xiàn)的極端錯(cuò)誤條件,同時(shí)縮短這種邊界測試的人工準(zhǔn)備時(shí)間。
仿真器:即復(fù)制一個(gè)與被測系統(tǒng)的行為完全一致的虛擬新系統(tǒng),主要用在被測系統(tǒng)和外部系統(tǒng)有大量接口聯(lián)調(diào)的項(xiàng)目,有過這種經(jīng)歷的人都懂。
仿真器可以保持測試和編碼一致性,讓測試和開發(fā)保持進(jìn)度的一致,避免互相頻繁等待對方的更新。仿真器還可以幫助客戶深入了解要交付的系統(tǒng),以便更好地合作,持續(xù)改進(jìn)項(xiàng)目。
最后一句總結(jié):
即使在測試驅(qū)動(dòng)開發(fā)實(shí)踐上非常先進(jìn)的團(tuán)隊(duì),也無法避免期望的軟件行為和其他系統(tǒng)交互時(shí)的測試遺漏,強(qiáng)大的面向業(yè)務(wù)的探索式測試活動(dòng)能夠更好地評價(jià)產(chǎn)品,為產(chǎn)品注入價(jià)值。