測試為什么要聊監(jiān)控
功能測試來確保產(chǎn)品的需求實現(xiàn),而監(jiān)控就是保障出現(xiàn)問題前或發(fā)生時立即被發(fā)現(xiàn)并解決?,F(xiàn)在服務(wù)基本上都放在云上,相關(guān)的監(jiān)控也都比較齊全。但是有些時候可能團(tuán)隊的配(財)置(力)還沒到全部使用云監(jiān)控的程度,我們還是免不了自己進(jìn)行監(jiān)控,再加上線上問題的處理及時性也是對測試的一個硬性要求,所以搭建監(jiān)控平臺的思維和能力也成為了測試需要具備的一種高級技能。
可能的監(jiān)控種類
接口監(jiān)控
這個比較好理解,之前聊了接口測試及自動化接口測試的事情,那個是保證接口功能性的流程。而接口監(jiān)控主要監(jiān)控的是接口的狀態(tài)或者所在服務(wù)的狀態(tài)。這個需要注意的是接口的請求方法和接口的請求頻率。
- 接口的請求方法:原則上只能使用get請求,因為其他請求可能會產(chǎn)生臟數(shù)據(jù)。
- 接口的請求頻率:頻率需要符合業(yè)務(wù)要求,過快的風(fēng)險是可能會影響數(shù)據(jù)統(tǒng)計等,或者造成性能問題。過慢的風(fēng)險是達(dá)不到監(jiān)控發(fā)現(xiàn)問題及時性的目的。
服務(wù)監(jiān)控
測試可以通過分析服務(wù)日志等文件來實現(xiàn)對服務(wù)狀態(tài)的判斷,可以使用python等腳本語言實現(xiàn),但是要重點考慮文件讀取&分析的性能。
中間件監(jiān)控
比較討巧的一種監(jiān)控方法,通過操作或讀取數(shù)據(jù)一些中間件來達(dá)到監(jiān)控中間件和服務(wù)的目的。比如使用隊列監(jiān)控來判斷消費者服務(wù)是否正常運行。但千萬注意在操作過程中不要產(chǎn)生臟數(shù)據(jù),建議只是通過讀取數(shù)據(jù)判斷。
監(jiān)控舉例 - rabbitMQ隊列監(jiān)控
思路: 利用讀取隊列中的 消息數(shù)量 和 消息消費速率 來判斷是否有消息積壓。
解讀: 如果隊列中固定時間內(nèi)的 消息數(shù)量 > 閾值(自定義) 且 消息消費速率 = 0 時,我們認(rèn)為此隊列有積壓。
-
實現(xiàn)方法: 消息數(shù)量 和 消息消費速率 可以利用rabbitMQ的API獲取到,具體地址可以在RabbitMQ后臺上找到,或者網(wǎng)上搜。
RabbitMQ后臺 腳本代碼: (待更新,其實有了思路就成功了一大半了,如果讀者真有需求那我之后看評論里大家的意愿再來決定是否提供吧)
測試人需關(guān)注
在文章開頭其實已經(jīng)聊了可以自行開發(fā)監(jiān)控對于測試人員的意義,所以這里就不在贅述了。唯一需要提醒大家的是,監(jiān)控的目的是發(fā)現(xiàn)問題,不是制造問題,所以需要萬分小心的是在做監(jiān)控的過程中一定不能造成對原服務(wù)數(shù)據(jù)和性能的影響,望大家謹(jǐn)記。
