機智的防爬蟲標識
原創(chuàng)博客地址:http://www.cnblogs.com/alexkn/p/7095855.html
博客求關注: http://www.cnblogs.com/alexkn

1.啟動時間測試常用方案介紹

如何精確測試啟動時間,其實這個問題可大可小,主要需要看團隊對啟動時間的測試精度要求,當啟動時間測試誤差需要精確到小幾十毫秒時,很多問題都會暴露,因為其實目前很難有一種方式去評估數(shù)據(jù)的有效性。當前設備狀態(tài),CPU溫度,內存,系統(tǒng)GC,研發(fā)人員的代碼以及線程模式等,都有可能導致啟動時間波動增大。目前已知的啟動時間測試方案有幾種,可以例舉一下:

  • 插樁法:通過在整個啟動的生命周期打日志,然后通過解析日志來得到本次啟動時間

  • 錄屏分幀:包括高速攝像頭或者其他客戶端錄屏/截圖,通過錄制啟動時間的整個過程,通過做分幀處理,來得到起始結束位置

但其實這些方法都有各自的問題,插樁引入的測試誤差本身很小,但因為系統(tǒng)誤差的關系,會導致本身波動會很大,而錄屏分幀,雖然可以用于競品分析,但測試誤差會比較大,目前工業(yè)級的攝像頭,也只能到8ms/幀率,一般高速攝像頭的也會引入33ms的系統(tǒng)誤差,此外,如果在android端錄屏,可能會導致啟動時間波動更加增大,因此如果單純從測試方法上來改善啟動時間測試,效果肯定不會好。因為我們需要明白,系統(tǒng)隨機誤差的引入,所以啟動時間的測試數(shù)據(jù)是一個概率問題,而不是一個可以100%一定出現(xiàn)在某個區(qū)域的問題(有時間寫一篇統(tǒng)計學跟誤差分析的文章)。
其實自然而然這就引申出兩個問題:

  • 問題定位方法的改進

  • 誤差需要用科學的方法去做估算

當然這篇文章只講第一個問題,也就是怎么去定位啟動時間問題,下面進入正題。

2.啟動時間問題定位方案

在這里要推薦的是Traceview。Traceview的介紹可以看這篇文章:https://testerhome.com/topics/5049

因為系統(tǒng)隨機誤差比較大,因此單獨看某一個生命周期中的耗時,并不能幫助定位問題,而Traceview可以幫我們查看到每一個線程的調用棧以及方法的CPU時間或者堆棧累加時間。往往可以通過Traceview來做問題定位,但目前有一些限制: