部署測試
https://www.facebook.com/rick.kyhwang/posts/10210774369514731
我在 #軟體測試階段 [2] 介紹中,提到一個概念: Deployment Test,也就是那些部署程式自身的測試。在另一篇文章 介紹 #CodeDeploy [3] 時,也點出類似概念:#Pipeline 的 scripts 必須可以進 Git 版控、可以在開發者本機做測試、驗證,而不是被工具綁死。
而這個影片 [1] (by AWS) 的標題是同一個概念:Pipelines Should be Managed as Code: How Do You Test Your Pipeline Changes?
同樣的概念,我在 #軟體開發生命週期 (Software Development Lifecycle, SDLC) [4] 一文的整理中,在 2016 年的版本中,提到 Pipeline 橫跨整個開發週期的想法,同時包含了 Provisioning、Infra as Code、Orchestration 等實務的想法。
其他類似想法的整理:
- 2018/11/27 [5]
- 2018/11/07 [6]
這些差不多就是在說明 #PipelineAsCode 的想法,除了 asCode 這些想法,其實還有一個關鍵點,也是很多人會犯錯的坑:AsCode 之後 Pipeline 所有的 Job 必須可以個別獨立執行,或者由不同角色,個別決定如何執行。否則就會陷入這樣的陷阱:
飛機飛行都自動化了,但出狀況的時候,機長廣播跟大家說,他不會手動飛行。
這概念,大概就是一般設計 #批次程序 時注意的,基本的原則:
- 所有的程序可以獨立執行,通常是 command line
- 程序可以透過 stdin, stdout 串起來,也就是 pipe
- 程序跟程序之間的資源,不會相互干擾
類似的應用,在很多地方:
- 電商的後台交易批次程序
- 銀行批次作業
- 軟體自動化測試程序
- 維運系統的批次程序
- 非同步的系統功能 (非同步都是這種)
#DevOps
[1] https://www.youtube.com/watch?v=paiaoRlJZTc
[2] https://rickhw.github.io/2017/03/18/SQA/Stages-In-Software-Testing/
[3] https://rickhw.github.io/2017/08/13/AWS/Study-Notes-CodeDeploy-Preparation/
[4] https://rickhw.github.io/2017/09/14/SoftwareEngineering/Software-Development-Lifecycle/
[5] https://www.facebook.com/rick.kyhwang/posts/10210320994260633
[6] https://www.facebook.com/rick.kyhwang/posts/10210371671407530