滄海一聲笑,移動應用的CRASH原因我找到! --記最新款數字化測試“星雲測試“的使用攻略

滄海一聲笑,移動應用的CRASH原因我找到!

--記最新款數字化測試“星雲測試“的使用攻略

 

世界進步那麼快,很多新鮮的點子層出不窮,於是我們創業,我們做最酷的手機應用,做最轟炸的應用推廣。不加國際友人,僅咱泱泱大中華14億人口,智能手機用戶目前就已經超過5億人,並還在繼續瘋長中!據說到2015年1月,僅我們中國的主要應用商店APP應用累計超過400萬個。感覺像我們一樣優秀的IT天才們的春天已經到來!就憑咱的腦子和實力,從各種大衆臉的App應用中脫穎而出那是必然的!我們肯定是笑到最後的那個團隊!

 

但是,最近我們澎湃的理想差點兒就被現實擊碎:我們耗盡心血開發的應用、精妙的設計思路,居然被閃退、崩潰等看似低級的錯誤卡住了喉嚨!看着銀行卡中越耗越少的資金,我們心如刀割。

 

儘管我們有思想準備:Crash很正常,62%的應用都有這樣的毛病,Bala,Bala……但我們也知道,如果Crash發生在首次啓動,21%的用戶會立即卸載;Crash在使用過程中發生,70%的用戶會給應用差評,然後卸載。難道我們偉大的理想和情懷就真的要止步於殘忍的現實了嗎?我們就活該舉手投降了嗎?No,No,No,超級無敵研發攻城獅NEO的光榮稱號不允許我這麼做!我要做的是:徹查BUG究竟藏身何處,然後拉出來千刀萬剮,然後把它槍斃,然後和團隊一起昂首進入APP熱門下載排行榜!可是,世界有沒有一款稱心如意的軟件測試工具,能快點幫助我們直接復現崩潰時刻的執行邏輯路徑的詳細信息?我們沒日沒夜的在國內外的測試工具庫中找尋,跟同行打聽。

在前天風大雨大極其神祕的夜晚,我假裝鎮靜卻又心急如焚的和夥伴們討論業務方案的時候,有如神助般的點到了一個網站:星雲測試。那個網站貌似剛上線不久,好幾個模塊都在敬請期待,網址也有點怪:www.teststars.cc,Slogan巨大而醒目:“星雲測試 開創數字化測試新旅程”。啥米?什麼是“數字化測試”?!“實現代碼和測試用例的雙向追溯“,“數字化、可視化測試過程”,看起來很牛叉的樣子!我,做爲一位更牛叉的、超級的、無所不能的IT高手,需要了解和批准一下。IT界的最新信息,我不先知道,太反常了!不過,還好他們好像還不算最正式的上線,平復了我傲嬌的小火苗。

 

眼光一瞥,看到免費下載個人高級版,哈哈,甚合朕意!可以免費下載!它邊上有幾行呆萌的小字說明(勸君拿放大鏡來看):“實現軟件測試過程與結果的全數字記錄與分析,快速的崩潰捕捉和代碼執行路徑分析“。朕心頭萬馬奔騰!立即點開,下載頁面資料還挺全:使用說明、部署說明、視頻啥的,還挺全的。火速註冊,立馬開用!急我所急,天助我也!

 

感謝我的上帝之手!真的是不用則已,一用驚破天!這個免費的東東功能實在太強大了,它不僅在系統層面進行一些缺陷現場數據的蒐集,還居然能深入到代碼內部,很直接的直接定位問題!!一下子就把我們的致命傷-Crash點的最後50個邏輯塊,條件、分支等就給我找出來了。太讓我震驚了!令人歎爲觀止的是:它居然還真的支持測試用例到代碼執行邏輯的追溯,就是說,它把一個測試用例的整個運行期間的對應的代碼邏輯情況都回放出來了。簡直是一個超能全景Debug神器!另外,兄弟們,重點是:它比Debug更強大:Debug需要單步運行,通常僅僅顯示當前狀態而不能很好地記錄歷史運行數據,星測上的這個神器是完整的Debug調試鏈的完整展示!

神啊!太強了!!朕有天助啊,吉人自有天象啊!!我們的項目可算找着慈悲的上帝打開的另一扇窗了!爲了表達我的激動之情,也爲了由衷的感謝這個神器,我,一個超級的、絕頂聰明的研發攻城獅必須做一個攻略,給大家分享一下,以示感謝與敬意!好貼不沉底啊!

(TIPS:由於俺們偉大的應用暫時不便公開,我索性就用一個開源程序來給大家做一個簡要的舉栗子,它來自於網絡上開心網移動端的一個版本的代碼)

 

我在其代碼內部人爲植入了一個缺陷,如下:

修改內容:

src/com/kaixin/android/activity/CheckInActivity.java

修改前:

wKiom1V6jgzQ8homAAL8TC7U-3g788.jpg

修改後:

wKioL1V6j8yi4bvNAANgn12r-ak299.jpg

 

大家都知道,對源碼的修改相當於引入了一個越界訪問的缺陷,下面我們看看這個神一樣的數字化測試工具,是如何在假設不知道這個缺陷的位置和原因的情況下,直接捕獲和分析BUG的。

 

第一步:通過工具編譯植入缺陷的程序,安裝進入手機,打開示波器,監控運行。

第二步:進入Home界面後,點擊左下角的紅色羽毛按鍵,彈出一個弧形菜單,點擊最上側位置按鈕,程序崩潰。然後停止TT示波器的蒐集,回到TT的用例-代碼快照視圖。

第三步:查看最後錯誤的50塊,點擊最後一塊執行:

wKioL1V6j9iCXVkVAAKDYsofD68886.jpg

分析:return語句通常不會導致程序崩潰,因爲其本身並沒有任何因此異常的計算(此語句其實也未實際運行,問了下星雲1號技術支持,給出的解釋是因爲前面程序出了異常,TT目前的一些記錄運行軌跡的信息和機制會認爲return最後運行了,未來的版本會針對該問題進行修復)。而且顯示點擊倒數第二塊爲:

wKioL1V6j-jDjZp-AAKa0-jgNyw350.jpg

此爲隱藏塊,不會導致程序崩潰。點擊倒數第三塊:

wKiom1V6jlDCJJZCAAKisW_8U5M353.jpg

此爲隱藏塊,不會導致程序錯誤。點擊倒數第四塊:

wKiom1V6jnGjYS5ZAALqnHRpPCk020.jpg

此時可能存在問題,因爲正常情況塊664必然會執行。點擊倒數第五塊:

wKioL1V6kCWiKKWgAALd3g8aET8002.jpg

所以出錯可能這一句:

result= mKXApplication.mMyLocationResults.get(position);

分析:大家仔細觀察這句代碼,我們可以發現,在這個頁面position對應的mKXApplication.mMyLocationResults界面的position-1位置,找到錯誤。

wKiom1V6jo_joyCcAAdEyNZbw8Q685.jpg

然後我們在看下最後50個條件信息,最後一個條件可以清晰的看到,出錯位置的判斷語句運行的結果爲true,說明在缺陷發生的最後一刻進入了這個條件,而條件裏面的代碼正是我們在崩潰塊分析結果裏面的:

result =mKXApplication.mMyLocationResults.get(position);

結論:說明星測上的神器給我們的整個分析是準確無誤的。

 

別的也不多說,反正經過我的實際使用,神器還有更多令人驚訝的表現,我還在慢慢學習,大家自己也可以用起來,咱們一起慢慢體會。那個星雲測試網站上有很多使用指南,你們可以下載去看看。好東西,總是需要大家去頂,我們頂了,人多了,他們團隊才更有信心和能力去做更多的事兒,咱獅子們可不希望這樣優秀的團隊因爲沒錢散了,工具也沒辦法升級和維護了,儘管神器已經很強大了。兄弟們,將心比心,可以想像這麼複雜、強大的神器研發起來是多麼的不容易!跟他們的“星雲1號客服“聊,他們已經堅持三年了!真是讓人肅然起敬!兄弟們,咱們一定要支持!!!因爲,就連國外的一流軟件測試工具在他們面前也弱爆了!!

 

我太激動了,我得平靜一下我激動的小心臟。他們的網站:www.teststars.cc,根據我的經驗,流量上去了,註冊量上去了,使用量上去了,他們的機會就來了。咱們也就能一直享受這偉大的、免費的禮物了!再次向他們天才的研發團隊致以最崇高的敬禮!

 

PS:等咱有了錢,得用他們的企業版試試,看起來,那更令人心馳神往啊!

 

攻略撰寫人:一位天才的、壁咚的超級研發攻城獅:NEO


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章