摘要:我可以在不同的語言和框架之間進行切換,而不需要對測試腳本做任何改變。對于它的價值,的主旨是隨時愉快地運行在零單元測試的生產環境下。我只需要通過自己的基于的測試即可。
翻譯:瘋狂的技術宅
原文: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 的測試即可。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/8927.html
摘要:因當時項目組人手嚴重不足,故兼做部分功能測試的工作。年下半年,我的工作職能發生了調整,不再跟進系統相關,工作職能偏向文職,無法有更大的進步空間。后來從網上了解到自動化測試,去年下半年也開始通過視頻學習自動化測試相關,決心轉行做自動化測試。 本人大學專業非計算機相關,畢業六年一直從事運營相關工...
摘要:在這個編輯器中,和是其中排名靠前的兩個。是一個免費的輕量級編輯器和,用于和開發。對于免費的代碼編輯器來說,是一個很好的選擇。可以安裝兩個命令行實用程序,用于從啟動編輯器,用于管理的軟件包。 對于JavaScript程序員來說,目前有很多很棒的工具可供選擇。本文將會討論10個優秀的支持javascript,HTML5和CSS開發,并且可以使用Markdown進行文檔編寫的文本編輯器。為什...
摘要:的迭代開發是谷歌為開發的工具之一,是一種為應用程序執行連續部署的方法。它可以在現有的渠道中使用,并與一些外部構建工具集成,主要是谷歌自己的。 Kubernetes已經成為大規模部署經過編輯的應用程序的標準方法(許多人會說這是標準方法)。但是,如果Kubernetes可以幫助我們控制無序和復雜的經編輯的部署,那么有什么方法可以幫助我們控制Kubernetes呢?畢竟,它也可能是復雜、混亂...
閱讀 1370·2021-11-22 09:34
閱讀 2581·2021-11-12 10:36
閱讀 1111·2021-11-11 16:55
閱讀 2324·2020-06-22 14:43
閱讀 1457·2019-08-30 15:55
閱讀 1975·2019-08-30 15:53
閱讀 1764·2019-08-30 10:50
閱讀 1217·2019-08-29 12:15