突然接到一個(gè)測(cè)試任務(wù):埋點(diǎn)部分功能全面檢查第一輪測(cè)試
咦振定?埋點(diǎn)是什么?問(wèn)問(wèn)旁邊的兩位同事肉拓,他們也沒(méi)聽(tīng)說(shuō)過(guò)埋點(diǎn)...
后來(lái)經(jīng)過(guò)網(wǎng)上百度后频、問(wèn)同事,終于弄明白了,在此做一下記錄:
1卑惜、關(guān)于埋點(diǎn)
? ? ? ? 曾經(jīng)有一個(gè)樂(lè)隊(duì)在他們的演出條款中明確的寫(xiě)道:演出前膏执,承辦方必須提供巧克力豆,但絕對(duì)不許出現(xiàn)棕色豆露久;如有違反更米,樂(lè)隊(duì)立即取消演出。
相信不少的同學(xué)在看到這個(gè)條款的時(shí)候第一反應(yīng)都是毫痕,搞藝術(shù)的人怪癖真多征峦!
真相是,多年后消请,這個(gè)樂(lè)隊(duì)的主唱范·海倫在自傳中揭曉這一霸王條款的來(lái)由:“樂(lè)隊(duì)怎樣檢測(cè)承辦方的重視程度栏笆?這似乎很難!而把棕色巧克力豆的條款?yuàn)A在合同里臊泰,就是確認(rèn)承辦方是否認(rèn)真閱讀了所有條款的一個(gè)辦法竖伯!在合同中巧妙‘布雷’,如果承辦方不幸中招兒因宇,那就沒(méi)得談七婴!”事實(shí)上,這一條款出臺(tái)后察滑,樂(lè)隊(duì)再?zèng)]有為安全問(wèn)題傷過(guò)腦筋打厘。
上述這種Event Tracking的方式放在互聯(lián)網(wǎng)應(yīng)用中,俗稱就是“埋點(diǎn)”贺辰。
從IT開(kāi)發(fā)的角度出發(fā)户盯,當(dāng)應(yīng)用系統(tǒng)(網(wǎng)站、App等)投入運(yùn)營(yíng)后饲化,在做用戶行為分析的時(shí)候需要去挖掘核心業(yè)務(wù)功能使用情況時(shí)莽鸭,往往會(huì)需要在應(yīng)用的代碼中添加一些額外的代碼來(lái)采集數(shù)據(jù),這就是所謂的“埋點(diǎn)”吃靠。包括訪問(wèn)數(shù)(Visits)硫眨,訪客數(shù)(Visitor),停留時(shí)長(zhǎng)(Time On Site)巢块,頁(yè)面瀏覽數(shù)(Page Views)和跳出率(Bounce Rate)等礁阁。
這樣的信息收集可以大致分為三大類目標(biāo)數(shù)據(jù):
1、行為數(shù)據(jù):時(shí)間族奢、地點(diǎn)姥闭、人物、交互越走、交互的內(nèi)容棚品;
2、質(zhì)量數(shù)據(jù):瀏覽器加載情況、錯(cuò)誤異常等铜跑;
3门怪、環(huán)境數(shù)據(jù):瀏覽器相關(guān)的元數(shù)據(jù)以及地理、運(yùn)營(yíng)商等疼进;
埋點(diǎn)的方法除了在產(chǎn)品研發(fā)的時(shí)候直接在程序里嵌入代碼統(tǒng)計(jì)搭建自己的平臺(tái)以供查詢以外,也有利用第三方統(tǒng)計(jì)工具(如友盟秧廉、神策伞广、GrowingIO、谷歌的Google Analytics等)疼电。但是不管哪一種埋點(diǎn)方式也不管哪一種埋點(diǎn)機(jī)理嚼锄,在數(shù)據(jù)埋點(diǎn)以后還需要做的非常關(guān)鍵的一件事情就是埋點(diǎn)測(cè)試,從測(cè)試人員的角度來(lái)看蔽豺,更準(zhǔn)確一點(diǎn)的說(shuō)法為“埋點(diǎn)數(shù)據(jù)的測(cè)試”区丑。
? ? ? ? 埋點(diǎn)測(cè)試只是數(shù)據(jù)采集的一種術(shù)語(yǔ),而數(shù)據(jù)采集是提供給運(yùn)營(yíng)工作人員去了解手機(jī)app對(duì)于某些模塊修陡、場(chǎng)景的用戶使用情況.進(jìn)行的一個(gè)觸發(fā)埋點(diǎn)沧侥,將埋點(diǎn)采集到的數(shù)據(jù)到的數(shù)據(jù)進(jìn)行上報(bào)的過(guò)程。
? ? ? ? 采集數(shù)據(jù)只是起點(diǎn)魄鸦,將數(shù)據(jù)進(jìn)行分析宴杀、整理、匯總以及報(bào)表展示拾因,最終得出用戶對(duì)app普遍對(duì)使用行為旺罢,從而實(shí)現(xiàn)app面向用戶的改良才是目的.
為了產(chǎn)品更好符合用戶需求體驗(yàn)才是終點(diǎn)。
埋點(diǎn)數(shù)據(jù)的注意事項(xiàng)
埋點(diǎn)數(shù)據(jù)的一致性:埋點(diǎn)數(shù)據(jù)的值需要注意客戶端和服務(wù)端的一致性绢记,包括編碼格式扁达、大小寫(xiě)、全角半角蠢熄、發(fā)送時(shí)機(jī)等跪解。
編碼格式:埋點(diǎn)數(shù)據(jù)的值為中文時(shí),尤其要注意編碼格式签孔。為了避免服務(wù)端解析數(shù)據(jù)出錯(cuò)惠遏,一般情況下,客戶端需要對(duì)發(fā)出的數(shù)據(jù)進(jìn)行編碼格式轉(zhuǎn)化骏啰;
? ? ? ? 大小寫(xiě):埋點(diǎn)數(shù)據(jù)的值在命名時(shí)要和服務(wù)端數(shù)據(jù)組同步命名規(guī)則节吮,尤其是大小寫(xiě);
全角半角:埋點(diǎn)數(shù)據(jù)的值為英文時(shí)判耕,常常容易忽略全角半角的輸入方式透绩,有時(shí)候會(huì)因此產(chǎn)生無(wú)法接收的錯(cuò)誤;
數(shù)據(jù)格式:埋點(diǎn)數(shù)據(jù)的數(shù)據(jù)格式在定義時(shí)要簡(jiǎn)單明了,尤其是非實(shí)時(shí)數(shù)據(jù)的發(fā)送機(jī)制帚豪,發(fā)出的數(shù)據(jù)量大且同一條埋點(diǎn)發(fā)出好多碳竟,需要整合;
發(fā)送時(shí)機(jī):埋點(diǎn)數(shù)據(jù)發(fā)送往往是一個(gè)公共功能狸臣,且發(fā)送時(shí)機(jī)一般情況下分為兩種:實(shí)時(shí)和非實(shí)時(shí)莹桅。因此將數(shù)據(jù)發(fā)送功能作為一個(gè)單獨(dú)的模塊存在,其他功能調(diào)用即可烛亦,避免所有模塊在發(fā)送時(shí)各自處理诈泼,增加測(cè)試成本;
埋點(diǎn)數(shù)據(jù)的命名規(guī)則:埋點(diǎn)數(shù)據(jù)的規(guī)范化命名規(guī)則有利于數(shù)據(jù)的閱讀和查看煤禽,比如頁(yè)面點(diǎn)擊的就用Page開(kāi)頭铐达,區(qū)域的用Label開(kāi)頭作為前綴;
在規(guī)范化埋點(diǎn)數(shù)據(jù)的一致性后檬果,還需要針對(duì)埋點(diǎn)數(shù)據(jù)的正確性進(jìn)行檢驗(yàn)瓮孙。埋點(diǎn)數(shù)據(jù)又可以分為四個(gè)類型:展現(xiàn)類、點(diǎn)擊類选脊、狀態(tài)類和計(jì)數(shù)類杭抠。
展現(xiàn)類的埋點(diǎn): 最關(guān)鍵的在于避免重復(fù)統(tǒng)計(jì)。比如在某寶搜索“華為手機(jī)”時(shí)恳啥,當(dāng)用戶輸入了“華為MATE10手機(jī)”和“華為MATE10”出來(lái)的效果幾乎是一樣的祈争,失去了統(tǒng)計(jì)的意義。
點(diǎn)擊類的埋點(diǎn)角寸。關(guān)鍵在于避免服務(wù)器超時(shí)的情況下連續(xù)點(diǎn)擊導(dǎo)致的重復(fù)統(tǒng)計(jì)菩混。
狀態(tài)類埋點(diǎn)。關(guān)鍵在于避免統(tǒng)計(jì)默認(rèn)狀態(tài)扁藕。并且狀態(tài)類埋點(diǎn)統(tǒng)計(jì)的一定是最終的狀態(tài)沮峡。例如,由開(kāi)切換到關(guān)亿柑,那么最后發(fā)出的狀態(tài)數(shù)據(jù)一定是關(guān)閉的狀態(tài)邢疙。
計(jì)數(shù)類埋點(diǎn)。關(guān)鍵在于避免遺漏望薄。一般情況下疟游,非實(shí)時(shí)發(fā)送的計(jì)數(shù)埋點(diǎn)容易出現(xiàn)遺漏情況,因?yàn)樯婕暗綌?shù)據(jù)庫(kù)的讀寫(xiě)痕支。因此在測(cè)試時(shí)要格外留意颁虐。
因此,大家可以看出埋點(diǎn)數(shù)據(jù)的正確性更多的是需要在埋點(diǎn)設(shè)計(jì)的前期就對(duì)需求進(jìn)行正確性卧须、合理性的考慮另绩,埋點(diǎn)數(shù)據(jù)的一致性更多體現(xiàn)在實(shí)現(xiàn)的技術(shù)上對(duì)數(shù)據(jù)一致性的校驗(yàn)儒陨。
還有一些特別的注意事項(xiàng)
網(wǎng)頁(yè)緩存:對(duì)于web頁(yè)面的埋點(diǎn)統(tǒng)計(jì),要考慮到web頁(yè)緩存的問(wèn)題笋籽。例如蹦漠,資訊詳情頁(yè)有停留時(shí)長(zhǎng)的統(tǒng)計(jì),當(dāng)進(jìn)入資訊詳情頁(yè)時(shí)開(kāi)始計(jì)時(shí)統(tǒng)計(jì)车海,不在該頁(yè)面時(shí)結(jié)束統(tǒng)計(jì)笛园,那么此時(shí)我們就要考慮到在前后臺(tái)相互切換時(shí)是否存在多發(fā)的情況,之前瀏覽器遇到的問(wèn)題就是將緩存頁(yè)的時(shí)長(zhǎng)頁(yè)做了統(tǒng)計(jì)一并發(fā)送到了服務(wù)器侍芝。
網(wǎng)絡(luò)環(huán)境:當(dāng)網(wǎng)絡(luò)特別差的時(shí)候研铆,客戶端發(fā)送埋點(diǎn)失敗,這種情況下應(yīng)該將發(fā)送失敗的數(shù)據(jù)保存在本地竭贩,等下次條件滿足的時(shí)候一并發(fā)出蚜印。避免出現(xiàn)丟掉數(shù)據(jù)的情況莺禁。
覆蓋安裝:產(chǎn)品升級(jí)之后留量,升級(jí)之前的埋點(diǎn)不能被刪除掉,應(yīng)該保存在本地哟冬,待升級(jí)之后滿足條件一并發(fā)出楼熄。
服務(wù)端壓力:數(shù)據(jù)發(fā)送有實(shí)時(shí)和非實(shí)時(shí)兩種,當(dāng)實(shí)時(shí)數(shù)據(jù)量特別大時(shí)容易給服務(wù)器造成壓力浩峡,因此在測(cè)試時(shí)要特別留意可岂。
舉一個(gè)小例子,拿經(jīng)常使用埋點(diǎn)的移動(dòng)端平臺(tái)來(lái)說(shuō)翰灾,比如我們需要查看Android平臺(tái)的埋點(diǎn)是否有效時(shí)缕粹,前提準(zhǔn)備是有Android平臺(tái)的ddms環(huán)境(可以使用androidstudio,或者直接使用android sdk里帶的monitor)和埋點(diǎn)字段表(這是開(kāi)發(fā)埋點(diǎn)的依據(jù)纸淮,以及產(chǎn)品分析的標(biāo)準(zhǔn))
測(cè)試方法為:
1平斩、調(diào)起monitor之后,連接移動(dòng)設(shè)備
2咽块、設(shè)置logcat的filter绘面,填寫(xiě)包名即可
3、取已埋點(diǎn)的安裝包并且輸出app埋點(diǎn)的日志
4侈沪、查看埋點(diǎn)字段表揭璃,執(zhí)行對(duì)應(yīng)有埋點(diǎn)的操作
比如埋點(diǎn)字段表中,需要監(jiān)測(cè)的埋點(diǎn)為點(diǎn)擊首頁(yè)中的“下一步”時(shí)
5亭罪、進(jìn)入手機(jī)上的app瘦馍,點(diǎn)擊 下一步
6、查看ddms的logcat应役,即可看到操作的日志扣墩,如圖所示:
檢查埋點(diǎn)是否正確哲银,出現(xiàn)錯(cuò)誤的情況一般是:
a)漏埋點(diǎn)
b)埋點(diǎn)和操作類型不對(duì)應(yīng),比如點(diǎn)擊的是“下一步”呻惕,卻上報(bào)了“返回”
c)埋點(diǎn)和操作頻率不對(duì)應(yīng)荆责,比如只操作了一次,卻上報(bào)了兩次
2? 測(cè)試要求&所提供材料:
測(cè)試要求&所提供材料:
1亚脆、在測(cè)試環(huán)境進(jìn)行測(cè)試
2做院、檢查點(diǎn)
檢查相應(yīng)的模塊是否做了埋點(diǎn)處理
檢查做埋點(diǎn)處理的模塊的參數(shù)bpCode 是否正確
? 檢查埋點(diǎn)接口服務(wù)端是否返回成功的消息
? (result=true)
檢查下埋點(diǎn)服務(wù)器的請(qǐng)求地址
測(cè)試環(huán)境:http://x.x.x.x:8680/hs-xh-buryingpoint-web/lbp/doLog
? 預(yù)發(fā)環(huán)境:http://x.x.x.x:8680/hs-xh-buryingpoint-web/lbp/doLog
生產(chǎn)環(huán)境:http://x.x.x.x:8680/hs-xh-buryingpoint-web/lbp/doLog
檢查目前其他入?yún)⑿畔⒌臏?zhǔn)確性
? ? (clickTime,appVersion等等)
針對(duì)目前全部會(huì)進(jìn)行埋點(diǎn)的模塊:
各個(gè)模塊埋點(diǎn)編碼的對(duì)應(yīng)表: (此處是接口文檔地址)
目前的埋點(diǎn)大部分只會(huì)在點(diǎn)擊某個(gè)菜單的時(shí)候做埋點(diǎn)處理
3? 測(cè)試步驟
1濒持、測(cè)試使用工具:
fiddler 功能點(diǎn):過(guò)濾
(https://blog.csdn.net/java2013liu/article/details/53337584fiddler)
或關(guān)于過(guò)濾成只查看x.x.x.x:8680/hs-xh-buryingpoint-web相關(guān)的內(nèi)容
2键耕、打開(kāi)APP進(jìn)行抓包。
2.1 首先抓取
http://x.x.x.x:8680/hs-xh-buryingpoint-web/lbp/doLog相關(guān)的內(nèi)容
2.2? 對(duì)各個(gè)模塊或者功能點(diǎn)參照接口文檔中的埋點(diǎn)模塊進(jìn)行一一核實(shí)柑营,看所傳的參數(shù)和響應(yīng)結(jié)果是否有異常
3屈雄、有異常時(shí)可查看log信息:
tail -fn200 /data/ftp/log/xx.log