在dockercon eu 2015大會上,laura frank作了題為「不要再偷懶,請測試你的軟體」的演講。frank指出,不管公司規模大小,也不管公司處於什麼階段,軟體測試都至關重要,而將docker引入開發流程有助於提高編寫和執行測試框架的效率,使組織能夠始終如一地向客戶提供高質量的軟體產品。
\\ frank是一名來自codeship的資深軟體工程師。他在演講開始時說,軟體測試自首臺用於計算的機器出現時就已經開始了。有位女士為第一台通用電子計算機eniac編寫了程式,用於幫助美國陸軍彈道研究實驗室計算炮兵射擊軌跡。她會定期拿乙份已知正確的、手工計算的**檢查計算結果。frank指出,與其他技術(如結對程式設計、版本控制、**審查和高可用架構)一樣,測試對交付「可用於生產環境的軟體」而言至關重要。
\\ 測試的目的包括公升級應用程式並避免引入回歸缺陷,驗證更新的功能,證明重構沒有破壞現有的功能。編寫測試和測試套件本地執行耗時過長,正常開發流程受到干擾,測試環境難以正確配置,這些往往會讓人沮喪。frank提出,將linux容器和docker工具箱引入測試建立和執行過程可以部分地緩解這種沮喪。
\\ docker compose使使用者很容易就可以建立一致的、可重現的容器化環境。frank表示,許多軟體開發人員都使用docker compose建立本地開發環境,但卻沒有將其用於軟體測試。在測試中使用docker同在開發中使用docker有同樣的好處,如建立可**、可重現的環境,這對質量保證過程非常有益。
\\
\\\docker可以提供可**且可重現的測試環境。就是這樣。
\
frank提醒說,在將docker compose用於測試時,可能需要對其工作流做一些修改,甚至需要使用乙個不同的dockerfile指定不同的環境變數和執行目標,docker compose通過「docerfile」屬性提供這種支援。當容器、應用程式和儲存配置複雜時,要注意避免初始化和執行競態條件。
\\ docker compose的docker-compose up命令可以用於執行乙個編入compose yaml配置檔案的自動化測試套件,也可以使用compose的run命令一次執行乙個服務,比如:
\\ frank提到,持續整合與測試相輔相成,依賴ci/cd而測試覆蓋率不足通常會出問題——與在生產環境中發現缺陷相比,開發人員更願意看到持續交付管道執行失敗。
\\ 需要注意的是,執行測試的環境與生產環境差別越小越好。frank認為, 如果應用程式將來會執行在容器中(並且在容器中開發),那麼構建管道中的測試也就必須在容器中進行。為此,開發人員可能會傾向於執行「docker-in-docker」。frank指出,任何考慮這樣做的人都應該讀下jérôme petazzoni的著作,比如文章「將docker-in-docker用於ci或測試環境?請三思而行」。
\\ frank認為,在開發過程中使用容器時,很容易錯誤地將容器看作乙個執行特定負載的「小型虛擬機器」。然而,如果能更準確地將容器視為簡單os程序,那麼測試過程就可以獲得額外的好處。例如,需要在容器化應用程式上執行的多個測試可以併發執行。在dockercon歐洲大會質量改進主題的基礎上,frank提出,可以增加乙個併發構建管道,當質量下降時(比如測試**覆蓋率降到一定水平之下,linting錯誤增加,或者違反ratchets中的規則),使構建失敗,以此保證軟體的質量。
\\ frank引用edsger dijkstra的話對演講進行了總結。他表示,雖然測試至關重要,但它並不能保證開發出的軟體沒有缺陷,應該恰當設定測試預期。
\\
\\\測試是一種顯示bug存在的有效方法,但卻不足以顯示它們不存在。
\
檢視英文原文:stop being lazy, and test your software (with the help of docker)
請不要再責怪你的程式設計師「太慢」
為什麼上週沒發布?作為管理人員,很容易將延遲發布的責任歸咎於開發團隊成員。但是你是否有認真想過,這些 慢悠悠 的程式設計師是否真的是不能按時發布的真正原因?我們採集了大量關於程式設計師開發周期的資料,主要記錄他們需要多久才能完成不同型別 stories tests bugs 和不同大小 s m l ...
請不要輕言放棄你的夢
話說有兩兄弟,他們家住在一座摩天大樓的第 80層。這天,兩個人深夜回家,恰好忘記了看通知,電梯停了。兄弟倆揹著沉重的大揹包,在樓底下商量一下,決定一鼓作氣,爬樓梯回家。兩人抖擻精神,開始爬樓。爬到第 的時候,開始覺得揹包很重了。兩人商量,決定把揹包存在 ,到時候再回過頭來取。卸下了揹包,兩個人覺得很...
再論軟體測試的執行
2006年06月16日 19 56 00 雖然我們都認為,有效的測試計畫是指導測試用例設計 測試執行的指導性檔案,是成功測試的前提和必要條件,測試用例設計是測試工作的核心,測試用例的成功設計已經完成了一半的測試任務,但是測試的執行是基礎,是測試計畫和測試用例實現的基礎,嚴格的測試執行使測試工作不會半...