成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

在Shell中進(jìn)行獨(dú)立的集成測試

HelKyle / 3679人閱讀

摘要:我可以在不同的語言和框架之間進(jìn)行切換,而不需要對測試腳本做任何改變。對于它的價值,的主旨是隨時愉快地運(yùn)行在零單元測試的生產(chǎn)環(huán)境下。我只需要通過自己的基于的測試即可。

翻譯:瘋狂的技術(shù)宅
原文:https://zachholman.com/posts/...

本文首發(fā)微信公眾號:jingchengyideng
歡迎關(guān)注,每天都給你推送新鮮的前端技術(shù)文章


我在開發(fā) during.com 時創(chuàng)建了一系列的微服務(wù),它們被用來做一些同步、導(dǎo)入和單調(diào)繁重?cái)?shù)據(jù)處理之類的工作。

如果你對微服務(wù)不熟悉,那么它只是一個花哨的名詞而已,意思就是“讓我們把這些該死的業(yè)務(wù)邏輯散落的到處都是!”

不管怎樣,我的微服務(wù)到處都是,嗯,的確是“微”。不過我絕對不是一個逗逼,我已經(jīng)多次重寫了自己的web服務(wù),從Rails中的一個目錄開始,然后遷移到Ruby,接著是Crystal,之后是Go,現(xiàn)在又回到了Ruby。這并不是在浪費(fèi)時間,這只是為了以防萬一而嘗試新的方法。

最后我又把這些服務(wù)遷移回了Ruby。這段時間Ruby的表現(xiàn)真是沒得說,它能很輕松的進(jìn)行擴(kuò)展來應(yīng)對用戶的請求。不過目前這個應(yīng)用還沒有進(jìn)入beta測試階段,在你還沒有用戶的時候,它的確容易擴(kuò)展。實(shí)際上如果在沒有用戶使用的前提下,幾乎任何關(guān)于軟件開發(fā)的一切問題都不算什么,當(dāng)然除了賺錢(當(dāng)然了這也并沒有成為硅谷任何一家公司的障礙)。

好吧我跑題了,我一直都很享受用Shell來測試這些服務(wù)的過程。

在POSIX shell環(huán)境下測試, 或者 UBIQUITOUSIX shell 環(huán)境也可以

我已經(jīng)用Shell腳本為這些服務(wù)編寫了測試,很不錯。首先,不需要為基本環(huán)境操心。無論是我的AWS實(shí)例,還是我的持續(xù)集成服務(wù)器,還有我自己的開發(fā)機(jī)上都有Shell環(huán)境。所以不需要安裝任何東西,也不必運(yùn)行什么Docker實(shí)例(實(shí)際上用它肯定也沒什么壞處)。

不過最重要的一點(diǎn)是,我的測試是獨(dú)立的,獨(dú)立于將來可能會使用的任何語言。我可以在不同的語言和框架之間進(jìn)行切換,而不需要對測試腳本做任何改變。這一點(diǎn)非常重要,因?yàn)槿绻愕膙1版本中有一個微妙的bug,而測試卻通過了,當(dāng)你開始重寫v2版本的服務(wù)時,如果在無意中修正了這個bug,測試將可能失敗。這意味著你暴露給其它服務(wù)的API不會因此而意外中斷,你可以使用其它服務(wù)來暫時頂替,為修復(fù)bug爭取時間,而不是在部署到生產(chǎn)環(huán)境后大吃一驚。

這些測試的工具也是相當(dāng)不錯的,這些年我一直在用我的好友Blake Mizerany寫的一個Shell環(huán)境下的小工具roundup。最近我一直在使用Sam Stephenson的 bats,現(xiàn)在它已經(jīng)形成了一個十分活躍的社區(qū)(哈,誰能想到呢,僅僅是一個shell測試工具而已)。我的Shell測試看起來就像這樣,用bats:

@test "Responds with events within the given timespan" {
  url_params="?starts_at=2017-05-01T00:00:00-00:00&ends_at=2017-05-31T00:00:00-00:00"
  run curl "$URL$url_params" --silent -H "Authorization: Bearer:$bearer"

  assert_output --partial "Test Event 0"
  assert_output --partial "Test Event 2"
  refute_output --partial "Test Event 5"
  refute_output --partial "No location data"
  refute_output --partial "Not included in the date span"
}

測試非常簡單,也容易理解?;旧暇褪沁\(yùn)行curl然后檢查輸出結(jié)果,完成。

整合周圍的一切

最后一點(diǎn),這些微服務(wù)非常之小,我完全可以不用為它們寫任何其它的測試,只需要寫集成測試即可。全棧測試(full-stack)真的非常有趣,但是人們對此很謹(jǐn)慎,不知道它會成為下一個好主意還是成為世界上最差勁的想法。對于它的價值,GitHub的主旨是隨時愉快地運(yùn)行在零單元測試的生產(chǎn)環(huán)境下??偟膩碚f我正在實(shí)踐這種懸而未決的理論,不過我會懸崖勒馬。如果你感興趣的話可以閱讀關(guān)于這個話題更多的文章。

但是我要說的是在這種情況下,哇,一股新鮮空氣襲來。我們的測試是可移植的,如果我重寫了服務(wù),不必為它們重寫新的測試。我只需要通過自己的基于 shell 的測試即可。


本文首發(fā)微信公眾號:jingchengyideng

歡迎掃描二維碼關(guān)注公眾號,每天都給你推送新鮮的前端技術(shù)文章



文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/8927.html

相關(guān)文章

  • 【程序人生】做了低薪運(yùn)營6年,妹紙靠什么轉(zhuǎn)行拿下 20W 年薪?

    摘要:因當(dāng)時項(xiàng)目組人手嚴(yán)重不足,故兼做部分功能測試的工作。年下半年,我的工作職能發(fā)生了調(diào)整,不再跟進(jìn)系統(tǒng)相關(guān),工作職能偏向文職,無法有更大的進(jìn)步空間。后來從網(wǎng)上了解到自動化測試,去年下半年也開始通過視頻學(xué)習(xí)自動化測試相關(guān),決心轉(zhuǎn)行做自動化測試。 本人大學(xué)專業(yè)非計(jì)算機(jī)相關(guān),畢業(yè)六年一直從事運(yùn)營相關(guān)工...

    時飛 評論0 收藏0
  • Top 10 JavaScript編輯器,你用哪個?

    摘要:在這個編輯器中,和是其中排名靠前的兩個。是一個免費(fèi)的輕量級編輯器和,用于和開發(fā)。對于免費(fèi)的代碼編輯器來說,是一個很好的選擇??梢园惭b兩個命令行實(shí)用程序,用于從啟動編輯器,用于管理的軟件包。 對于JavaScript程序員來說,目前有很多很棒的工具可供選擇。本文將會討論10個優(yōu)秀的支持javascript,HTML5和CSS開發(fā),并且可以使用Markdown進(jìn)行文檔編寫的文本編輯器。為什...

    zombieda 評論0 收藏0
  • 10大工具匯總,多維度簡化Kubernetes部署

    摘要:的迭代開發(fā)是谷歌為開發(fā)的工具之一,是一種為應(yīng)用程序執(zhí)行連續(xù)部署的方法。它可以在現(xiàn)有的渠道中使用,并與一些外部構(gòu)建工具集成,主要是谷歌自己的。 Kubernetes已經(jīng)成為大規(guī)模部署經(jīng)過編輯的應(yīng)用程序的標(biāo)準(zhǔn)方法(許多人會說這是標(biāo)準(zhǔn)方法)。但是,如果Kubernetes可以幫助我們控制無序和復(fù)雜的經(jīng)編輯的部署,那么有什么方法可以幫助我們控制Kubernetes呢?畢竟,它也可能是復(fù)雜、混亂...

    rose 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<