trace & trouble shooting 一點想法
我們曾經或者正在參與這個或者那個項目;我們也曾經或者正在搭建很復雜的測試 環境;不過我們一定有這樣的感受:從一個項目的起始到結束,搭建和維護測試環境 總是我們永恒的工作內容。
而我們在搭建或者維護一個測試環境的時候,隨著網元的種類和數量的增加,其復雜的程度也就越高,一些不可控因素也就越多。復雜度提高了意味著搭建和維護的難度增加;不可控因素越多則意味著測試環境可能很脆弱。
像我這樣的經驗能力尚欠的測試人員 常常疲于應付,不過如果向團隊里那些優秀的同事們看去,他們則顯得鎮定和自信,豐富的經驗固然是一方面,卓越的 trace 和問題定位的能力才是他們處變不驚的根本。而這種能力是建立在對各個系統,各個領域,各個網元的深入理解的基礎之上的,相信他們也是通過平時的學習,思考,總結,積累而成就的。
至今日我已進入公司一整年。一年來參與了幾個項目,有這樣一些感受,可能比較幼稚,希望能與大家一塊討論。
1、ant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
trace
和 trouble shooting 的先后
當我在測試 sip-oneip-stratey 的時候,需要在各種呼叫場景中來驗證 one-sip 策略,比如 sipi , c4 , cw , hold , tps , conf , sylantro 。那個時候對各個網元不清楚,不知道 sylantro 是什么?也不知道 media-sever ,而且還剛剛接觸 ears 。所以在出現問題之后,我能做的就是去閱讀 trace 了,而且是精讀(水平高了才能略讀),這些特服動不動就是幾千行,但是沒辦法就是一遍一遍的去看,為了更方便閱讀這些 trace ,
寫一些小的腳本去掉消息中的心跳等無用消息(那個時候還不知道 mgrep 可以輕易實現這個功能),高亮顯示 sip , h248 , s12 各個重要 fmm 和 ears trace 中的重要字段,添加注釋等。漸漸的, unix 側的, s12 上的,或者 ears 上大體的呼叫流程比較清楚了,能夠很快判斷出那個環節出了問題。比如一個 sip 三方通話,拍叉簧后聽不到 hold-tone ,對我來說,我應該關注拍叉簧這個動作發生時說產生的 trace ,然后我應該關住又沒有拍叉簧有沒有上報上來, sip 消息中有沒有拍叉簧這個動作對應的特殊的 invite 消息,有沒有送到 s12 去處理,如果 s12 沒有釋放的話,有沒有發 invite 到 meidia-server , media-sever 最后是要給被保持的用戶送 hold-tone 的,所以 media-server 和 sip , iad 會有 sdp 交換的流程。
對于 ears 也是如此。剛開始的階段,大家閱讀 ears 的 trace 何等的艱澀,只能對照 pcgui 上每一個的值,一遍遍的去讀 trace ,去了解 ears 是如何進行路由數據的分析的, ears 如何調用各個表的,各個表的作用是什么。一定的積累之后,多數情況,我們只需要看 outgoing 的值就可已判斷出問題了,譬如地址屬性不是我們所要的,號碼變換沒有實施, did 值不對等。
一個稚嫩的測試人員(我)常犯的錯誤就是,每每看到某個 cause 在某個網元的 trace 中出現之后,或者捎加分析之后,然后報給
相應的 P.O, 心理還得意:哈哈,問題沒有 block 我手上。最后的結果往往是丟人和恥笑。
所以我覺得,當我們測試人員處于一個不了解的測試環境,不熟悉的網元的階段時,應該是先重視閱讀 trace ,然后才是定位問題。通過前者,測試人員對環境相當的了解之后,就可以做到選擇性的少量的必要的 trace 就可以迅速而準備的進行問題的定位了。
2、
trace
skill 與 trouble shooting
在對環境比較清楚,尤其在維護環境的階段,好的 trace skill 有助于提高我們的工作效率。這些 skill 很多,很小,主要體現在各種工具的使用上面。比如手機 ct trace 的時候,可以用 mgrep 濾除心跳, trace 文件自動添加日期或者進程號以便管理;用 trace-filt 對 setrace
分揀出我們所需要某個板子的一切信息;做好收集下來的尤其是一些
重要階段的 trace 的注釋,可以用來做對比,參考,跟蹤; tcpdump 這個收 trace 的工具在處理 sctp 偶聯不活,以前基本的信令交互都可以看,當然如果側重于后者,可以用 tcpdump 收下包后交給 ethreal 去分析; ndebug
統計、過濾 msu ;至于 s12 側 trace 相關的工具也很多,建議參考覽海濤總結的文檔,里面總結了各個重要的 fmm id ,以前各種 trace 的方法。普通的 trace 比較簡潔,消息流程清晰,但消息的內容,除非你很熟悉的,大部分不清楚。 Minitrace 每個消息體所攜帶的信息非常多,但整體凌亂,消息流程不清晰,好多新的消息也解不出來,只能通過 hycon 來收集。各有缺點。平時收普通 trace 就行了,除非你很想了解某個消息的內容;當然可以自己寫個腳本,
把譬如 e3b 中很多很有用的 mbid ,自動添加注釋,把 minitrace 里面有用的信息,甚至你自己想要添加的信息加進去就行了。比如你關心 e3b 與 ears 交互的情況,希望在 e3btrace 中很直觀的看出 ears 是怎么吃位的?在 ears numbering 那里吃了幾位( ears nly=no ), destination
Digit
prep 那里吃了幾位? ears 送出的 did 是多少, did 是怎么吃位的。。。。。。那么你可以在 e3b trace 中對這些信息添加注釋,一目了然。這在對 e3b 和 ears
問題定位時非常有用。
還有這樣一種情況,也算是 skill 吧。在網元很多的時候,比如有個呼叫從 n44 的 h248 用戶到 n35 再到青島 ims , n44 與 n35 不是 sipi ,是普通的 isup ,話路經過兩個 7510 ,然后在這個環境上打三方通話這些業務。華羅庚有個“二分法”,我們可以借用借用。當環境出現問題之后,先找中間 n35 ,看它是否收到來自 n44 的 iam 消息,如果收到 iam 消息有沒有送給 ears ,或者 n35 是否收到來自 ims 的 invite 消息,如果收到了有沒有交給 s12 側繼續分析?纯磫栴}在 n35 上還是左側抑或是右側?傊W元很多,收 trace 定位問題時注意規劃,優化方向的選擇。
Trace skill太多了。每個人都有自己的 skill 。也是個慢慢積累的過程。
3. Technology
& trace and trouble shooting
不知道 technology 用的準確不準備。我的感受是,尤其是 trouble shooting 階段知識是最重要的,這是考驗我們測試人員的知識面的寬度和深度的階段。除了那些優秀的同事外,像我這樣的目前怕是較多的仍然是 trace ,了不起是 locating 。然后交給 P.O 了。 Locate 對了算他們的運氣, locate 錯了,由他們自己去 shooting 好了。 P 。 O 要是忙得要死的時候,心里一定氣得要命。當我們不可能達到他們那個深度,但起碼達到測試崗位的要求。
一些通信行業支撐性的知識,我的感受,自己還很缺失。干了多年的通信,說真的,我對 ss7 究竟有多深呢?大概可以應付夏雷面試 時的選擇題罷了。當我需要在 inet 編消息,當我需要給流量發生器選擇合適的 msu 的時候,當我面對 4 條 2m link 信息流量不均衡的時候,當我看到 dnua 消息的時候,其實都是 7 號領域的問題。有點偏題了。
我覺得,為了更好的更好的掌握 trace&trouble shooting 之前,我們應該注意提高自己各個領域的知識。我們應該對 h248 協議非常清楚,它是如何定義網關的一些行為動作的,常用的包的類型。找不到資料就去找 P 。 O 妹妹請教,把它記下來。還有 sip 協議,結合平時收下的 trace 。 Sigtran 里的 m3ua,m2pa 。 s12 里的 common call handling
對我們做 mgc 的人來說很重要。 Ip 領域的知識當然很重要了,考了 ccna 差不多夠用了。開源 的東西也要學,因為我們交換機, sg 這些設備都是使用 linux 平臺的,這個領域的知識對我們來說也是非常有用的。所幸現在資料網絡 上太多了,只要想找一定能找到的。
Technology 對提高 trace 和 trouble shooting 的能力應該是指數級的,我時常感到提高 technology 的艱難,可嘆少壯不努力,留作今日追啊。(想起來謝亞龍的詩了)不過每當在某個領域有所提高的話,
在閱讀 trace 和定位問題的時候,或者回顧以前碰到的問題的時候,就會有一點豁然開朗的感覺。
4、
心態、思維、信念和 trace & trouble shooting
記得以前曾經看過一篇同行寫過的文檔。他提出這樣的觀點(大概):測試人員應該有一個信念,永遠不會存在完美的產品,只是還沒有找到它的 bug 而已,或者還沒有找到正確的思路和方向而已。這句話不是老江湖說不出來。想起這段時間做 sg load test ,每次出現壅塞,或者一打流量就會有 gap 出現時,就郁悶的要命。周國盛說得對,“要冷靜、耐心”。這應該是 tester 正確的心態吧。說到思維,應該是前者有點關系,心態不好的情況下,思維會混亂,然后就是毫無目的和策略的重復,或者敷衍了事。觀察其他出色的同事,他們的思維是那種很開放的,測試環境在最糟糕的情況下,他們會拿起筆,畫出示意圖,看看哪里有遺漏,哪里可以改善,出現這樣的莫名其妙的 trace 是怎么回事?如何簡化環境,盡可能排除影響的情況下,再去收相關的 trace 看看情況又是如何。維護測試環境的方法很多倒是和技術支持的思路差不多,其實的無非都是分析,排除,歸納的智慧。至于說
信念,應該是測試人員 tester 的職業生涯的高級階段了,希望吾生應有期。
以上是我做測試形成的一些感受。比較混亂,最糟的是沒有
結合具體的案例。還好郵件里要求不高,可以寫感受的。
今天是 9.4 。去年的今日我來報到。算是一個好日子吧。放到偶博客上去算了紀念。