测试管理 協助團隊導入自動化測試之心路歷程_首篇

Ms.Test · 2017年12月30日 · 最后由 jie 回复于 2018年03月17日 · 2818 次阅读

最近協助團隊導入自動化測試流程
有些心得想跟大家分享
也期盼得到大家的回饋
之後也將持續發文

協助團隊導入自動化測試之心路歷程_首篇

研究所畢業回歸業界, 以菜鳥之姿進入伺服器領域
上班的第一個月, 我先由整合測試的角度建立伺服器的基礎知識
過程發現許多可以協助測試 team 改善的地方
於是誤打誤撞變成主導自動化測試的負責人

真自動化或自以為自動化?

有落實測試的開發人員應該知道
除了 developer 本身要寫單元測試以外
在 release 產出後, 還會有其他諸如功能測試之類的驗證

此測試 team 所擔任的即是模組整合測試的角色
這些測試工程師每周皆需要做各模組 (電源溫控, UEFI...等) 的測試工作
假設一個產品平台有 5 個模組需要測試
6 個產品便有 30 次模組測試
以開發後期來說, 功能運作已趨於穩定
按理應該可以使用全自動化測試以減輕測試人員負擔
但是測試 team 沒有落實這件事情

他們每周都要做 6 次以上如下圖般的流程 :

  1. developer release 待測產出 (Copy image 至 File center)
  2. developer 通知 tester 可以開始進行測試工作 (發 EMail)
  3. tester 設定 configuration (改檔名、設定環境...等)
  4. tester 開始一連串的手動測試 + 某些可用 script 進行的測試
  5. tester 檢視所有測試結果, 若有需要便開 defect
  6. tester 整合最終測試結果至 Excel 表, 發 Email 給相關人員

看到這邊是不是覺得這些 tester 很累呢?

我請 tester 讓我負責其中一個模組
(我只做了兩次便受不了了)
而他們還覺得這樣其實挺自動化了
因為其中一段測試工作可以用 script 來運行 ╮(╯∀╰)╭

anyway, 我不是認為這樣工作不好, 只是若可以用更有效率的方式來解決那是再好不過的了

改善點

於是在某次的 presentation 中
我向大家提出了改善測試的想法

希望可以藉由 Jenkins 達到自動化最大化的測試流程
與上圖對比, 由圖中可得知許多原本綁定在人身上的任務都可以交由 Jenkins 來完成
(是不是很棒呢! 這樣就有更多時間做別的事啦! (誤))

由於現行的測試自動化含量非常少
從 developer 開始 (例如 git kick of jenkins build image and run unittests)
一直到 自動運行整合測試
還有整合最後結果的報告
整體來說是很大的架構

要讓測試報告視覺化顯示更是一大挑戰
因為目前的測試只有 command line 輸出到 txt 的文字結果
而這部份我還沒想好怎樣處理
在 Jenkins 上也沒找到較符合需求的套件
(感覺好像踏入了深水區阿 XDD)
另外還有改變存放報告的作法
目前都是由 tester 發 EMail 附 Excel 檔
不但保存不易, 查找又不方便
若可以統整在 Jenkins 內, 在管理上絕對便利許多
其他還有雜亂的測試 script 架構...等
該改進的地方真是說不完 ╮(╯∀╰)╭ (再度攤手)
(當下覺得從軟體架構看公司組織這句話真是很有道理)

導入自動化過程中的難處與阻礙

為了讓建議被採納, 讓大家有信心完成此做法
不能單單只提出想法
所以我先以目前狀況加入 Jenkins 輔助, 運行測試給同事們看
讓大家知道, 此為完全可行, 而非空口無憑

不過, 雖然大家傾向同意
但他們內心有個擔憂便是 : 若這些工作都能讓 Jenkins 完成, 那我的貢獻不就變少了?
還有在討論初期, 有位同事很害怕做法改變或要學新東西
一直很緊張的跑來問我到底要改怎樣 ╮(╯∀╰)╭
(怎麼那麼害怕改變呢?)
甚至有同事半開玩笑地說 我要讓他們失業了
所以開會討論時, 便時不時有質疑的聲音出現
我也只能投入更多耐心解釋, 並且讓他們了解, 這其實是在幫助他們
所以...我想...直到完全導入成功, 我還會接收到更多類似的負面情緒吧 XDD
時不時都會想到這篇文章

Stop Energy

引述其中一段文字 :

I can’t say we’ve figured everything out, 
but being mindful of Stop Energy has allowed me to 
navigate some of the challenges of making decisions with more people on board.

所以在第二個月 我幾乎全致力於了解目前開發的完整流程並著手規劃
審視完狀況後 發現要做到全自動化並非不可能
最理想情況當然要從 developer 端就運行自動化
(其實我挺訝異這間公司沒有採用這個做法)
不過因為有太多 develop team 合作開發
所以要制定統一的做法是個碩大工程

直到最近才發現, 其實工程師也還是在處理人的問題
目前公司內的同事平均年紀約 40 歲左右
幾乎每個年紀及資歷都比我高
而和這些人一同共事, 是一門學問
測試 team 的同事過去的工作幾乎都是用滑鼠點點 script 跑測試
他們沒有花太多心力在了解基礎知識或撰寫程式上
更別提一些測試理論或概念了
在解決問題方面, 他們對 developer 有高度依賴性
也就因為如此, 他們才會擔心被取代
(很弔詭的是, 既然擔心被取代, 怎不花心力好好充實自己呢?)
言談之間充分感受到他們為了掩飾自卑而築起的城牆
所以在幫他們建立這些自動化測試概念的過程中
我必須很小心引導他們, 讓他們知道我是個很有耐心地討論者 (誤

當然, 也不全然都是質疑聲浪
還是有一兩個同事很贊同這樣的做法
願意開始學習並且和我一起完成
我老闆也是全力支持
能放手做事的感覺真好

最後, 附上一段最近看的一本書測試架構師修煉之道提到的
測試工程師在團隊中的定位

共收到 22 条回复 时间 点赞

建议直接把内容贴过来哦

恒温 回复

好喔~ 謝謝建議

到了年纪,有心无力了吧。

第一篇繁体版

恒温 回复

呵呵 可能吧
但最大的原因還是懶惰吧

Ms.Test 回复

懒惰也是有心无力的一种。年轻的时候能克服的懒惰到了一点年纪之后就克服不了了。

看来全球软件测试碰到的问题都是共性的,自动化测试的收益没有想象中那么理想,但也没有想象中那么难。

期待后续啊,jenkins 是怎么取代手工测试的,我最近也想研究一下看看能不能用在自己的项目中呢,感觉维护脚本始终是个大头啊

怎樣翻過部門墻去推動 developer 加強自動化運行是一個很大的話題,期待題主後續文章。

jenkins+script 是利器,然后再结合各种自动化测试框架,就能形成比较完整的体系了

对于自动化意义我的理解是把测试人员从繁重的、重复的手工测试解放出来去做更多的探索性的、创造性的手工测试

Justin 回复

我觉得你还是太理想化了,多做几年再回头看看吧

不建议一上来就把落地自动化规划的很大,可以先从局部的手工专项自动化实施落地,最后攒在一起就可以了。

jenkins 更多的是配置脚本和执行脚本的管理,其实 jenkins 很大的优势就是对不同脚本语言的包容,无论什么语言的脚本,只要执行配置归于 shell、批处理,就可以部署在 jenkins 上执行。并不是所有功能实现都局限在 jenkins 插件去实现,需要统一的是结果报告数据的格式和数据表定义,方便将测试报告统一规划设计。

至于数据可视化部分也没多难,简单落地就是测试结果按 csv 格式存储,python 用 pandas 库做数据处理,highcharts 可以做可交互的各种图。

具体实施来说:
1、测试开发实现手工测试团队自动化需求(任何脚本本语言,能实现即可),并向 jenkins 提供执行配置脚本,其中包括结果处理输出的脚本,邮件脚本(可 python 实现)
2、组织人手设计统一的测试结果存储和展示平台,第一步可各自建立 job 各自邮件通知测试结果,在平台搭建好后在发邮件前做数据上传到展示平台的工作。

我们现在就是在落地结果统一收集展示平台搭建这块,各专项能自动化的都做了自动化方案的设计实施。

自动化实施最主要的就是老板的态度,得向老板充分展示出自动化带来的人力节省和部门成本预算上的节省。拉个有活力的新的测试开发团队推进,同时扩展测试覆盖范围给节省的人力提供更多的业务需求。

我们团队从 13 年下半年开始做自动化,一步步过来,主要就是这样:局部专项的自动化方案落地-->由于人力缩减、预算缩减带来了自动化旺盛的需求,恨不得能自动化的就不要手动-->日常/周常自动化的 jenkins CI 部署-->统一管理测试需求和测试结果的平台建设。

蒋刚毅 回复

主要還是因應碰到什麼樣的問題用什麼樣的工具 :)

楼主说台湾人吗😊?

Justin 回复

大大是否也是探索性測試的愛好者 :) 我很贊同你的看法, 把測試人員從繁瑣的手動測試中解救出來也是我這次推動自動化原因之一

你好, 我是台灣人沒錯 :) 在此要感謝不吝給予回饋的大家
還有你們各式各樣對測試很有幫助的簡體書籍
(最近正在看一本 # 測試架構師的修煉之道)

浮云 回复

非常感謝您的建議
我的作法也正如同您所說, 套用在演算法
正是 divide and conquer 的概念 😄
您提到的其中一句 :

并不是所有功能实现都局限在 jenkins 插件去实现,需要统一的是结果报告数据的格式和数据表定义,方便将测试报告统一规划设计。

對這句話我深表同感

恒温 回复

其实还是懒惰,我山西的技术领导,快 40 了,每天还在坚持学习技术,坚持敲代码。是国家千人计划中一个人的学生

恒温 回复

我反而跟您說的狀況相反呢
我年輕時很懶惰, 反而年紀越大越發自動學習

学习了。楼主 不错 台湾人到内地发展 牛

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册