如何讓自動化測試產(chǎn)生價值

如何讓自動化測試產(chǎn)生價值解虱?

千乘計劃-自動化優(yōu)先

只有將自動化切入日常測試中,才能將飄于空中的技術(shù)產(chǎn)生實(shí)際的價值,無論是DevOps墨坚、CICD等其他的一些融合開發(fā)的概念,質(zhì)量的自動化保障都是基礎(chǔ)設(shè)施映挂。

本次主要講一下現(xiàn)有團(tuán)隊在自動化方面的一些探索和落地泽篮。


自動化優(yōu)先

? ? ? ? 自動化優(yōu)先,既在QA人員介入測試時柑船,就需要考慮需求自動化測試動作帽撑。需求中需要哪種程度的自動化介入,需要哪些自動化測試動作的介入鞍时,自動化測試需要哪些前置資源亏拉,自動化測試所花費(fèi)成本,自動化測試在本次需求中的收益點(diǎn)逆巍;了解清楚了這些內(nèi)容及塘,就能夠確定自動化是否要做,怎么做锐极。

根據(jù)實(shí)際的項目經(jīng)驗(yàn)笙僚,自動化優(yōu)先具有以下優(yōu)點(diǎn):

節(jié)約自動化編寫時間(項目熟悉成本)、在測試過程中自動化的用例能夠支持測試溪烤、加快定版回歸效率味咳、外部聯(lián)調(diào)測試中支持測試。

材料:外部接口文檔檬嘀、web接口契約

執(zhí)行過程

在實(shí)際的自動化測試過程中槽驶,主要涉及以下的流程&動作:

自動化執(zhí)行

需求分析

前面有提到,我們的自動化手段有很多鸳兽,在實(shí)際項目中掂铐,無論是基于UI、WEB場景、SRV服務(wù)代碼邏輯覆蓋全陨;針對需求的大小爆班、涉及面、復(fù)雜度辱姨、類型(UI柿菩、接口)枢舶,都有使用場景替久,不同工具方法使用在不同的場景發(fā)揮恰到好處的價值蚯根。

具體來講:

接口請求返回調(diào)整的需求颅拦,僅需要針對歷史腳本文檔進(jìn)行維護(hù)即可距帅。

新增完整小模塊的需求锥债,針對模塊功能痊臭,上線模塊功能自動化覆蓋广匙。

調(diào)整/重構(gòu)核心系統(tǒng)的需求,具體分析本次需求對核心系統(tǒng)影響潮剪,了解變更設(shè)計的歷史腳本維護(hù)抗碰,了解需要對哪些歷史腳本進(jìn)行維護(hù)弧蝇,并了解需要新增的邏輯/接口看疗。

全新系統(tǒng)開發(fā)類的需求两芳,了解本次需求涉及測試類型怖辆,針對UI、WEB接口佑笋、srv服務(wù)等類型蒋纬,考慮需要采用的合適測試類型蜀备。?

腳本設(shè)計

根據(jù)需求分析中得到的需求類型和涉及的測試類型碾阁,涉及對應(yīng)的測試用例脂凶,此處只討論接口測試相關(guān)內(nèi)容蚕钦。

一個接口測試用例應(yīng)包含以下幾個模塊:初始化(數(shù)據(jù)初始化嘶居、配置初始化)促煮、業(yè)務(wù)邏輯模塊(內(nèi)包含基礎(chǔ)的接口)菠齿、工具類(conditionSleep泞当、加密加簽、解密等)嚷量、數(shù)據(jù)校驗(yàn)蝶溶、數(shù)據(jù)輸出抖所。

很多時候完整自動化用例并不適用小版本迭代田轧,在進(jìn)行小版本功能迭代時傻粘,更多是進(jìn)行部分接口或邏輯的變更帮掉。針對小的邏輯變更時蟆炊,可以參考開發(fā)代碼進(jìn)行代碼行邏輯覆蓋涩搓,結(jié)合jacoco工具混狠,做到對開發(fā)有效代碼的邏輯覆蓋。通過這種方式的測試痛黎,無需上層復(fù)雜場景高成本覆蓋湖饱,僅通過底層接口的自動化測試井厌,來保證底層提供功能的符合性仅仆。

以下示例為一個完整的場景測試用例墓拜。

自動化測試用例

基礎(chǔ)配置

在開始編寫腳本之前夏醉,需要準(zhǔn)備好所需要的資料(如:外部接口文檔、WEB接口文檔靶擦、相關(guān)規(guī)約說明)奢啥。

在進(jìn)行基礎(chǔ)配置準(zhǔn)備中需要遵循一些基本原則桩盲,即可維護(hù)性,通用性柬姚,原子性量承。通常這類配置都是能夠被不同業(yè)務(wù)場景撕捍,甚至業(yè)務(wù)線共用的忧风,保持其通用性將會對后續(xù)的腳本開發(fā)腿宰、維護(hù)有極大的便利性吃度。

根據(jù)實(shí)際系統(tǒng)的需求,針對外部接口文檔配置所需要的MOCK(通常情況下為保證自動化的通過率拖刃,外部系統(tǒng)的接口采用MOCK方式支持)兑牡;依據(jù)WEB接口文檔,配置基礎(chǔ)的WEB接口參數(shù)等苞也。

PS:MOCK系統(tǒng)的支持需要基礎(chǔ)設(shè)施的支持如迟,這個不在本次討論范圍內(nèi),后續(xù)有機(jī)會討論玲销。

MOCK配置:MOCK開關(guān)初始化贤斜、MOCK路由配置、 MOCK請求數(shù)據(jù)準(zhǔn)備洽糟、MOCK返回數(shù)據(jù)準(zhǔn)備拍霜。

WEB接口配置:服務(wù)越驻、公共路徑(功能模塊)、方法配置(請求參數(shù)并巍、返回參數(shù))。

MicService接口配置:服務(wù)、服務(wù)組標(biāo)識(ServiceGroup)肾档、接口(InterfaceInfo)、方法(Method)

不過在沒有經(jīng)驗(yàn)的情況下,這些可能無法一次就做的比較好配阵,那么就一步一步迭代即可,初步保持基本原則,在遇到具體的多元化引用時進(jìn)行優(yōu)化派昧。

腳本編寫

在開始腳本編寫的時候淮椰,要根據(jù)腳本設(shè)計實(shí)施,針對不同的模塊類型有具體差異性。

常見的模塊類型有:公共工具模塊陆错、數(shù)據(jù)初始化、數(shù)據(jù)校驗(yàn)?zāi)K金赦、腳本場景支撐模塊音瓷。

公共工具類模塊主要提供一些工具屬的支撐,如:條件等待(有些場景異步返回結(jié)果或返回結(jié)果是非實(shí)時夹抗,需要根據(jù)某一個條件(通常是數(shù)據(jù)庫數(shù)據(jù))判斷是否進(jìn)行下一步操作)绳慎、加簽加密(某些外部接口請求需要對請求參數(shù)進(jìn)行加密加簽處理,通常這類操作是通用的)漠烧、解密(有些外部請求的返回已被加密杏愤,在進(jìn)行后續(xù)操作是需要進(jìn)行解密;有些數(shù)據(jù)檢查需要進(jìn)行解密后才能校驗(yàn))已脓。

數(shù)據(jù)初始化模塊包含場景用例運(yùn)行所需的初始數(shù)據(jù)珊楼,這類數(shù)據(jù)來源有:數(shù)據(jù)庫現(xiàn)有數(shù)據(jù)(現(xiàn)有可進(jìn)行場景執(zhí)行的賬戶)、根據(jù)規(guī)則實(shí)時生成的數(shù)據(jù)(如:身份證度液、手機(jī)號厕宗、訂單號)、由其他用例執(zhí)行后輸出的數(shù)據(jù)(如開通腳本輸出的開通用戶數(shù)據(jù)堕担、借款腳本生成的借款單數(shù)據(jù))

數(shù)據(jù)校驗(yàn)?zāi)K用來對數(shù)據(jù)落地進(jìn)行邏輯符合性校驗(yàn)已慢,通過對場景運(yùn)行中涉及到的數(shù)據(jù)落地表數(shù)據(jù)進(jìn)行邏輯符合性校驗(yàn),保證自動化用例的有效性霹购。數(shù)據(jù)校驗(yàn)也可以分層分級進(jìn)行配置佑惠,針對不同用途的腳本(冒煙、回歸、功能測試)膜楷,選擇覆蓋不同的表乍丈、字段檢查項。

腳本場景支撐模塊是場景用例組裝的基礎(chǔ)把将,腳本設(shè)計中包含此模塊詳細(xì)設(shè)計。具體來講忆矛,通過對需求業(yè)務(wù)察蹲、接口各個功能分析,劃分出場景中相對固定的一些模塊(此處劃分有以下原則可以遵循:接口上下文在場景多元化時無需增減調(diào)整催训、無參數(shù)變化洽议、無異步調(diào)用出,則可以劃分為一個模塊漫拭。在模塊劃分清楚后亚兄,依據(jù)已經(jīng)實(shí)現(xiàn)的原則層用例,將各個子用例打包成一些固化的模塊采驻,組織好各個原子接口的參數(shù)輸入和輸出以及一些基本的校驗(yàn)审胚。

自動化測試中很大一部分的工作都在此時完成,腳本的效率礼旅、合理性膳叨、魯棒性都是在此時通過具體實(shí)施來落地。腳本的優(yōu)化性都有一個相對度痘系,不必過于追求對腳本進(jìn)行優(yōu)化菲嘴,如同開發(fā)代碼一樣,優(yōu)化是沒有極限的汰翠,只要滿足當(dāng)前使用要求龄坪,遵循一些必要原則即可。

場景組裝

自動化想要實(shí)現(xiàn)的覆蓋都會通過場景組裝來實(shí)現(xiàn)复唤,需要覆蓋多少場景是根據(jù)每個團(tuán)隊業(yè)務(wù)需要來確定健田,有些需要做盡可能多場景覆蓋,有些僅需要做核心邏輯覆蓋即可苟穆。

場景組裝需要控制覆蓋場景的粒度抄课,一旦過于追求場景覆蓋度,維護(hù)成本就會失控雳旅。

在進(jìn)行場景組裝時跟磨,會發(fā)現(xiàn)有些前置的實(shí)現(xiàn)存在不合理,此時及時優(yōu)化不合理的地方并做記錄攒盈,方面后續(xù)腳本優(yōu)化時有的放矢抵拘。

場景組裝示例

調(diào)試優(yōu)化

腳本編寫完成后,通過不斷的運(yùn)行型豁,會發(fā)現(xiàn)腳本中一些不合理的地方僵蛛。這些不合理的地方主要有:耗時較久尚蝌、不穩(wěn)定(偶爾失敗)充尉、腳本間互斥(配置初始化不合理)飘言、通過率較低等一些問題。

針對這些問題驼侠,其實(shí)上面已經(jīng)講過方法姿鸿,在腳本編寫的階段未嚴(yán)格遵循一些原則或沒有意識到這些問題,此時對應(yīng)做優(yōu)化即可倒源。

耗時較久的問題苛预,需要做下取舍或通過技術(shù)手段來彌補(bǔ)腳本的等待時間,針對某些需要等待過久的腳本笋熬,單獨(dú)拆出做自動化热某。


用例執(zhí)行耗時

不穩(wěn)定的問題,一般都是檢查點(diǎn)不合理導(dǎo)致的胳螟,某些檢查點(diǎn)未做好昔馋,會出現(xiàn)偶爾失敗的場景。有些檢查點(diǎn)不必做過于強(qiáng)的校驗(yàn)旺隙,抓住自動化的目的绒极。

腳本間互斥的問題,此類問題就是腳本設(shè)計問題了蔬捷,在考慮好腳本場景要求后垄提,對每個腳本都要做一些配置校驗(yàn)或初始化,保證腳本運(yùn)行期間業(yè)務(wù)周拐、系統(tǒng)配置是預(yù)期的铡俐。另,在不同腳本運(yùn)行期間由于運(yùn)行順序不合理業(yè)務(wù)有此類問題妥粟,此時可以調(diào)整用例的線性運(yùn)行順序审丘。

通過率較低的問題,在腳本初步調(diào)試完成后勾给,運(yùn)行一段時間發(fā)現(xiàn)通過率較低滩报,這個在自動化初期階段較常見,一般都是外部系統(tǒng)不穩(wěn)定導(dǎo)致的問題播急。此時需要針對不穩(wěn)定的外部系統(tǒng)脓钾,做些MOCK,必要時桩警,可以要求研發(fā)提供必要的接口支持業(yè)務(wù)數(shù)據(jù)順利流轉(zhuǎn)可训。


自動化是一個持續(xù)化的過程,任何團(tuán)隊在落地自動化的過程中都會遇到很多問題,甚至是長期無法產(chǎn)生價值握截,產(chǎn)生價值無法量化飞崖,這些都需要質(zhì)量團(tuán)隊的管理人員去思考,去想辦法解決谨胞。

以上淺顯的東西固歪,如對你有些幫助,不勝榮幸胯努。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末昼牛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子康聂,更是在濱河造成了極大的恐慌,老刑警劉巖胞四,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恬汁,死亡現(xiàn)場離奇詭異,居然都是意外死亡辜伟,警方通過查閱死者的電腦和手機(jī)氓侧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來导狡,“玉大人约巷,你說我怎么就攤上這事『蹬酰” “怎么了独郎?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長枚赡。 經(jīng)常有香客問我氓癌,道長,這世上最難降的妖魔是什么贫橙? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任贪婉,我火速辦了婚禮,結(jié)果婚禮上卢肃,老公的妹妹穿的比我還像新娘疲迂。我一直安慰自己,他們只是感情好莫湘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布尤蒿。 她就那樣靜靜地躺著,像睡著了一般逊脯。 火紅的嫁衣襯著肌膚如雪优质。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機(jī)與錄音巩螃,去河邊找鬼演怎。 笑死,一個胖子當(dāng)著我的面吹牛避乏,可吹牛的內(nèi)容都是我干的爷耀。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼拍皮,長吁一口氣:“原來是場噩夢啊……” “哼歹叮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起铆帽,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤咆耿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后爹橱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體萨螺,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年愧驱,在試婚紗的時候發(fā)現(xiàn)自己被綠了慰技。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡组砚,死狀恐怖吻商,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情糟红,我是刑警寧澤艾帐,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站盆偿,受9級特大地震影響掩蛤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜陈肛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一揍鸟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧句旱,春花似錦阳藻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至啃匿,卻和暖如春蛔外,著一層夾襖步出監(jiān)牢的瞬間蛆楞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工夹厌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留豹爹,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓矛纹,卻偏偏與公主長得像臂聋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子或南,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

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

  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,925評論 6 13
  • 背景與意義 境內(nèi)度假是一個低頻孩等、與節(jié)假日典型相關(guān)的業(yè)務(wù),流量在節(jié)假日較平日會上漲五到十幾倍采够,會給生產(chǎn)系統(tǒng)帶來非常大...
    生活的探路者閱讀 1,674評論 0 7
  • feisky云計算肄方、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,827評論 0 5
  • 前言 在開始本文之前,需要聲明以下關(guān)鍵詞: 1.mock測試: mock測試就是在測試過程中蹬癌,對于某些不容...
    apiaoqzh閱讀 675評論 0 1
  • 思考自動化測試--框架(二) 自動化測試工具其實(shí)是千萬種的扒秸,一般青年,上手就用工具冀瓦,弄點(diǎn)小工具執(zhí)行執(zhí)行腳本,出出報...
    亂步閱讀 1,418評論 2 12