qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          測試金字塔新解之移動無線應(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ù)場景。這類情況對于測試工程師而言尤其的痛苦,那么自然我們就可以跳過界面層來做功能代碼的接口測試。
            接著我們來說下Service層。與傳統(tǒng)金字塔描述的Service不同的是,移動互聯(lián)網(wǎng)的應(yīng)用同時存在“Service”和“Inner Service”(感謝晉恒溫提供這樣一個我覺得很不錯的新詞)這里的Inner Service主要指的是Android基礎(chǔ)組建里面也有一個叫Service
            這里提到Inner Service這個概念就是為了和服務(wù)器端的Service區(qū)別開來。在這個金字塔中Service被虛線所區(qū)分開,原因有兩個:
            Service不再單純的指后臺服務(wù)器的Service
            不是所有應(yīng)用都有Inner Service或者Service
            其中后臺的服務(wù)Service測試方法已經(jīng)相對成熟,參考的資料也相對多,而Inner Service的測試相比困難很多,除了監(jiān)聽Service是否正確啟動以及反饋之外,還有很多測試細節(jié)可挖掘。
            最后就是共同的Unit了。其實我們撥開金字塔的上面幾層,到Unit test的時候就已經(jīng)和應(yīng)用所在的平臺的特性關(guān)系不大了。Android使用Junit Test,iOS使用Xcode自帶的OCunit,WP使用Windows Phone Toolkit Test Framework等。除了編寫測試用例的語言不同以外,其用例的設(shè)計方法等已經(jīng)不再去考慮Android、iOS、WP等系統(tǒng)架構(gòu)或其他特性上的區(qū)別了。
            我個人是認為移動無線應(yīng)用的金字塔理念不僅僅適用于功能測試,更多的也適用于壓力、性能、自動化甚至安全等測試中。當(dāng)我們需要加大測試顆粒度的時候,那么借助分層的理念往往能夠讓我們豁然開朗,找到新的突破口。

          posted on 2014-04-08 10:37 順其自然EVO 閱讀(151) 評論(0)  編輯  收藏 所屬分類: android

          <2014年4月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 册亨县| 遂川县| 孝义市| 桓台县| 兰州市| 漯河市| 东台市| 桓仁| 东莞市| 嘉荫县| 永德县| 临泽县| 承德县| 瑞丽市| 林芝县| 澎湖县| 抚松县| 绍兴市| 中阳县| 偏关县| 苗栗市| 赞皇县| 惠水县| 开远市| 广饶县| 大城县| 无极县| 县级市| 申扎县| 上杭县| 和田市| 洛南县| 禹州市| 石嘴山市| 文山县| 报价| 宿松县| 郯城县| 华坪县| 三原县| 云林县|