一個(gè)完整的自動(dòng)化測試平臺應(yīng)該包含什么

??提到自動(dòng)化測試山叮,很常見的誤解就是把自動(dòng)化測試等同于某種自動(dòng)化測試工具吠撮,例如最廣為人知的Selenium,但這只是狹義上的理解碳却。在真正的項(xiàng)目實(shí)踐中,自動(dòng)化測試包含的內(nèi)容很多新啼,不僅僅只是某種自動(dòng)化測試工具追城,我理解的一個(gè)成熟的自動(dòng)化測試平臺,應(yīng)該包含以下這些方面:

  • 對被測系統(tǒng)進(jìn)行操作的自動(dòng)化框架或者工具:例如web程序的Selenium, 移動(dòng)端程序的Appium燥撞,windows應(yīng)用程序的white座柱,autoit,QTP等物舒。請注意色洞,它們只是自動(dòng)化框架,提供了能夠自動(dòng)化操作被測系統(tǒng)的功能冠胯,不是測試框架火诸,因?yàn)樗鼈儾痪邆錅y試框架基本的用例組織,結(jié)果校驗(yàn)等功能荠察,所以在實(shí)踐中基本上都是需要和一個(gè)測試框架集成起來使用的置蜀。
  • 測試框架:與自動(dòng)化框架集成奈搜,提供用例整理,分類盯荤,調(diào)度馋吗,結(jié)果校驗(yàn),報(bào)告輸出等功能秋秤,例如Java的Junit, TestNG, Python的Pytest, Ruby的Rspec, 以及能夠適應(yīng)各種語言的Cucumber等宏粤。
  • 測試環(huán)境構(gòu)建:使用Vmware,AWS等虛擬化和云技術(shù)構(gòu)建和管理操作系統(tǒng)級別的服務(wù)器灼卢,使用docker等容器化技術(shù)構(gòu)建和管理應(yīng)用級別的服務(wù)绍哎。當(dāng)需要多個(gè)容器時(shí)可以使用docker compose,docker swarm等鞋真,再復(fù)雜時(shí)可以使用kubernetes來管理和維護(hù)整個(gè)環(huán)境崇堰。理想狀態(tài)下測試環(huán)境應(yīng)該是自動(dòng)化的一鍵式部署,有完整的部署腳本且納入版本管理系統(tǒng)控制灿巧「习溃可追溯,可回滾抠藕,可以很方便的從零開始構(gòu)建饿肺,能夠快捷的在本地構(gòu)建起一個(gè)測試環(huán)境,測試人員有自己的專屬測試環(huán)境盾似,對于環(huán)境有控制權(quán)敬辣,同時(shí)具備維護(hù)環(huán)境的能力,可以按照需要隨時(shí)構(gòu)建或者銷毀零院。
  • 測試數(shù)據(jù)準(zhǔn)備:自動(dòng)化測試需要完整的溉跃,可控的測試數(shù)據(jù)作為支持,否則自動(dòng)化測試就是擺設(shè)告抄,無法預(yù)判的執(zhí)行結(jié)果反而會成為團(tuán)隊(duì)的負(fù)擔(dān)撰茎。主要的障礙其實(shí)在于人員能力和權(quán)限管理,需要測試人員對于業(yè)務(wù)和系統(tǒng)有深刻的了解打洼,才能準(zhǔn)確的準(zhǔn)備所需要的數(shù)據(jù)(例如業(yè)務(wù)中的操作和數(shù)據(jù)對應(yīng)哪些API的哪些字段龄糊,又對應(yīng)數(shù)據(jù)庫中的哪些表)。數(shù)據(jù)的準(zhǔn)備從底向上可以分為直接構(gòu)建數(shù)據(jù)庫(一般比較難實(shí)現(xiàn)募疮,需要對數(shù)據(jù)庫具有權(quán)限炫惩,且熟悉表結(jié)構(gòu),但卻是最高效的方法)阿浓,調(diào)用API創(chuàng)建數(shù)據(jù)(需要熟悉被測系統(tǒng)API消息體的結(jié)構(gòu)他嚷,并且有權(quán)限),通過UI自動(dòng)化腳本創(chuàng)建(可見性最好,但是最低效筋蓖,最不穩(wěn)定)卸耘,在執(zhí)行完自動(dòng)化測試后也需要有相應(yīng)的方法來清理數(shù)據(jù)。還有一種方法是通過mock server扭勉,這樣既能解決依賴系統(tǒng)的問題鹊奖,也能完成依賴數(shù)據(jù)的準(zhǔn)備苛聘,但是開發(fā)mock server需要一定的工作量涂炎,且需要對系統(tǒng)和業(yè)務(wù)非常熟悉,而且使用mock server會導(dǎo)致測試的不真實(shí)性设哗,無法發(fā)現(xiàn)真實(shí)系統(tǒng)集成之間的問題唱捣。Java的spring boot,wiremock网梢,python的flask震缭,Ruby的sinatra等都可以用來做mock server。
  • 并發(fā)執(zhí)行:并發(fā)執(zhí)行是提高測試執(zhí)行速度的有效方法战虏,有不同的方法可以實(shí)現(xiàn)并發(fā)執(zhí)行拣宰,比如使用構(gòu)建工具的并行測試功能,例如maven的surefire和failsafe烦感,gradle的多線程執(zhí)行功能巡社,cucumber-jvm的并發(fā)執(zhí)行。也可以使用其他工具或者庫來實(shí)現(xiàn)萍嬉,例如ruby的parallel-test恳谎,再復(fù)雜一些的成玫,可以寫個(gè)專門的程序或者服務(wù)來將測試的分發(fā)到不同的docker容器上執(zhí)行,在BAT等頂尖互聯(lián)網(wǎng)公司的測試分享中有過這樣的案例朝群。并發(fā)執(zhí)行的另一個(gè)難題是需要解決好測試用例,測試數(shù)據(jù)中符,測試環(huán)境的隔離性問題姜胖,避免出現(xiàn)并發(fā)時(shí)互相干擾的情況。這就需要在設(shè)計(jì)測試用例時(shí)做好解藕淀散,每個(gè)測試用例或者測試場景都是可以單獨(dú)執(zhí)行的右莱,不存在用例間互相依賴的情況。在測試數(shù)據(jù)的準(zhǔn)備上吧凉,要做好數(shù)據(jù)的唯一性和獨(dú)立性隧出,執(zhí)行前預(yù)先準(zhǔn)備好數(shù)據(jù),執(zhí)行后清除無用的數(shù)據(jù)阀捅,某些場景還要考慮共享數(shù)據(jù)在多線程運(yùn)行時(shí)的同步胀瞪,死鎖等問題,不過目前主流的編程語言例如Java, Python在處理多線程編程時(shí)都有很成熟的方法。關(guān)于測試環(huán)境的準(zhǔn)備凄诞,根據(jù)項(xiàng)目場景也有不同的方法圆雁,可以在多個(gè)測試環(huán)境上執(zhí)行,也可以只在一個(gè)環(huán)境上執(zhí)行帆谍,但是某些系統(tǒng)可能存在賬戶不能同時(shí)登陸等問題伪朽,需要提前考慮或者規(guī)避。在這里我想再替docker打個(gè)廣告汛蝙,docker容器技術(shù)的輕量化烈涮,低開銷啟動(dòng)銷毀,容器間互相隔離等特點(diǎn)窖剑,非常適合用來快速構(gòu)建測試環(huán)境和并發(fā)執(zhí)行測試坚洽。
  • 與CI集成:自動(dòng)化測試只有與CI集成才能最大的發(fā)揮作用,否則如果只能在測試人員的機(jī)器上執(zhí)行西土,將存在結(jié)果對團(tuán)隊(duì)不可見讶舰,缺乏規(guī)范的調(diào)度策略,無法引起團(tuán)隊(duì)的重視等問題需了,導(dǎo)致自動(dòng)化測試形同虛設(shè)跳昼。而一個(gè)完整的CI流水線也需要包含自動(dòng)化測試,在敏捷理念中有一句話肋乍,沒有自動(dòng)化測試的CI不能稱之為CI鹅颊。自動(dòng)化測試與CI集成在技術(shù)上并不難實(shí)現(xiàn),本質(zhì)就是把測試由在本地執(zhí)行放到CI的執(zhí)行機(jī)上去執(zhí)行住拭,目前主流的CI工具挪略,例如Jenkins,Bamboo滔岳,CircleCI等都能很容易的完成配置杠娱。需要注意的依然是測試環(huán)境,這里的測試環(huán)境包含兩部分谱煤,被測系統(tǒng)的環(huán)境和執(zhí)行自動(dòng)化測試的環(huán)境摊求。被測系統(tǒng)的環(huán)境需要能夠被CI執(zhí)行機(jī)訪問,執(zhí)行自動(dòng)化測試的環(huán)境一般在CI的執(zhí)行機(jī)上刘离,就需要配置CI執(zhí)行機(jī)的環(huán)境了室叉,例如Java或者Python環(huán)境,Webdriver硫惕,瀏覽器等等茧痕。而這又會牽扯很多細(xì)節(jié)問題,例如CI的執(zhí)行機(jī)一般都是Linux環(huán)境恼除,無法運(yùn)行圖形界面踪旷,需要使用瀏覽器的headless模式曼氛,依然強(qiáng)烈推薦使用docker來封裝整個(gè)的測試執(zhí)行環(huán)境,這樣在CI執(zhí)行機(jī)上只需要docker pull, docker run就可以了令野,避免因?yàn)榄h(huán)境舀患,依賴包等差異帶來眾多的問題。在我的另一篇文章中有介紹如何在docker容器中執(zhí)行自動(dòng)化測試气破。
  • 與用例管理系統(tǒng)集成:自動(dòng)化測試執(zhí)行后都會生成測試報(bào)告聊浅,但是更進(jìn)一步,如果能夠和用例管理系統(tǒng)集成现使,自動(dòng)標(biāo)注執(zhí)行結(jié)果低匙,那就更省事了,在很多項(xiàng)目中也是常見的做法朴下。不同公司和項(xiàng)目使用的用例管理系統(tǒng)千差萬別努咐,有些還是內(nèi)部開發(fā)的系統(tǒng),需要根據(jù)實(shí)際情況分析解決殴胧。但一般都需要用例管理系統(tǒng)能夠提供標(biāo)注執(zhí)行結(jié)果的API,在測試執(zhí)行后有專門的程序來收集整理測試報(bào)告佩迟,再調(diào)用用例管理系統(tǒng)的API來標(biāo)注結(jié)果团滥。以業(yè)界名氣最大的JIRA舉例,就提供了API可以查詢和標(biāo)注test case的執(zhí)行結(jié)果报强,所以只需要將執(zhí)行結(jié)果按照API規(guī)定消息格式整理好灸姊,調(diào)用即可,并不難實(shí)現(xiàn)秉溉。

??以上介紹了一個(gè)通用的自動(dòng)化測試平臺需要包含哪些功能力惯,以及這些功能如何實(shí)現(xiàn)。如果是移動(dòng)端的測試平臺召嘶,則還有更多的問題父晶,例如不同設(shè)備的兼容性,如何并發(fā)和調(diào)度多臺不同設(shè)備弄跌,在BAT這些頂尖互聯(lián)網(wǎng)公司有成熟的實(shí)踐甲喝,從本質(zhì)上看,構(gòu)建一個(gè)比較完善的自動(dòng)化測試平臺铛只,需要對被測系統(tǒng)有深入的了解埠胖,有扎實(shí)的軟件測試和編程基礎(chǔ),熟悉至少一門編程語言淳玩,熟悉CI和Devops直撤,有比較廣的知識面和技術(shù)棧,知道如何選用合適的工具和框架來解決問題蜕着。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谋竖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌圈盔,老刑警劉巖豹芯,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異驱敲,居然都是意外死亡铁蹈,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門众眨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來握牧,“玉大人,你說我怎么就攤上這事娩梨⊙匮” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵狈定,是天一觀的道長颂龙。 經(jīng)常有香客問我,道長纽什,這世上最難降的妖魔是什么措嵌? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮芦缰,結(jié)果婚禮上企巢,老公的妹妹穿的比我還像新娘。我一直安慰自己让蕾,他們只是感情好浪规,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著探孝,像睡著了一般笋婿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上再姑,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天萌抵,我揣著相機(jī)與錄音,去河邊找鬼元镀。 笑死绍填,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的栖疑。 我是一名探鬼主播讨永,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼遇革!你這毒婦竟也來了卿闹?” 一聲冷哼從身側(cè)響起揭糕,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎锻霎,沒想到半個(gè)月后著角,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡旋恼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年吏口,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冰更。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡产徊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蜀细,到底是詐尸還是另有隱情舟铜,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布奠衔,位于F島的核電站谆刨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏涣觉。R本人自食惡果不足惜痴荐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望官册。 院中可真熱鬧,春花似錦难捌、人聲如沸膝宁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽员淫。三九已至,卻和暖如春击敌,著一層夾襖步出監(jiān)牢的瞬間介返,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工沃斤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留圣蝎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓衡瓶,卻偏偏與公主長得像徘公,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子哮针,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容