我的測試之旅:(10)貢獻——開發項流程(Development Item Process)
開發項流程(Development Item Process)
當時的這個Scrum試點專案身負重任,其中之一就是要探索出在新型的敏捷模式下該使用何種的開 發流程,負責人就是當時的Linux部門經理,而我則撈到了負責測試部分流程的機會。整個試點專案的人員擴張速度不錯,4個人的團隊維持了好幾個迭代,陸續有人加入,新的測試人員在大概是第四個迭代的時候才補充進來,而後逐漸擴張到兩三個團隊。這樣的擴張速度對測試流程的確定來說非常好,一開始我可以只考慮自己的想法,不斷地嘗試摸索,可以很快地得到反饋然後改進;等到想法大致成形的時候,又可以專注於幫助其他成員理解流程和使用,驗證流程的易用性;等到人員更多的時候,就可以著重驗證流程的推廣複用性。
試點專案並非是全權負責新產品的開發,它其實是歸屬一個更大的專案、產品的,產品經理在芬蘭,芬蘭也還有一些團隊,兩地之間的團隊必須要合作,雖然杭州的專案享有流程等各方面的自由,但也必須考慮和芬蘭團隊現有模式流程協作的問題。流程中也要把這些細節都考慮進去。
我討厭浪費,討厭重複的資訊,也不喜歡把不同特點的資訊混淆在一起,而且流程要為人服務,它需要根據人在工作中的行為、活動特點來制定,而不是憑空想象,這是我在流程總結中所秉持的重要原則。因此,在流程中測試活動開展所需要的資訊,每一份資訊只應該存在於一個位置,其他地方全部應該通過連結或者引用使用這些資訊,而且測試和開發都會用到的資訊也適用此原則。資訊應該分為長期存在和短期存在兩種,可以看做是從讀、寫的角度進行區分:同一份資訊和被測物件相關,且在可預見的未來還會繼續被讀寫的話,看做是長期的型別;同一份資訊主要是階段性的,和特定的版本、時間點相關的,且在可預見的未來只會被讀取但不會被更新(寫)的,看做是短期的型別。兩類資訊或者以不同的文件進行維護,或者以不同的方式進行維護。
如下簡單表述一下當時所設計出來的流程,這個流程因為種種原因在試點專案結束後沒有被延續使用,但是大概是三四年後我已經成為敏捷教練的時候,意外得知它居然一直在別的產品線沿用至今(當時),其生命力可見一斑。我將側重描述其變化、改進之處,和以往流程相同的地方則不做介紹。
- 新流程的目標包括:推動開發和測試專家們的密切合作以提高軟體的質量;合理化以及簡化相關文件;減少文件數量,加強維護,以提高文件的質量;促進開發和測試人員之間的互相學習,以增加專案資源的靈活性;等等。
- 開發項是新提出的概念,將軟體的規格說明書撰寫、設計、實現和測試封裝在一起,作為最小的原子化產品元件(Component)。原子化的意思是保持開發項之間的互相依賴在可以做到的最低水平;移除或重排任何開發項的時候,對其他開發項不產生(或產生最小的)影響。
- 在迭代開始前,先有技術報告或者需求文件,由此而產生出開發項;然後是和以往的專案過程一樣的入口階段,確定專案日程並且生成相關的高階(High Level)文件。包括整合計劃文件、專案計劃文件、模組(Module)測試策略以及開發項測試計劃文件都在此時建立。
- 所有和開發項相關的測試活動都在Sprint內完成,這些測試被稱之為DIT(開發項測試),測試用例本身還是屬於以往的功能測試級別。但是開發項的測試計劃、測試執行、報告等一系列過程全部都要在一個Sprint中完成,測試用例的自動化比例並未做硬性規定,但當時我們的成果是100%自動化。
- 專案成員主要分為開發和測試兩類工程師,但是角色的定義並不是拿來當做不可逾越的紅線使用,必要的情況下,開發工程師也會承擔部分測試任務甚至整個人投入測試,或者測試工程師也會和開發工程師一起,結對開發程式碼。
- 開發人員的工作安排會受到測試工作的影響,每日站會或者平時工作中,可能會發現軟體不容易測試,就需要開發人員協助檢查以及修改程式碼提高軟體的可測性。或者是在開始寫測試指令碼之前,就去跟開發人員約定程式輸出的內容和格式。
- 測試文件根據資訊的長期性、短期性進行了區分。
- 測試計劃與報告:將這兩個單獨的文件合併到一起,在單獨的章節裡展示各自的資訊,每個軟體釋出使用一份測試計劃和報告。總共四個章節:被測功能描述以及模組列表(持續更新)、持續整合測試狀態(每個迭代的測試報告)、總結(質量評估、經驗反饋、推薦和建議)、現存問題(尚未解決或仍不明晰的問題)。目的是在單個軟體釋出週期內持續記錄測試的狀態,縮減不必要的文件量。
- 測試用例與缺陷:每一個模組或技術領域使用一份測試用例及缺陷文件。文件內容包括:該模組或技術領域的整體描述,測試用例列表及狀態,缺陷列表,測試輔助程式,操作命令。目的是提供一份可以全面瞭解被測模組或技術領域的文件,包括當前的所有功能、曾有的和現存的缺陷,以及如何使用操作命令和測試輔助程式進行測試。
- 測試用例清單:用Excel記錄所有的測試用例即可,資訊來自於現有的測試管理系統,包括測試用例的編號、已測過的最新軟體釋出、已測過的最新版本資訊、測試用例的版本、測試用例名稱、自動化的狀態。
- 缺陷清單:用Excel記錄所有的缺陷即可,資訊來自於現有的缺陷追蹤系統,包括缺陷的編號、標題、嚴重程度、缺陷單狀態、相關的測試用例以及版本。目的是提供一目瞭然的缺陷清單,可以知曉其歷史及現狀。
- Sprint缺陷清單:記錄在Sprint開發過程中發現的軟體缺陷,相當於輕量級的缺陷追蹤系統,無法當天修復的問題才會被記錄下來,而無法在當前Sprint中解決的問題則會被錄入缺陷追蹤系統,並且錄入前一個缺陷清單。
Linux程式設計培訓
為了幫助新人快速地融入專案,我們還承擔著開發一套培訓課程的任務。在Linux環境下進行開發的同時,我們需要總結經驗,有針對性地記錄所需要掌握的各方面知識,並且做成培訓材料,提供給加入團隊、專案的新手。我也參與其中有少量的貢獻。
檢視更多“我的測試之旅”文章
1. 起點——作為軟體開發人員
2. 轉變——作為專職測試人員
3. 同期——加入測試自動化小組
4. 並行——自動化迴歸測試
5. 難點——功能改進的測試
6. 跳轉——追逐新鮮事物的探險者
7. 啟程——Scrum中的測試工作者
8. 困難——沒有現成的測試工具
9. 行動——簡化測試文件和流程
10. 貢獻——開發項流程(Development Item Process)
11. 嘗試——Scrum Master
12. 機遇——測試自動化培訓師和教練
13. 轉型——敏捷教練
相關文章
- Sentry 開發者貢獻指南 - 測試技巧
- Sentry 開發者貢獻指南 - 瀏覽器 SDK 整合測試瀏覽器
- 戰碼先鋒直播預告丨參與文件貢獻,開啟OpenHarmony社群貢獻之旅
- 再次貢獻我的心血(Wap Explorer)
- Sentry 開發者貢獻指南 - 配置 PyCharmPyCharm
- Sentry 開發者貢獻指南 - Feature Flag
- JB的測試之旅-專案流程規範
- Sentry 開發者貢獻指南 - SDK 開發(事件負載)事件負載
- Sentry 開發者貢獻指南 - SDK 開發(效能監控)
- Fitness function-driven development(測試驅動開發) 翻譯Functiondev
- Sentry 開發者貢獻指南 - 前端(ReactJS生態)前端ReactJS
- Sentry 開發者貢獻指南 - Django Rest Framework(Serializers)DjangoRESTFramework
- 我的效能測試工作流程
- 貢獻過Github開源專案的可領$231,親測有效!Github
- Sentry 開發者貢獻指南 - 資料庫遷移資料庫
- 貢獻你的力量 開發一個Vue元件併發布到npmVue元件NPM
- 我為何從測試轉測試開發,並堅持了10年?
- 為什麼要貢獻開源
- 學習原始碼的第八個月,我成了Spring的開源貢獻者原始碼Spring
- 如何為開源軟體做出貢獻
- 如何給開源專案做貢獻
- 測試已死?我看未必!分享我在華為做敏捷測試的那些流程……敏捷測試
- Sentry 開發者貢獻指南 - SDK 開發(效能監控:Sentry SDK API 演進)API
- 聊一聊我對測試開發的看法
- 雲端計算開發的貢獻有哪些?雲端計算開發的功能你想不到
- 我真的從測試轉成了開發......
- 測試驅動開發(TDD)例項演示
- 我給Apache頂級專案貢獻了點原始碼。Apache原始碼
- Sentry 開發者貢獻指南 - 什麼是 Scope, 什麼是 Hub?
- Sentry 開發者貢獻指南 - 後端服務(Python/Go/Rust/NodeJS)後端PythonGoRustNodeJS
- 採用測試驅動開發理念(Test Driven Development)進行 SAP UI5 應用的功能開發(一)devUI
- 採用測試驅動開發理念(Test Driven Development)進行 SAP UI5 應用的功能開發(二)devUI
- webpack 開發模式管理 DevelopmentWeb模式dev
- 向微軟官方貢獻 @types 包後引發的思考微軟
- 發展數字經濟 貢獻中國智慧
- 貢獻Dubbo生態,阿里開源Nacos專案阿里
- 我是如何從測試開發做到年薪50萬的?揭秘測試開發工程師成神之路工程師
- CNCF:中國已成為全球第二大開源貢獻國 CNCF專案的程式碼貢獻接近100萬
- redis在微服務領域的貢獻Redis微服務