測試金字塔新解之移動無線應(yīng)用測試
在看過吳穹對2014年測試的展望之后真的對于移動無線測試的未來大有信心。在文章中再次看到了熟悉的“測試金字塔”,該金字塔是分層測試思想的重要鑰匙。我自己是移動互聯(lián)網(wǎng)出身的測試,所以突發(fā)奇想從移動無線應(yīng)用的測試角度重新來審視了下該金字塔并做了擴展,希望對于大家有一定的幫助。
首先我們先來看下經(jīng)典金字塔,如下圖所示:
這對于傳統(tǒng)互聯(lián)網(wǎng)的測試而言非常清晰的一個層次結(jié)構(gòu),但我相信對于很多移動互聯(lián)網(wǎng)的同學(xué)們而言也許就多少有些迷茫,這不單單是因為技術(shù)上的實現(xiàn)不同于以前,也有些是名詞定義問題。經(jīng)過我思考之后,發(fā)現(xiàn)發(fā)現(xiàn)移動互聯(lián)網(wǎng)的應(yīng)用測試角度出發(fā)可以從該圖上拆分出很多的東西,并且圖還有些小小的變化,如下圖所示:
單從這個圖上來看的話的確是比較迷惑的,那么我們接下來就一層一層來剝,以下內(nèi)容很黃很暴力,大家做好準(zhǔn)備了嗎?
我們先來說第一層:UI層。UI層顧名思義就是用戶看到產(chǎn)品時候所長的樣子,從技術(shù)實現(xiàn)角度而言,那就是產(chǎn)品的一層皮。那么UI層在移動無線應(yīng)用的測試中分成哪些主要的部分呢?
1.用戶體驗
2.控件顯示
3.功能交互
4.代碼接口
5.用戶體驗
移動互聯(lián)網(wǎng)應(yīng)用是一款產(chǎn)品,相對其他類型的產(chǎn)品而言,其用戶體驗已經(jīng)到達了舉足輕重的地步,在我的新書《大話測試——移動互聯(lián)網(wǎng)應(yīng)用測試指南》中有單獨闡述用戶體驗的一個章節(jié),有興趣的朋友可以等出版之后仔細閱讀。
現(xiàn)在各個公司也出現(xiàn)了大量的和用戶體驗相關(guān)的崗位,比如“產(chǎn)品體驗師”、“產(chǎn)品設(shè)計師”、“交互設(shè)計師”等,也越來越說明著用戶體驗對于移動無線應(yīng)用的重要性。
很多人覺得用戶體驗好就是一定要畫面優(yōu)美,交互酷炫,界面上沒有出現(xiàn)明顯的瑕疵就可以了,雖然沒有錯,但這些僅僅是用戶體驗的表面一層。我們來看下以下的幾個例子。還是那句老話,也許你覺得他們的成功或失敗與用戶體驗關(guān)系不大,但其實從移動無線應(yīng)用能夠成功的情況來看,用戶量、用戶黏性才是最主要的,這些歸根結(jié)底還是用戶體驗。在我的書中著實已經(jīng)吐槽了非常多的應(yīng)用了,在這里就再吐兩個大家都認識的、知名度很高的應(yīng)用。我們使用無線應(yīng)用的時候難免碰見網(wǎng)絡(luò)不好的情況,這也是現(xiàn)在大量測試工程師正頭疼的事情(幸好fiddler和Charles能夠為我們解決這個問題),但我相信如果我們在網(wǎng)絡(luò)不太好,卻看到以下界面顯示的時候,肯定恨不得想摔手機。

也許我不說,大家也能夠猜得出來是哪家的應(yīng)用了吧。我?guī)缀趺看卧诓宛^想要使用一些優(yōu)惠券的時候就會看到這個界面,恨之入骨。難道網(wǎng)絡(luò)慢彈出個提示就那么難嗎?難道為用戶考慮一下就那么難嗎?你能夠告訴我“createorderxxx”這串外星文用戶真的認識是什么嗎?所謂用戶體驗好,就是要讓用戶覺得應(yīng)用在說“人話”,而不是“火星語”。你采取如下方法都比現(xiàn)在的做法好:
可以選擇在用戶點擊的時候就向服務(wù)器做請求,此時并不跳轉(zhuǎn)界面,短時間超時之后給出一個“網(wǎng)絡(luò)差”的提示
可以選擇進入這個界面,但不要給用戶看到“火星文”,短期超時之后再給出一個“網(wǎng)絡(luò)差”的提示,并自動返回上一頁
說著說著我的火氣就上來了,不過還有更可氣的了。我們來看下面這個應(yīng)用的行為。
碩大的logo,這個是什么場景呢?現(xiàn)在支付寶和“喜士多”、“7-11”等多家便利店合作了,不但方便了大家的購物,同時也減少了零錢和假幣的流通,的確是個大好事。便利店網(wǎng)絡(luò)不好的情況也尤其多,當(dāng)我選擇好了很多商品,最后拿出支付寶,看到這個鳥樣,我心里真的千萬只草泥馬奔過。但此時想想沒有關(guān)系阿,我作為iOS高大上的用戶可以殺進程,于是我熟練的殺掉支付寶的進程再次打開,事實證明我無法改變這個鳥樣。我真的很焦慮,我知道支付寶要聯(lián)網(wǎng),但它不是一個網(wǎng)游吧,為什么沒有網(wǎng)你就不能讓我打開呢?我真的覺得讓我看到一個進入的界面或者設(shè)置一個短時間就超時都比我看著一坨黑色上面有個“菊花”強數(shù)百倍吧,于是,我的手機真的被我摔壞了。
控件顯示 現(xiàn)在往往很多測試說測UI了就是拿過來看看界面顯示對不對,所謂UI Automation也就是模擬用戶的操作,但是真的僅僅只是如此嗎?Android的應(yīng)用界面一切都是以View來構(gòu)成:
請問有多少工程師關(guān)心過這些所謂的界面上的控件顯示的到底對不對呢?像素值和比例與需求一致嗎?我們一般可以通過三步來解決這個的問題。
A. 先驗證每個界面顯示之后控件是否存在
B. 再驗證這些控件具體的位置、大是否正確
C. 最后驗證整體顯示是否正確
其中B可以使用如下所示的這個類來驗證:
而C的話我更偏向于自己去寫,而不是用MonkeyRunner自帶的圖片對比方法,其精準(zhǔn)度不高,很難判斷圖片是否真的有細小的差異性,我自己更偏愛用PIL庫。iOS的話Xcode也自帶了Inspector可做相關(guān)驗證。
功能交互
手動測試,自動化的話可用框架太多。Robotium,Instrumentation,Appium,這里不多做解釋。
代碼接口
某些應(yīng)用往往邏輯很復(fù)雜,但界面卻很簡單明了。其復(fù)雜程度體現(xiàn)在它的邏輯和數(shù)據(jù)場景。這類情況對于測試工程師而言尤其的痛苦,那么自然我們就可以跳過界面層來做功能代碼的接口測試。
posted on 2014-04-08 10:37 順其自然EVO 閱讀(151) 評論(0) 編輯 收藏 所屬分類: android