機(jī)智的防爬蟲標(biāo)識(shí)
原創(chuàng)博客地址:http://www.cnblogs.com/alexkn/p/7095855.html
博客求關(guān)注: http://www.cnblogs.com/alexkn
1.啟動(dòng)時(shí)間測(cè)試常用方案介紹
如何精確測(cè)試啟動(dòng)時(shí)間,其實(shí)這個(gè)問題可大可小,主要需要看團(tuán)隊(duì)對(duì)啟動(dòng)時(shí)間的測(cè)試精度要求,當(dāng)啟動(dòng)時(shí)間測(cè)試誤差需要精確到小幾十毫秒時(shí),很多問題都會(huì)暴露,因?yàn)槠鋵?shí)目前很難有一種方式去評(píng)估數(shù)據(jù)的有效性。當(dāng)前設(shè)備狀態(tài),CPU溫度,內(nèi)存,系統(tǒng)GC,研發(fā)人員的代碼以及線程模式等,都有可能導(dǎo)致啟動(dòng)時(shí)間波動(dòng)增大。目前已知的啟動(dòng)時(shí)間測(cè)試方案有幾種,可以例舉一下:
插樁法:通過在整個(gè)啟動(dòng)的生命周期打日志,然后通過解析日志來得到本次啟動(dòng)時(shí)間
錄屏分幀:包括高速攝像頭或者其他客戶端錄屏/截圖,通過錄制啟動(dòng)時(shí)間的整個(gè)過程,通過做分幀處理,來得到起始結(jié)束位置
但其實(shí)這些方法都有各自的問題,插樁引入的測(cè)試誤差本身很小,但因?yàn)橄到y(tǒng)誤差的關(guān)系,會(huì)導(dǎo)致本身波動(dòng)會(huì)很大,而錄屏分幀,雖然可以用于競(jìng)品分析,但測(cè)試誤差會(huì)比較大,目前工業(yè)級(jí)的攝像頭,也只能到8ms/幀率,一般高速攝像頭的也會(huì)引入33ms的系統(tǒng)誤差,此外,如果在android端錄屏,可能會(huì)導(dǎo)致啟動(dòng)時(shí)間波動(dòng)更加增大,因此如果單純從測(cè)試方法上來改善啟動(dòng)時(shí)間測(cè)試,效果肯定不會(huì)好。因?yàn)槲覀冃枰靼?,系統(tǒng)隨機(jī)誤差的引入,所以啟動(dòng)時(shí)間的測(cè)試數(shù)據(jù)是一個(gè)概率問題,而不是一個(gè)可以100%一定出現(xiàn)在某個(gè)區(qū)域的問題(有時(shí)間寫一篇統(tǒng)計(jì)學(xué)跟誤差分析的文章)。
其實(shí)自然而然這就引申出兩個(gè)問題:
問題定位方法的改進(jìn)
誤差需要用科學(xué)的方法去做估算
當(dāng)然這篇文章只講第一個(gè)問題,也就是怎么去定位啟動(dòng)時(shí)間問題,下面進(jìn)入正題。
2.啟動(dòng)時(shí)間問題定位方案
在這里要推薦的是Traceview
。Traceview
的介紹可以看這篇文章:https://testerhome.com/topics/5049
因?yàn)橄到y(tǒng)隨機(jī)誤差比較大,因此單獨(dú)看某一個(gè)生命周期中的耗時(shí),并不能幫助定位問題,而Traceview可以幫我們查看到每一個(gè)線程的調(diào)用棧以及方法的CPU
時(shí)間或者堆棧累加時(shí)間。往往可以通過Traceview
來做問題定位,但目前有一些限制: