物聯(lián)網(wǎng)產(chǎn)品測(cè)試框架——物聯(lián)網(wǎng)測(cè)試地圖
物聯(lián)網(wǎng)的出現(xiàn),給測(cè)試帶來(lái)了很多有意思的挑戰(zhàn),使得眾多QA開始重新思考傳統(tǒng)的測(cè)試過程。
例如,我最近測(cè)試了一個(gè)產(chǎn)品,在這個(gè)產(chǎn)品中的移動(dòng)APP會(huì)跟連接的機(jī)器產(chǎn)生會(huì)話。這兩個(gè)設(shè)備各種各樣的狀態(tài)給測(cè)試場(chǎng)景的設(shè)計(jì)帶來(lái)了特別大的挑戰(zhàn)。下面給大家介紹一個(gè)很有用的物聯(lián)網(wǎng)產(chǎn)品測(cè)試框架——物聯(lián)網(wǎng)測(cè)試地圖,它可以幫助我們管理物聯(lián)網(wǎng)設(shè)備多種排列的復(fù)雜狀態(tài)。
物聯(lián)網(wǎng)測(cè)試因素
當(dāng)我們測(cè)試簡(jiǎn)單的web應(yīng)用時(shí),通常要考慮的狀態(tài)有:
- 服務(wù)器宕機(jī)
- HTTP請(qǐng)求超時(shí)
- 網(wǎng)速慢
- 授權(quán)和認(rèn)證錯(cuò)誤
測(cè)試任何互聯(lián)網(wǎng)應(yīng)用的時(shí)候,需要警惕這四種狀態(tài)。對(duì)于移動(dòng)應(yīng)用,操作的是移動(dòng)環(huán)境,需要關(guān)注額外的幾種情況:
- 離線模式
- 在線模式
- 殺掉Activity
- 后臺(tái)行為
- 語(yǔ)言
- 地理位置
我們?cè)倏?ldquo;連接的機(jī)器”所帶來(lái)的狀態(tài)多樣性,通常還有:
- 機(jī)器WiFi斷開
- 機(jī)器WiFi連接
- 機(jī)器繁忙
- 機(jī)器休眠
這意味著即使只有上述給定的狀態(tài)集,整個(gè)系統(tǒng)在任何時(shí)間點(diǎn)上可能會(huì)有96(4x6x4)種狀態(tài)。
由于系統(tǒng)中狀態(tài)轉(zhuǎn)換會(huì)引入附加的約束,這些狀態(tài)都不能當(dāng)做獨(dú)立的實(shí)體。例如,狀態(tài)從“離線”變成“在線”很可能觸發(fā)一系列的事件。
上述因素還僅僅是冰山一角。隨著對(duì)規(guī)范的深入了解,把不同的狀態(tài)跟邏輯場(chǎng)景結(jié)合起來(lái)將會(huì)更加的復(fù)雜。
對(duì)于靜態(tài)系統(tǒng)的可變數(shù)據(jù)集,已有的web測(cè)試技術(shù)可以很好的用來(lái)抽取測(cè)試場(chǎng)景,比如all pairs(開源的配對(duì)測(cè)試工具)、等價(jià)類劃分、邊界值分析法等。這些技術(shù)通過淘汰的邏輯來(lái)優(yōu)化測(cè)試數(shù)據(jù)集。
例如,all pairs技術(shù)會(huì)淘汰重復(fù)的數(shù)據(jù)配對(duì)組合。但是,對(duì)系統(tǒng)的可變狀態(tài)設(shè)計(jì)測(cè)試場(chǎng)景時(shí),這些技術(shù)是不可靠的,廢棄的系統(tǒng)狀態(tài)會(huì)使得系統(tǒng)通訊不暢。當(dāng)然,這些技術(shù)對(duì)于物聯(lián)網(wǎng)系統(tǒng)中的單個(gè)單元還是很適用的。
因此,非常有必要搞一個(gè)物聯(lián)網(wǎng)測(cè)試地圖。
可視化地圖
大家肯定都在地理課上看過地圖。但我這里所說的地圖是針對(duì)測(cè)試場(chǎng)景的,它列出所有潛在的系統(tǒng)因素,在測(cè)試某個(gè)特性時(shí)可以從中抽取必要的測(cè)試場(chǎng)景。
產(chǎn)品的每個(gè)系統(tǒng)的n種狀態(tài)在同一個(gè)可轉(zhuǎn)動(dòng)的圓環(huán)中列出,邏輯上相鄰的狀態(tài)在環(huán)中相互挨著。非功能需求(NFR)在測(cè)試復(fù)雜集成的時(shí)候很容易被忽略掉,于是把它們?cè)谝粋€(gè)環(huán)中單獨(dú)列出。
下圖就是我所說的物聯(lián)網(wǎng)測(cè)試地圖:
下面以一個(gè)例子介紹地圖的使用場(chǎng)景,該例子僅涉及移動(dòng)設(shè)備和機(jī)器交互部分,需要關(guān)注的環(huán)是設(shè)備、機(jī)器和網(wǎng)絡(luò)。
把移動(dòng)設(shè)備和機(jī)器固定在WiFi連接的狀態(tài),轉(zhuǎn)動(dòng)網(wǎng)絡(luò)環(huán),可以得到下面這些場(chǎng)景:
- 未授權(quán)用戶嘗試訪問機(jī)器會(huì)在App上觸發(fā)“訪問被拒絕”的錯(cuò)誤消息
- 服務(wù)器宕機(jī)和服務(wù)器錯(cuò)誤會(huì)觸發(fā)相應(yīng)的業(yè)務(wù)錯(cuò)誤消息——“程序出錯(cuò),請(qǐng)稍后重試”
- 響應(yīng)超時(shí)可能有兩種情形:重發(fā)同一個(gè)請(qǐng)求并顯示“正在加載”圖示,或者顯示上面那樣相似的錯(cuò)誤消息
- 非法請(qǐng)求會(huì)觸發(fā)消息“請(qǐng)更新你的App”
繼續(xù)保持移動(dòng)設(shè)備的WiFi為連接狀態(tài),轉(zhuǎn)動(dòng)機(jī)器環(huán):
- 當(dāng)機(jī)器是離線模式的時(shí)候,App應(yīng)該顯示“請(qǐng)檢查機(jī)器的網(wǎng)絡(luò)連接”
- 當(dāng)機(jī)器繁忙的時(shí)候,彈出警告“機(jī)器繁忙,無(wú)法完成請(qǐng)求”
- 當(dāng)機(jī)器休眠或者在另一個(gè)網(wǎng)絡(luò)上的時(shí)候,應(yīng)該顯示“沒找到機(jī)器”等類似的消息
- 然后,機(jī)器調(diào)到正確的網(wǎng)絡(luò),應(yīng)該恢復(fù)移動(dòng)設(shè)備和機(jī)器的連接
切換機(jī)器環(huán)為WiFi連接,轉(zhuǎn)動(dòng)移動(dòng)設(shè)備環(huán):
- 當(dāng)移動(dòng)設(shè)備離線時(shí),應(yīng)該彈出對(duì)應(yīng)的消息或者禁掉操作按鈕
- 當(dāng)移動(dòng)設(shè)備恢復(fù)在線模式時(shí),App應(yīng)該發(fā)送相應(yīng)的請(qǐng)求去連接機(jī)器
- 當(dāng)移動(dòng)設(shè)備的網(wǎng)絡(luò)從WiFi切換到3G,應(yīng)該有什么樣的行為?
- 當(dāng)用戶正在試圖連接物聯(lián)網(wǎng)設(shè)備的時(shí)候突然接到電話,將App置于后臺(tái)運(yùn)行,這時(shí)候還能收到完整的請(qǐng)求還是需要從頭開始發(fā)送請(qǐng)求?
- 安卓設(shè)備殺掉一個(gè)在后臺(tái)運(yùn)行了一段時(shí)間的App,用戶的***屏幕狀態(tài)還會(huì)保存嗎?
- 有本地化需求的App要在每個(gè)場(chǎng)景層面進(jìn)行驗(yàn)證
就這樣,多次旋轉(zhuǎn)地圖可以擴(kuò)展產(chǎn)生多個(gè)場(chǎng)景。盡管有些場(chǎng)景可能不適合當(dāng)前的特性,有些甚至跟業(yè)務(wù)需求無(wú)關(guān),這個(gè)測(cè)試地圖還是非常詳盡的。
在實(shí)踐層面,對(duì)于有多個(gè)QA在測(cè)試同一個(gè)物聯(lián)網(wǎng)產(chǎn)品的團(tuán)隊(duì),地圖可以作為大家共同參考的手冊(cè)。這個(gè)地圖把工具、設(shè)備、場(chǎng)景和協(xié)議的排列以易于理解的方式呈現(xiàn)出來(lái),覆蓋了測(cè)試場(chǎng)景設(shè)計(jì)這個(gè)獨(dú)特的需求,是一種非常高效的合作方式。
【本文是51CTO專欄作者“ThoughtWorks”的原創(chuàng)稿件,微信公眾號(hào):思特沃克,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】