單純經驗交流一下
我遇到正常的軟體UT與品質驗證流程吧:
1.開發者寫完程式碼與UT。
2.在自己電腦上跑UT。
在自己電腦上跑UT,是部門不認的UT。
沒人知道你自己電腦的環境與有沒有動手腳。
3. Commit and push 到 repository 開發分支。
4. 啟動 CI ,CI有個stage會去跑開發者的UT。
由於UT已經不在開發者的電腦或環境跑了。
所以有許多優點:
a. 環境是獨立的,而且通常設計成接近 release後的環境。比較容易提早發現問題。
b. 開發者有沒有做好UT,Pass UT,是有自動記錄,而且自己沒有權限修改的。避免了前
5. 所有CI流程都過了,UT過了,開發者以外的工程師或主管,才開始審核程式碼 code review。(正常情況,至少兩人)
這時審核的人,系統都會自動紀錄。
比較大的公司也會有規定,或慣例該review哪些重點。
6. Code review 過了,系統才會自動 merge到 "開發"分支。(因為還沒給QA測過,沒辦法release)
7. QA 測試前,先再次跑CI流程,包含UT,確認開發部門有按照基本品質要求走。(避免被Dev部門黑)。拉取程式與自己的測試程式,在接近生產環境的設備上測試。
8. QA測試出報告,有問題,提issue修改。沒問題,上系統或出Mail說驗證通過。(為品質背書)
9. 程式碼品質Ok了,要將 dev merge到release分支。開發者根本沒這權限。只有技術的owner或 Tech lead 有merge權限。有merge權限的人,要對這程式碼品質負責。
以上的流程,已經簡化蠻多細節了,而且變化很多,同家公司不同部門細節也不同,但大原則沒變。
看似複雜冗長,其實大多機器自動化去做,大多寫程式就能完成自動化,習慣了就好。兩個星期跑release 一個線上版本很正常。
線上系統出問題,誰有責任:
開發者,owner,開發者主管,測試QA工程師,QA工程師主管,PM都可能會有責任。
大家不是靠嘴去爭的,拿出Log與證據來討論吧。
自己開發電腦上有沒有Bug或 Log根本沒人看。
Bug是否產生,所有Log,都在第三方電腦(或雲端),而且是接近Release環境的。
以上的流程與技術其實也不難,open source都搭建得起來,流程摸久也就習慣了。
簡單成本就能大幅提高軟體品質與工作效率。最大差異在於,你有沒有待過這樣的工作環境,學習到這種工作觀念而已。
(可以思考一下,以上有哪些點,怎麼改善自己工作流程,不用硬套別人公司做法)