日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker与自动化测试及其测试实践

發(fā)布時(shí)間:2024/9/21 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker与自动化测试及其测试实践 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Docker 與自動(dòng)化測(cè)試

對(duì)于重復(fù)枯燥的手動(dòng)測(cè)試任務(wù),可以考慮將其進(jìn)行自動(dòng)化改造。自動(dòng)化的成本在于自動(dòng)化程序的編寫和維護(hù),而收益在于節(jié)省了手動(dòng)執(zhí)行用例的時(shí)間。簡(jiǎn)而言之,如果收益大于成本,測(cè)試任務(wù)就有價(jià)值自動(dòng)化,否則受益的只是測(cè)試人員的自動(dòng)化技能得到了提升。利用 Docker 的快速部署、環(huán)境共享等特性,可以大大減少自動(dòng)化的成本,使很多原本沒有價(jià)值自動(dòng)化的測(cè)試任務(wù)變?yōu)榱擞袃r(jià)值自動(dòng)化的任務(wù),大大提升了項(xiàng)目效率。

那么如果自動(dòng)化測(cè)試已經(jīng)運(yùn)行在了虛擬機(jī)中,是否有必要使用 Docker 技術(shù)將其進(jìn)行改造?這個(gè)就要具體問題具體分析了。筆者并不贊同將所有測(cè)試任務(wù)一刀切的進(jìn)行容器化改造。如果當(dāng)前虛擬機(jī)已經(jīng)滿足測(cè)試需求,你就需要評(píng)估一下引入 Docker 進(jìn)行改造所需的成本,其中包含學(xué)習(xí) Docker 技術(shù)所需要的時(shí)間成本。反之,如果虛擬機(jī)無法滿足當(dāng)前的測(cè)試需求,可以考慮盡快引入 Docker 進(jìn)行改造。

Docker 的約束

Build, Ship, and Run Any App, Anywhere. 這是 Docker 公司高調(diào)宣稱的口號(hào),即在任何平臺(tái)都可以構(gòu)建、部署、運(yùn)行任何應(yīng)用。然而,由于 Docker 自身的特點(diǎn),其使用場(chǎng)景有一些約束:

(1) 因?yàn)槿萜髋c主機(jī)共享內(nèi)核,如果容器中應(yīng)用需要不同的內(nèi)核版本,就不得不更換主機(jī)內(nèi)核。但如果主機(jī)內(nèi)核變更后又會(huì)影響到其它容器的運(yùn)行。變通的方法是將應(yīng)用源碼的編寫與內(nèi)核特性解耦。

(2)Docker 使用時(shí)需要 3.10 或以上版本的內(nèi)核,這是最低的限制。如果你需要使用更高級(jí)的 Docker 特性,如 user namespace,那么還需要更高版本的內(nèi)核。

(3) 使用“--privileged”選項(xiàng)后可以在容器內(nèi)加載或卸載內(nèi)核模塊,但這個(gè)操作會(huì)影響到主機(jī)和其它容器。

(4) 無法模擬不同平臺(tái)的運(yùn)行環(huán)境,例如不能在 x86 系統(tǒng)中啟動(dòng) arm64 的容器。

(5) 因?yàn)?Docker 采用了 namespace 的方案來實(shí)現(xiàn)隔離,而這種隔離屬于軟件隔離,安全性不高。不適合安全性高的測(cè)試任務(wù)。

(6) 因?yàn)槟壳皼]有 time namespace 技術(shù),修改某個(gè)容器時(shí)間時(shí)就不得不影響到主機(jī)和其它容器。

適用于 Docker 的測(cè)試場(chǎng)景

由于容器與主機(jī)共享內(nèi)核使用,凡是和內(nèi)核無強(qiáng)相關(guān)的測(cè)試任務(wù)是適合引入 Docker 進(jìn)行改造的,例如源碼編譯測(cè)試、軟件安裝測(cè)試、互聯(lián)網(wǎng)應(yīng)用測(cè)試、數(shù)據(jù)庫測(cè)試等。而與內(nèi)核強(qiáng)相關(guān)的測(cè)試任務(wù)是不適合使用 Docker 進(jìn)行改造的,如內(nèi)核網(wǎng)絡(luò)模塊測(cè)試、內(nèi)核 namespace 特性測(cè)試等。

Docker 測(cè)試實(shí)踐

容器化編譯系統(tǒng)測(cè)試

早期我們將 linux 發(fā)行版安裝到物理機(jī)中進(jìn)行測(cè)試。當(dāng)需要重新進(jìn)行全量測(cè)試時(shí)不得不手動(dòng)還原測(cè)試環(huán)境。之后改用了虛擬機(jī),雖然能夠通過自動(dòng)化的方式實(shí)現(xiàn)環(huán)境還原,但虛擬機(jī)的損耗較大,效率不高。

如果對(duì)軟件測(cè)試、接口測(cè)試、自動(dòng)化測(cè)試、性能測(cè)試、LR腳本開發(fā)、面試經(jīng)驗(yàn)交流。感興趣可以175317069,群內(nèi)會(huì)有不定期的發(fā)放免費(fèi)的資料鏈接,這些資料都是從各個(gè)技術(shù)網(wǎng)站搜集、整理出來的,如果你有好的學(xué)習(xí)資料可以私聊發(fā)我,我會(huì)注明出處之后分享給大家。

之后我們嘗試將環(huán)境制作成 Docker 鏡像,同時(shí)進(jìn)行了如下的改進(jìn):

(1) 通過 Docker 的“-v”選項(xiàng),將主機(jī)目錄映射到容器中,實(shí)現(xiàn)多個(gè)容器共享測(cè)試代碼。測(cè)試代碼部署時(shí)間從 2 分鐘減少到 10 秒。

(2) 將大粒度的執(zhí)行時(shí)間較長的用例拆分成為若干個(gè)小用例。

(3) 利用容器并發(fā)執(zhí)行測(cè)試。

(4) 使用 Dockerfile 梳理產(chǎn)品依賴包和編譯軟件的安裝。

編譯系統(tǒng)測(cè)試是用戶態(tài)的測(cè)試,非常適合使用 Docker 進(jìn)行加速。如果需要針對(duì)某一個(gè) linux 發(fā)行版進(jìn)行測(cè)試,可以通過 Docker 快速部署的特點(diǎn),將所有的資源快速利用起來,從而達(dá)到加速測(cè)試執(zhí)行的目的。

linux 外圍包測(cè)試

外圍包包含動(dòng)態(tài)鏈接庫文件和常用的命令行工具,屬于 linux 操作系統(tǒng)的中間層,其上運(yùn)行著應(yīng)用程序,其下由 linux 內(nèi)核支撐。起初的外圍包測(cè)試采用串行執(zhí)行,效率不高。同時(shí)受到環(huán)境污染的影響,容易產(chǎn)生軟件缺陷的誤報(bào)。在改進(jìn)方面,我們首先通過 Dockerfile 基于 rootfs 制作一個(gè) Docker 鏡像,然后通過 Docker-compose 工具實(shí)現(xiàn)測(cè)試用例的并發(fā)執(zhí)行。

以下是改進(jìn)前后的對(duì)比。

通過 Docker 進(jìn)行測(cè)試加速的原理

Docker 本身并不會(huì)直接加速測(cè)試執(zhí)行。在串行執(zhí)行測(cè)試時(shí),在容器中執(zhí)行測(cè)試反而會(huì)帶來約 5% 左右的性能衰減。但我們可以充分利用 Docker 快速部署、環(huán)境共享等特性,同時(shí)配合容器云來快速提供所需的測(cè)試資源,以應(yīng)對(duì)測(cè)試任務(wù)的峰值。如果忽略環(huán)境部署時(shí)間,當(dāng)每個(gè)測(cè)試用例粒度無限小并且提供的測(cè)試資源無限多時(shí),測(cè)試執(zhí)行所需的時(shí)間也就無限小。

轉(zhuǎn)載于:https://juejin.im/post/5c0a70025188256f264140f0

與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的Docker与自动化测试及其测试实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。