創(chuàng)業(yè)心得七:ToB創(chuàng)業(yè)的測(cè)試與運(yùn)維自動(dòng)化

ToB創(chuàng)業(yè)的測(cè)試與運(yùn)維自動(dòng)化

海闊天空

2021年11月

上一篇文章《ToB創(chuàng)業(yè)的現(xiàn)場(chǎng)實(shí)施》(見:http://www.itdecent.cn/p/c44e74109c19),我跟大家分享的是關(guān)于售前支持的思考。本篇文章,我將分享有關(guān)單項(xiàng)能力之“測(cè)試與運(yùn)維”的思考。

由于我之前有幾年的開發(fā)經(jīng)歷,所以在負(fù)責(zé)公司產(chǎn)品的測(cè)試與運(yùn)維工作時(shí)會(huì)盡可能地加入技術(shù)因素,讓測(cè)試與運(yùn)維向自動(dòng)化方向發(fā)展。

我們先講測(cè)試,ToB的產(chǎn)品一般向用戶暴露的有WEB界面和HTTP接口。對(duì)于開放接口的測(cè)試,自然是開發(fā)一套測(cè)試軟件來驗(yàn)證接口的各項(xiàng)功能、性能是否達(dá)到接口使用說明文檔中所宣稱的內(nèi)容。而用戶在WEB界面的操作通常包括“輸入?yún)?shù)、前端校驗(yàn)參數(shù)合法性、前端調(diào)用后端接口、前端獲得后端返回結(jié)果并在頁面上回顯”等環(huán)節(jié),這些環(huán)節(jié)可以分解為兩類,一類是前端不與后端交互(前端對(duì)用戶輸入?yún)?shù)的校驗(yàn)以及對(duì)后端返回結(jié)果的回顯),另一類是前端與后端交互(即前端調(diào)用后端接口)。這樣,對(duì)于用戶操作的WEB界面的功能測(cè)試,就可以分兩階段來測(cè)試:第一階段是自動(dòng)化執(zhí)行的,目的是測(cè)試后端代碼,具體做法是:編寫測(cè)試程序,模擬前端用戶操作行為,直接調(diào)用后端接口,來驗(yàn)證輸入?yún)?shù)(這階段測(cè)試時(shí),要讓輸入?yún)?shù)合法有效)與輸出結(jié)果是否匹配(需要覆蓋所有業(yè)務(wù)場(chǎng)景做測(cè)試);第二階段是手動(dòng)操作的,目的是測(cè)試前端代碼,具體做法是:人工使用WEB界面執(zhí)行業(yè)務(wù)操作(也可以使用一些成熟的測(cè)試工具),對(duì)輸入?yún)?shù)做合法性校驗(yàn)以及對(duì)第一階段的返回結(jié)果在WEB界面進(jìn)行友好顯示。其中,WEB界面功能測(cè)試的第一階段工作是用測(cè)試程序自動(dòng)化執(zhí)行的,可以將那些需要反復(fù)執(zhí)行的業(yè)務(wù)流程固化(下次再測(cè)試的時(shí)候,直接運(yùn)行這個(gè)測(cè)試程序即可),提高整體的測(cè)試效率,如果第一階段的測(cè)試完成得好(輸入和輸出匹配正確),到了第二階段,測(cè)試重點(diǎn)就可以放到前端代碼上(輸入?yún)?shù)合法性校驗(yàn)及返回結(jié)果友好顯示)。根據(jù)我的經(jīng)驗(yàn),測(cè)試工作,能自動(dòng)化的部分盡量自動(dòng)化,這樣可以全面、快速地展開多輪測(cè)試。以上只是初創(chuàng)公司在沒有專業(yè)測(cè)試團(tuán)隊(duì)的情況下的選擇,如果有專業(yè)的測(cè)試團(tuán)隊(duì),則可以使用LoadRunner之類的成熟測(cè)試工具。

前面講的是用測(cè)試自動(dòng)化來提高測(cè)試效率的方面,下面再來講一下測(cè)試的另一個(gè)重要方面,即如何安排優(yōu)先級(jí)來提高整體測(cè)試效率。測(cè)試工作就像開發(fā)工作一樣,都是有任務(wù)優(yōu)先級(jí)的,很多測(cè)試人員并沒有意識(shí)到測(cè)試優(yōu)先級(jí)的重要性,總是習(xí)慣性地從第一個(gè)軟件功能測(cè)試到最后一個(gè)軟件功能,這樣做,一來沒有突出測(cè)試工作的輕重緩急從而導(dǎo)致在重要軟件功能的測(cè)試方面投入不夠而未發(fā)現(xiàn)那些隱藏得很深的Bug,二來測(cè)試的整體效率不高,無法及時(shí)將測(cè)試結(jié)果反饋給研發(fā)團(tuán)隊(duì),從而影響了整體的開發(fā)/測(cè)試的進(jìn)度。正確的做法是不但要編寫測(cè)試用例,而且要突出各項(xiàng)測(cè)試任務(wù)的優(yōu)先級(jí)和所需投入的工作量,其中,核心功能點(diǎn)的測(cè)試任務(wù)要加大投入并考慮使用多種方法或多種工具去全方位地深度地驗(yàn)證該功能是否存在潛在的Bug。根據(jù)我的經(jīng)驗(yàn),測(cè)試一個(gè)軟件產(chǎn)品時(shí),首先要能跑得通整個(gè)業(yè)務(wù)流程,在此前提下,核心功能的方方面面都測(cè)試一遍,非核心功能則可以適當(dāng)忽視細(xì)節(jié)(當(dāng)然,后期有時(shí)間的時(shí)候可以再慢慢補(bǔ)充測(cè)試)。

關(guān)于運(yùn)維工作,和測(cè)試工作類似,我也推崇能自動(dòng)化的部分盡量自動(dòng)化,再輔以人工運(yùn)維,從而確保軟件、網(wǎng)絡(luò)和服務(wù)器的正常運(yùn)轉(zhuǎn)。

我們上線一個(gè)軟件項(xiàng)目時(shí),同步會(huì)開發(fā)并上線一款對(duì)應(yīng)的運(yùn)維監(jiān)控軟件,該監(jiān)控軟件包括的基本功能有:監(jiān)視服務(wù)器和網(wǎng)絡(luò)的主要運(yùn)行參數(shù)(比如:CPU占有率/內(nèi)存使用率/磁盤空間/網(wǎng)絡(luò)帶寬占用率等等)、監(jiān)視軟件工作情況(比如:記錄業(yè)務(wù)異常/出現(xiàn)軟件停服重啟軟件等等)、監(jiān)視連接數(shù)據(jù)庫服務(wù)器的主要運(yùn)行參數(shù)(比如:IOPS/內(nèi)存使用率等等)、發(fā)送告警信息(以上異常情況發(fā)生時(shí)發(fā)送郵件或短信告警通知)。運(yùn)維工程師收到異常告警通知時(shí)人工介入排查故障并恢復(fù)軟件正常運(yùn)行。這樣,可以在保障軟件服務(wù)正常工作的情況下盡可能地減輕運(yùn)維壓力,節(jié)約運(yùn)維成本。通常,云服務(wù)提供商(比如阿里云、騰訊云、華為云等)都會(huì)提供應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器等設(shè)備的狀態(tài)監(jiān)控API,建議盡量云服務(wù)提供商提供的API來監(jiān)視設(shè)備健康狀態(tài),涉及到自身業(yè)務(wù)的個(gè)性化監(jiān)控則需要自定義開發(fā)監(jiān)控軟件。目前,市場(chǎng)上有大量的云資產(chǎn)代運(yùn)維的專業(yè)公司,如果初創(chuàng)公司使用的云資源數(shù)量較多(8個(gè)設(shè)備以上)或者使用了多家的云資產(chǎn),那么建議選擇這些云資產(chǎn)代運(yùn)維的公司來打理眾多的云資產(chǎn),這樣既經(jīng)濟(jì)又專業(yè)。

現(xiàn)在舉兩個(gè)運(yùn)維中遇到的意外情況的例子:

2019年2月份,公司需要將阿里云上SQLServer數(shù)據(jù)庫里的數(shù)據(jù)遷移到阿里云MySQL數(shù)據(jù)庫上,目的是為了降低數(shù)據(jù)庫租用成本(因?yàn)橄嗤?guī)格下,MySQL比SQLServer要便宜很多),而阿里云不提供異構(gòu)數(shù)據(jù)庫遷移工具,我只能從網(wǎng)上找,最后找到一款名為SQLyog的軟件。在本地服務(wù)器上測(cè)試了一下,將一個(gè)表的數(shù)據(jù)(數(shù)據(jù)量大約有300萬行)從MySQL遷移SQLServer需要1小時(shí)左右,但將該軟件安裝到阿里云ECS上遷移數(shù)據(jù)的速度卻只有100萬行/小時(shí)。在走投無路的情況下,我只能嘗試自己開發(fā)一個(gè)軟件來做異構(gòu)數(shù)據(jù)遷移的工作,經(jīng)過幾天努力,異構(gòu)數(shù)據(jù)遷移工具軟件(我命名為DBTransferTool,Github地址是https://github.com/SmilyZhu/DbTransferTool)開發(fā)完畢,在阿里云上實(shí)測(cè)的遷移速度達(dá)到2000萬行/小時(shí),是SQLyog的20倍,這僅僅是單線程執(zhí)行的速度,如果繼續(xù)優(yōu)化做成多線程執(zhí)行的話,我相信可以達(dá)到5000萬行/小時(shí)甚至更快,不過,這個(gè)自研工具已經(jīng)達(dá)到我的預(yù)期目標(biāo),就沒有再去優(yōu)化了。這是開發(fā)能力在運(yùn)維工作中起到的巨大作用。

2019年8月,在一次清理歷史數(shù)據(jù)時(shí),誤操作刪除了阿里云RDS實(shí)例中一張表里的全部數(shù)據(jù)(應(yīng)該只需要?jiǎng)h除過期的數(shù)據(jù)),發(fā)現(xiàn)問題后立即做了如下處理:停止軟件服務(wù),先找到誤操作發(fā)生的準(zhǔn)確時(shí)間點(diǎn),然后從binlog文件恢復(fù)數(shù)據(jù),再做好老數(shù)據(jù)與新數(shù)據(jù)的合并,最后啟動(dòng)軟件服務(wù)。

以上描述的是創(chuàng)業(yè)公司在軟件測(cè)試和服務(wù)器運(yùn)維時(shí)值得注意的重要方面,即盡量讓測(cè)試和運(yùn)維工作自動(dòng)化,減輕人的壓力;另外要關(guān)注重點(diǎn),對(duì)核心任務(wù)要多加投入,解決主要矛盾。

總結(jié)一下,互聯(lián)網(wǎng)B2B領(lǐng)域的小微創(chuàng)業(yè)公司,在測(cè)試、運(yùn)維等崗位很難投入專職人員,所以工程師需要盡量讓這些工作變得自動(dòng)化,降低對(duì)人力的需求,節(jié)約公司運(yùn)營(yíng)成本。本文所說的內(nèi)容或許對(duì)創(chuàng)業(yè)團(tuán)隊(duì)負(fù)責(zé)測(cè)試和運(yùn)維的人員有一些啟發(fā)。以上均是點(diǎn)到為止,并沒有涉及到具體行業(yè)或產(chǎn)品,有興趣的同學(xué)可以私下交流。下一篇文章,我將與大家分享“創(chuàng)業(yè)公司的管理”方面的思考。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容