去年有寫過兩篇博客,分別是淺談UI自動(dòng)化測試和淺談接口自動(dòng)化測試,都是一些基礎(chǔ)的方法論的內(nèi)容,今年轉(zhuǎn)崗專門做自動(dòng)化測試,有了很多新的發(fā)現(xiàn),當(dāng)然,也遇到了很多的挑戰(zhàn)。
遂重開一篇博客,聊聊最近做自動(dòng)化測試遇到的一些挑戰(zhàn),以及自己的解決方法和一些思考。。。
一、測試范圍
無論是功能測試,還是自動(dòng)化或者性能測試,第一步要做的,是明確測試范圍和需求指標(biāo)。對于自動(dòng)化測試來說,特別是UI自動(dòng)化,并不是所有的功能點(diǎn)都適合做UI自動(dòng)化。
根據(jù)具體的業(yè)務(wù)情況和項(xiàng)目穩(wěn)定程度,選擇UI自動(dòng)化+API自動(dòng)化結(jié)合,選擇合適的業(yè)務(wù)點(diǎn)來進(jìn)行針對性的自動(dòng)化測試方案設(shè)計(jì),才是最佳方案。
對于什么項(xiàng)目適合做UI自動(dòng)化,在之前的博客淺談UI自動(dòng)化測試?yán)镆呀?jīng)分析過,這里列幾個(gè)我個(gè)人覺得比較適合做UI自動(dòng)化的點(diǎn):
①、使用頻次較高,異常判斷較多,且最基礎(chǔ)的功能,比如用戶注冊、登錄;
②、用戶端比較核心的功能,比如訂單中心,會(huì)員中心;
③、促銷活動(dòng)頁面、信息展示頁等;
分層測試的概念,之前也介紹過了,分層測試金字塔如下:
從效果來看,單元自動(dòng)化是收益最高的,但是單元自動(dòng)化對大多數(shù)自動(dòng)化測試初學(xué)者來說,難度太大。
且目前國內(nèi)大部分中小型企業(yè),開發(fā)本身的開發(fā)規(guī)范、管理等工作也做的不太好,單元自動(dòng)化,實(shí)現(xiàn)的概率,短期內(nèi)不看好。
而接口自動(dòng)化,目前來說是性價(jià)比最高的一種選擇。
UI自動(dòng)化的投入和產(chǎn)出比,是三種模型中最低的,但對于越來越復(fù)雜的大型的系統(tǒng),UI自動(dòng)化在某些方面,也可以減少很多發(fā)布后冒煙測試的工作量。
二、系統(tǒng)架構(gòu)
對大多數(shù)功能測試人員來說,系統(tǒng)架構(gòu)不用太多關(guān)注,但對于自動(dòng)化或者性能測試人員來說,系統(tǒng)架構(gòu)是前期需求分析、技術(shù)方案選型設(shè)計(jì)的一個(gè)重點(diǎn)。
比如系統(tǒng)開發(fā)的編程語言,使用的數(shù)據(jù)庫類型,通信服務(wù)框架(如果要進(jìn)行API自動(dòng)化,那么系統(tǒng)所采用的通信協(xié)議是繞不過去的一點(diǎn)),應(yīng)用服務(wù)器的部署等,都是需要考慮的。
PS:我目前就職的這家企業(yè),數(shù)據(jù)庫使用的是微軟全家桶套餐里面的SQL server,而我測試腳本開發(fā)語言是python,它本身對SQL server和Oracle的支持并不是很好,導(dǎo)致在數(shù)據(jù)庫配置時(shí)候,踩了很多坑。
當(dāng)然,我最后也解決了這個(gè)問題。關(guān)于數(shù)據(jù)庫的支持問題,只是我遇到的問題里面的一個(gè)很小的部分。
熟悉系統(tǒng)架構(gòu)的另一個(gè)原因是:比如系統(tǒng)采用的開發(fā)語言是java,自動(dòng)化測試人員本身使用的腳本開發(fā)語言也是java,那么兼容性就是很好的,而且有技術(shù)問題,也可以找開發(fā)同事幫忙解決,
這樣無形中也節(jié)省了很多時(shí)間,而且對自己的技術(shù)提升,也是不小的幫助。
熟悉了系統(tǒng)架構(gòu)后,針對性的考慮自動(dòng)化測試方案設(shè)計(jì),技術(shù)方案選型,才是最好的方式,不要用固有的方式來解決不同的問題,而要用不同的技術(shù)方案解決不同的問題。
三、項(xiàng)目情況
關(guān)于這點(diǎn),個(gè)人認(rèn)為應(yīng)該通過分析溝通來確認(rèn)系統(tǒng)是否適合自動(dòng)化測試工作。那么,什么樣的系統(tǒng)適合進(jìn)行自動(dòng)化測試?
如上圖所示,我大概羅列了一些適合進(jìn)行自動(dòng)化測試的項(xiàng)目所具備的一些特征,當(dāng)然,不需要全部具備,只需要滿足幾點(diǎn)即可以考慮進(jìn)行自動(dòng)化測試(紅色線條標(biāo)注部分為基本的條件)。
當(dāng)然,項(xiàng)目情況不僅僅是這些,還有其他的一些點(diǎn),也是需要考慮的,比如:
①、文檔管理
文檔包括需求文檔、測試方案、測試用例、測試規(guī)范、開發(fā)規(guī)范、數(shù)據(jù)庫表設(shè)計(jì)文檔、接口文檔等。
如果文檔不太完善甚至沒有對應(yīng)的文檔,那么自動(dòng)化測試工作,前期的準(zhǔn)備工作就需要投入更多的時(shí)間和精力。
PS:比如要進(jìn)行API自動(dòng)化,但是沒有接口文檔,沒有數(shù)據(jù)庫表設(shè)計(jì)文檔,那么關(guān)于API的接口說明,入?yún)⒊鰠⒄f明,這將帶來很多附帶的工作量,而文檔數(shù)據(jù)的統(tǒng)計(jì),又是一件很麻煩的事情。
有時(shí)候需要數(shù)據(jù)庫確認(rèn)接口對數(shù)據(jù)的影響,對應(yīng)的數(shù)據(jù)庫表字段,如果沒有相關(guān)文檔說明,那么自己整理以及和DBA溝通熟悉,就需要花費(fèi)很多的時(shí)間和精力。
而很多企業(yè)對自動(dòng)化的認(rèn)識太片面,認(rèn)為自動(dòng)化可以替代人發(fā)現(xiàn)很多BUG,且追求短期的明顯效果,而如果沒有較完善的文檔管理,那么自動(dòng)化測試人員在前期的準(zhǔn)備階段花費(fèi)的時(shí)間將影響
leader對個(gè)人能力和工作效率的懷疑,可以說這也是目前國內(nèi)很多企業(yè)存在的弊端。
問題總歸是要解決的,如果遇到這種類似的問題,那么在任務(wù)拆分和工時(shí)預(yù)估時(shí)候,可以將這些因素考慮進(jìn)去,計(jì)算在個(gè)人工時(shí)中,并注明原因,在和leader甚至更高層評估中,拋出存在的問題,
推動(dòng)問題的解決,這也是自動(dòng)化測試人員的一種價(jià)值體現(xiàn)。
②、流程管理
項(xiàng)目的需求迭代是否穩(wěn)定?從需求評審到開發(fā)、測試、發(fā)布上線是否有比較規(guī)范的流程?
如果需求迭代較快或者不穩(wěn)定,那么自動(dòng)化測試的腳本維護(hù)工作量將成倍增長;如果沒有較好的流程管理,自動(dòng)化工作的進(jìn)展總會(huì)遇到很多不可描述的坑,溝通成本,變更成本等,還會(huì)影響到
測試方案的設(shè)計(jì)和規(guī)劃。
在自動(dòng)化測試中,需要針對性的熟悉了解這些問題點(diǎn),做好應(yīng)對的準(zhǔn)備。自動(dòng)化測試過程中,變化是最大的挑戰(zhàn)?。?!
四、“目標(biāo)”一致
這里的“目標(biāo)”,指的是個(gè)人對工作的目標(biāo)設(shè)定和leader對自動(dòng)化工作的期望,站的角度不同,理解不同,因此期望的結(jié)果不同。并不是要達(dá)成完全的一致,我這里想表達(dá)的是溝通的重要性。
個(gè)人針對系統(tǒng)情況,技術(shù)架構(gòu),測試范圍的理解,對應(yīng)的自動(dòng)化測試方案設(shè)計(jì)和目標(biāo)設(shè)定,應(yīng)該與leader不斷溝通,不斷調(diào)整,達(dá)成一定程度上的一致,這樣也能避免很多后續(xù)的麻煩。
當(dāng)然,目標(biāo)的設(shè)定,也應(yīng)該根據(jù)具體的自動(dòng)化測試需求,進(jìn)行任務(wù)拆分,評審,不斷調(diào)整,這是一個(gè)持續(xù)不斷的調(diào)整的過程,需要耐心和堅(jiān)持!
五、運(yùn)行環(huán)境
自動(dòng)化測試腳本開發(fā),也需要基于不同的環(huán)境,而環(huán)境的選擇,需要考慮不同的情況,下面一一列舉說說我個(gè)人的思路:
1、SIT環(huán)境:
SIT環(huán)境,也稱為系統(tǒng)集成環(huán)境,就是我們常說的測試環(huán)境,如果測試腳本是基于SIT環(huán)境開發(fā)調(diào)試,那么就需要SIT環(huán)境相對來說比較穩(wěn)定。
但是大部分時(shí)候,SIT環(huán)境因?yàn)樾枰啻蔚奶峤粶y試,交叉影響較大,且SIT環(huán)境和生產(chǎn)環(huán)境還是有一定差異的(至于為什么,相信測試童鞋,都明白其中的痛點(diǎn))。
2、UAT環(huán)境:
UAT環(huán)境,就是我們所說的驗(yàn)收環(huán)境,當(dāng)然類似的,也有灰度環(huán)境等。UAT環(huán)境相對SIT環(huán)境來說,是比較穩(wěn)定且和生產(chǎn)的一致性較高的,很適合進(jìn)行自動(dòng)化測試腳本開發(fā)和調(diào)試,以及日常的測試回歸。
但自動(dòng)化測試的作用又不限于這點(diǎn),還可以進(jìn)行發(fā)布后的生產(chǎn)冒煙,定時(shí)輪詢測試等。
3、生產(chǎn)環(huán)境:
如果在生產(chǎn)環(huán)境進(jìn)行測試腳本開發(fā)和調(diào)試,以及測試執(zhí)行,那么就需要解決以下幾點(diǎn)問題:
①、網(wǎng)絡(luò)問題
一般我們的SIT和UAT環(huán)境都是部署在企業(yè)內(nèi)部,網(wǎng)絡(luò)環(huán)境也是走的內(nèi)網(wǎng),請求解析和外網(wǎng)有一定區(qū)別。在生產(chǎn)環(huán)境運(yùn)行腳本進(jìn)行回歸冒煙的話,需要考慮真實(shí)的用戶操作環(huán)境,不同的網(wǎng)絡(luò)對測試結(jié)果影響。
而且測試腳本中,sleep最好能不用就不用(特別是UI自動(dòng)化,強(qiáng)制等待容易帶來很多不可控的變數(shù))。
②、數(shù)據(jù)污染問題
生產(chǎn)環(huán)境進(jìn)行自動(dòng)化測試回歸冒煙,需要對測試所產(chǎn)生的數(shù)據(jù)進(jìn)行隔離處理,否則會(huì)導(dǎo)致業(yè)務(wù)受到影響,并且對生產(chǎn)的數(shù)據(jù)造成污染。常用的數(shù)據(jù)隔離方法如下:
測試白名單賬號、網(wǎng)絡(luò)標(biāo)記、線程標(biāo)記、測試數(shù)據(jù)落入對應(yīng)的測試庫,某些業(yè)務(wù)還可以使用MOCK對象和擋板。
關(guān)于數(shù)據(jù)隔離這幾點(diǎn),在性能測試中,也是需要考慮的一個(gè)重點(diǎn),當(dāng)然性能測試中也經(jīng)常使用這些方法進(jìn)行數(shù)據(jù)隔離,避免生產(chǎn)數(shù)據(jù)污染帶來的影響。
六、服務(wù)部署
之前的博客做接口測試需要哪些技能有介紹過,自動(dòng)化測試的核心是持續(xù)集成。那么一個(gè)獨(dú)立的不受影響的持續(xù)集成環(huán)境是必須的。
持續(xù)集成環(huán)境也叫作CI環(huán)境,類似的還有CD環(huán)境(持續(xù)交付)。
這些應(yīng)用,在敏捷測試中,應(yīng)用的比較多,不過目前行業(yè)內(nèi),我個(gè)人了解到,越來越多的企業(yè)開始搭建持續(xù)集成環(huán)境,這樣做的好處是很多的,比如:
①、版本迭代提測,可以通過CI服務(wù)一鍵提交,節(jié)省時(shí)間,提高效率;
②、如果需要造大量的測試數(shù)據(jù),可以通過一個(gè)小腳本,只需要進(jìn)行配置,點(diǎn)擊啟動(dòng)按鈕即可;
③、發(fā)布生產(chǎn)環(huán)境時(shí)候,可以通過CI服務(wù)自動(dòng)化打包部署,避免了人手工打包配置時(shí)候的誤操作等問題;
④、自動(dòng)化測試腳本,部署在CI環(huán)境后,只需要點(diǎn)擊啟動(dòng),或者設(shè)置出發(fā)條件,定時(shí)任務(wù)的形式,來做到生產(chǎn)定時(shí)輪詢,發(fā)布后冒煙等測試工作;
七、測試策略
這里的策略,可以從下面幾個(gè)角度來說:
1、任務(wù)拆分
確認(rèn)測試范圍和需求指標(biāo)后,將自動(dòng)化測試任務(wù)進(jìn)行粒度更小的拆分,將工作內(nèi)容所需時(shí)間精確到人/天的范圍,按時(shí)完成任務(wù),有問題不斷調(diào)整;
2、優(yōu)先級
任務(wù)拆分后,對任務(wù)進(jìn)行優(yōu)先級排序,通過評審溝通,確認(rèn)先完成哪些任務(wù),然后完成哪些等。
測試方案設(shè)計(jì)中,可以考慮分為第一期、第二期自動(dòng)化測試任務(wù),比如第一期實(shí)現(xiàn)自動(dòng)化測試在一定程度上的覆蓋率,先實(shí)現(xiàn)PC端的自動(dòng)化測試,第二期可以考慮移動(dòng)端的自動(dòng)化測試覆蓋,
第三期可以考慮自動(dòng)化測試平臺的開發(fā)等等。有目標(biāo)有計(jì)劃,根據(jù)項(xiàng)目變化和進(jìn)度不斷調(diào)整。
自動(dòng)化任務(wù)的優(yōu)先級排序,可以參考這幾點(diǎn):
①、用戶使用頻率越高的優(yōu)先級應(yīng)該最高;
②、系統(tǒng)基礎(chǔ)功能應(yīng)該排在優(yōu)先級前列;
③、系統(tǒng)核心功能(比如支付、訂單)應(yīng)該較早的覆蓋;
④、歷史記錄中生產(chǎn)出現(xiàn)問題叫多的功能點(diǎn),應(yīng)該考慮盡可能的覆蓋;
3、工時(shí)預(yù)估
前期的準(zhǔn)備工作(比如范圍確認(rèn)、需求分析、CI環(huán)境部署、測試方案設(shè)計(jì)、技術(shù)框架選型、文檔整理等)完成后,需要針對具體的拆分后的任務(wù)進(jìn)行工時(shí)預(yù)估,以確認(rèn)工作階段性的進(jìn)展,
方便隨時(shí)調(diào)整。工時(shí)預(yù)估需要考慮以下幾點(diǎn):
①、自動(dòng)化測試人員個(gè)人的技術(shù)能力,特點(diǎn);
②、項(xiàng)目情況、流程管理、系統(tǒng)架構(gòu)的變化程度;
③、測試方案技術(shù)實(shí)現(xiàn)的難易程度;
八、解決問題
自動(dòng)化測試道路上,全是坑?。。?/p>
工作中我們會(huì)遇到很多問題,有溝通問題、管理問題、技術(shù)難點(diǎn)、以及一些不可描述的問題,但只有想辦法解決這些問題,我們才能在工作中不斷提升,完成工作,獲得該有的收獲。
不同的企業(yè)存在不同的各種各樣的問題,沒有完美的公司,因此工作中,學(xué)會(huì)適應(yīng)環(huán)境,融洽溝通,也是工作中必須的一項(xiàng)內(nèi)容。
工作的本質(zhì)就是拿錢消災(zāi),解決問題,創(chuàng)造價(jià)值?。?!
所以,良好的心態(tài),堅(jiān)持不懈的態(tài)度,解決問題的思路,是需要自動(dòng)化測試童鞋所具備的。。。
以上就是我個(gè)人在自動(dòng)化測試過程中遇到的一些問題,挑戰(zhàn),以及自己的一些思考和解決方法,希望能為看到的童鞋提供一定的思路和幫助,僅供參考。。。
當(dāng)然,其中很多內(nèi)容,拿出來單獨(dú)說,也有很多值得探討的地方,限于篇幅這里就不一一分析,后續(xù)會(huì)不斷更新。。。
最后: 為了回饋鐵桿粉絲們,我給大家整理了完整的軟件測試視頻學(xué)習(xí)教程,朋友們?nèi)绻枰梢宰孕忻赓M(fèi)領(lǐng)取 【保證100%免費(fèi)】
文章來源:http://www.zghlxwxcb.cn/news/detail-669064.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-669064.html
到了這里,關(guān)于值得深思的八個(gè)自動(dòng)化測試疑難雜癥的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!