国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

在Shell中進行獨立的集成測試

HelKyle / 3653人閱讀

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

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

本文首發微信公眾號:jingchengyideng
歡迎關注,每天都給你推送新鮮的前端技術文章


我在開發 during.com 時創建了一系列的微服務,它們被用來做一些同步、導入和單調繁重數據處理之類的工作。

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

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

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

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

在POSIX shell環境下測試, 或者 UBIQUITOUSIX shell 環境也可以

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

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

這些測試的工具也是相當不錯的,這些年我一直在用我的好友Blake Mizerany寫的一個Shell環境下的小工具roundup。最近我一直在使用Sam Stephenson的 bats,現在它已經形成了一個十分活躍的社區(哈,誰能想到呢,僅僅是一個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"
}

測試非常簡單,也容易理解。基本上就是運行curl然后檢查輸出結果,完成。

整合周圍的一切

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

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


本文首發微信公眾號:jingchengyideng

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



文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/8927.html

相關文章

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

    摘要:因當時項目組人手嚴重不足,故兼做部分功能測試的工作。年下半年,我的工作職能發生了調整,不再跟進系統相關,工作職能偏向文職,無法有更大的進步空間。后來從網上了解到自動化測試,去年下半年也開始通過視頻學習自動化測試相關,決心轉行做自動化測試。 本人大學專業非計算機相關,畢業六年一直從事運營相關工...

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

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

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

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

    rose 評論0 收藏0

發表評論

0條評論

HelKyle

|高級講師

TA的文章

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