我兩年的工作歷程

離開A公司,去了一家創業公司,0開始組建自動化團隊,為了早點看到自動化效果,所以我優先選擇在接口層做自動化。因為當時只有我一個人做所以我就想著盡可能少代碼,易維護,所以選擇通過excel管理api的方式來做接口自動化。 大概做法:

  1. 在excel配置所有接口信息(接口名,接口地址,請求方式,請求參數,最基礎的校驗點等等)
Paste_Image.png

2.編寫個框架(poi+log4j+httpclient+testng整合),寫個方法做到逐行讀取excel文件,自動發起請求,并自動化做一些最基本腳本(狀態碼,必須包含什么字段等)并把結果寫回到excel。
  
這種方式雖然免去了一個一個腳本寫代碼的麻煩,但這個過程其實心里知道存在下面兩個問題:

  1. 接口校驗不全,只能保證服務沒掛,很難保證接口數據是否準確
  2. 開始意識到如果自動化組不擴大,難成事(一個人的思路有限)

遇到這兩個問題一開始我當然希望通過添加人來解決問題,后來因為很多原因始終招不到人,所以我就開始內部發展,想讓現有的QA更多的參與到自動化進來,但是因為他們不懂代碼所以我一邊每周定期給他們上課,另一方面就是引入soapUI工具來做接口自動化,但這個工具用不到2個迭代就被我拋棄了原因一來工具用的是破解版經常崩潰二來soapUI生成導出的腳本是一個xml文件,而且多人參與非常難合并。
  我又把excel管理api驅動的方式拿出來,改了下變成了(詳細可見 http://blog.csdn.net/meyoung01/article/details/46008439 )簡單說就是(httpclient+testng+poi+log4j+mybatis框架的整合),這會我只做了通過讀取excel來拼接我的請求,而所有的返回我都通過代碼去校驗,這樣校驗完善了,當然這樣就意味著一個api我需要寫多個case了,增加了不少代碼量,當然通過封裝,其實每個接口寫法都大同小異,又這段時間的簡單培訓帶了QA,后面基本上這活就交給她了,這過程excel維護也一直是個工作量,也是考慮過把excel里面的api維護也自動化完成,后來因為發現開發文檔維護很差,所以只是提了想法并沒真正實踐。
  在創業公司除了做api,還一大塊就是UI自動化。UI自動化當時web端我選用的是webdriver,移動端我那會比較生疏,通過對市面上流行的UI自動化逐個寫demo了解優缺點后(當時畫了個圖 http://naotu.baidu.com/file/4196dc577d4c220ceca11fd90f0077a5?token=541f96728fa87f75

auto.png
)選用的是appium。 因為跟webdriver框架用法等極像,所以封裝過程也類似而且同時支持ios和android。
  那webdriver這套的封裝大概做了:

  1. 重新封裝driver類
  2. 封裝查找元素的方法做到智能等待
  3. 常用操作的二次封裝
  4. log4j 整合實現每個步驟打印log便于調試和定位問題
  5. 常用類整合例如日期,隨機數excel處理等
  6. Testng整合 重新封裝Assert類,而外添加了幾種校驗方式和重新封裝fail方法,失敗自動截圖。重新封裝IAnnotationTransformer和TestListenerAdapter 做到失敗自動截圖和自動化重跑
  7. 編寫case采用page-object+數據驅動的理念
  8. 結合jenkins 完成每日構建和代碼變更自動構建以及構建失敗自動化發郵件和測試報告
      在創業公司還幫QA完成了公共用例的編寫,case等級的定義等問題

離開創業公司去了一家上市公司,當時沖著團隊玩BDD去的和團隊一個移動端自動化做得還不錯的人去。
  剛進去這邊團隊已經玩幾個月的bdd了,采用的是ruby語言cucumber+calabash+webdriver,第一個迭代完全是邊學邊做中完成,沒有過多想法。當第二個迭代開始,老大要求提高自動化的覆蓋率,而那時我們已經感覺很多能自動化的case我們基本完成了,想要提高覆蓋率需要著手解決那些我們之前認為無法自動化或者難以自動化實現的case,通過統計其實我們發現很多case沒法自動化基本都是因為校驗難做或實現成本很大的,例如QAcase描述XXX控件顯示XX顏色,XXX控件在靠左顯示什么的等等。這時我們商量提出半自動化做法。
  半自動化做法實現還是相對簡單,半自動化的case我們自動化腳本能做到前面的when的操作,無法完成then的操作,所以我們就執行到這類then操作時進行截圖,并把截圖圖片和then語句同時調用api傳給一個半自動化校驗平臺,這個半自動化校驗web平臺其實簡單的實現了:

  1. 截圖的圖片展示
  2. 對應then語句的展示
  3. 通過人工校驗判斷是否通過。
      這樣每次跑完所有腳本,之前很多還需要QA手工去校驗的case現在只需要去平臺上面通過人為的去判斷圖片展示和then描述是否一致。
      bdd玩一段時間,原本設想著開發一旦提交代碼,我們就可以立即去執行新功能的自動化腳本,然而最后這過程我們一直處于追趕狀態,我們一直無法做到提前介入,這時我們再次進行反思,總結出若干個問題點,其中一個比較主要原因就是我們除了要編寫feature對應的腳本外,還得去維護QA編寫的feature,為啥?因為不同的QA對同一意思的一句話會有不同的描述例如:我用XX賬號登錄;我在XX頁面用XX賬號登錄;我登錄用XX賬號等等。。。這些對我們而言處理的腳本都是一致的,但是這樣的語句我們發現了我們得去修改feature,沒發現我們可能就會再去實現一遍,這個過程工作量增加了非常多。
      咋辦?我們開始不僅僅給開發提供頁面定位元素id,還給QA提供每個控件的操作語句,QA從我們定義的語句中去copy拼接成case,但其實實踐來看這個過程是失敗的,因為看似我們自己的工作量少了,QA卻糾結了,也多了得跟QA交流的工作。
      這時我就提出做個feature編寫的平臺,一開始我畫了幾個簡單原型:
Paste_Image.png
Paste_Image.png
Paste_Image.png

提出這個想法做featureIDE完全就是為了:

  1. 減少QA編寫feature的工作量
  2. 減少同一句話不同描述。
      通過幾輪討論下來,最后我們決定做的是一個平臺。這個平臺基本思想是bdd+keyword+po+數據驅動,理想化就是QA用自然語言寫完feature,我們自動化人員可以不去寫一行代碼,這個case就可以被執行。我們自動化人員去定義句式(頁面元素類型是可以枚舉的,元素操作也是可以枚舉的,根據元素確定操作的思路)例如:我在XX頁面點擊XX按鈕。 然后cucumber膠水層完全匹配到這句話,并把XX頁面和XX按鈕作為參數通過某個接口去拿到提前定義好的這個按鈕的定位方式。這樣一個元素的定位方式有了,操作有了。自然calabash實現就容易了。

當然關于這個平臺我們還有無限設想,很多未完成的功能,我們完全朝著一個產品化方向去思考。

這個平臺我參與了整個過程的需求討論和部分自動化代碼實現。慢慢的發現我們的自動化實現完成了,基本工作量在平臺前后端,為了避免沒活干,剛好又出現性能問題,所以我主動去接了性能測試。
  性能測試,工具VS平臺?
  通過跟之前性能測試人員和開發等溝通考慮開發也經常會自測需要測試提供腳本而jmeter僅僅是一個工具,一來不方便完成腳本的共享 ,二來發現開發迭代頻繁,而QA難提供性能測試歷史記錄包括報告和場景。所以我開始考慮拋棄jmeter,而采用web平臺。通過小段時間了解后,最后引入nGrinder平臺,該平臺分為controller,agent和monitor三個模塊。 controller用例管理測試,腳本,測試報告和分發腳本等,agent主要用于發起并發,monitor模塊用于收集監控數據等。
  在使用過程中因平臺已經好幾年沒人維護了,存在一些bug,所以去修改了個別bug,并對提供的方法做了簡單封裝并在腳本開發過程中加了poi第三方庫,完成了通過excel完成的執行腳本需要的數據準備,最后一個接口的腳本簡化到大概如下:

Paste_Image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,321評論 6 543
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,559評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,442評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,835評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,581評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,922評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,931評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,096評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,639評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,374評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,591評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,104評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,789評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,196評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,524評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,322評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,554評論 2 379

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,740評論 25 708
  • 國家電網公司企業標準(Q/GDW)- 面向對象的用電信息數據交換協議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 11,074評論 6 13
  • 什么是基金:就是專業的人幫你去投資 基金有什么好處:根據投資的種類不同所所獲的收益也不同。 我們為什么去買基金: ...
    緣是你的俊閱讀 413評論 0 4
  • 墨的濃淡 很難調 不過還是堅持 寫完一張紙 友約酒 微醺
    張耘菩閱讀 269評論 2 3
  • #悟空傳# 生我何用?不能歡笑;滅我何用?不減狂驕。 開始不是這樣的 童稚 純粹 憤怒 掙扎 狂哉 為一切無法掌...
    最愛的桐嘉閱讀 249評論 0 0