(資料圖)
1.握手
1.1.發(fā)送方和接收方之間的信號傳遞過程
1.2.模擬調(diào)制解調(diào)器使用一種握手形式,協(xié)商兩個(gè)設(shè)備都能接受的速度和信號編碼
1.3.TCP使用三次握手建立套接字連接
1.4.TCP握手還允許接收方發(fā)信號告訴發(fā)送方:在接收方準(zhǔn)備好之前不要發(fā)送數(shù)據(jù)
1.5.EIA-232C(以前稱為RS-232)的串行協(xié)議,是從接收方那里知道它何時(shí)能準(zhǔn)備好接收數(shù)據(jù)
1.7.握手是一種未被充分利用的技術(shù),在應(yīng)用層協(xié)議中擁有巨大的優(yōu)勢
1.7.1.HTTP并不擅長握手
2.創(chuàng)建基于合作的需求控制機(jī)制
2.1.客戶端和服務(wù)器之間的握手,允許將需求的流量調(diào)節(jié)到可服務(wù)的級別
2.2.在構(gòu)建客戶端和服務(wù)器時(shí),兩者都必須實(shí)現(xiàn)握手
2.3.讓服務(wù)器通過限制自己的工作量保護(hù)自己
2.3.1.服務(wù)器應(yīng)該有辦法拒絕執(zhí)行發(fā)來的工作,而不是成為滿足任何要求的“受氣包”
2.3.2.基于HTTP的服務(wù)器需要依賴負(fù)載均衡器與Web服務(wù)器或應(yīng)用程序服務(wù)器之間的合作關(guān)系實(shí)現(xiàn)“握手”
3.健康狀況檢查
3.1.在集群或負(fù)載均衡服務(wù)中,使用健康狀況檢查實(shí)現(xiàn)實(shí)例與負(fù)載均衡器握手
3.2.當(dāng)失衡的系統(tǒng)容量導(dǎo)致響應(yīng)緩慢時(shí),“握手”可能是最有價(jià)值的
3.3.當(dāng)調(diào)用缺乏握手機(jī)制的服務(wù)時(shí),斷路器是一種可以使用的權(quán)宜之計(jì)
3.4.在層疊失效情況下,握手是一種防止裂紋跨層蔓延的有效方法
4.在自己的低層協(xié)議中構(gòu)建握手
4.1.如果創(chuàng)建了基于套接字的協(xié)議,那么可以在其中構(gòu)建握手機(jī)制
4.2.端點(diǎn)就可以在未準(zhǔn)備好接受工作時(shí),通知其他端點(diǎn)
5.考驗(yàn)機(jī)
5.1.分布式系統(tǒng)的失效方式很難在開發(fā)環(huán)境或QA環(huán)境中顯現(xiàn)
5.2.可以創(chuàng)建考驗(yàn)機(jī)來模擬每個(gè)集成點(diǎn)另一端的遠(yuǎn)程系統(tǒng)
5.2.1.硬件工程師和機(jī)械工程師一直使用考驗(yàn)機(jī)
5.2.2.軟件工程師雖然也已經(jīng)在使用,但其考驗(yàn)機(jī)過于簡單
5.2.3.像設(shè)計(jì)應(yīng)用程序服務(wù)器一樣來設(shè)計(jì)考驗(yàn)機(jī),其中與真實(shí)應(yīng)用程序相關(guān)的那些測試,可以設(shè)計(jì)為可插拔的形式
5.3.優(yōu)秀的考驗(yàn)機(jī)嚴(yán)格測試系統(tǒng),像現(xiàn)實(shí)世界的系統(tǒng)一樣“惡毒”
5.4.考驗(yàn)機(jī)應(yīng)該給被測系統(tǒng)留下“傷疤”,它的意義就是讓被測系統(tǒng)做到不信有好事
5.4.1.考驗(yàn)機(jī)應(yīng)該像一個(gè)小“黑客”,嘗試各種不良行為來給調(diào)用方搞破壞
5.5.考驗(yàn)機(jī)會引出混沌工程
5.6.考驗(yàn)機(jī)作為一臺單獨(dú)的服務(wù)器運(yùn)行,沒有義務(wù)遵循任何接口規(guī)范,可以激發(fā)網(wǎng)絡(luò)錯(cuò)誤、協(xié)議錯(cuò)誤或應(yīng)用程序級錯(cuò)誤
5.6.1.每個(gè)系統(tǒng)最終都會偏離接口規(guī)范,因此在遠(yuǎn)程系統(tǒng)無法使用時(shí),測試本地系統(tǒng)的行為就變得至關(guān)重要
5.6.2.模擬偏離接口規(guī)范的系統(tǒng)失效方式
5.7.遠(yuǎn)程調(diào)用使用網(wǎng)絡(luò),套接字連接容易出現(xiàn)的失效
5.7.1.網(wǎng)絡(luò)傳輸問題
5.7.2.網(wǎng)絡(luò)協(xié)議問題
5.7.3.應(yīng)用程序協(xié)議問題
5.7.4.應(yīng)用程序邏輯問題
5.8.考驗(yàn)機(jī)知道其存在的意義是且僅是進(jìn)行測試
5.8.1.真正的應(yīng)用程序不會直接調(diào)用低層網(wǎng)絡(luò)API,但考驗(yàn)機(jī)可以
5.8.2.其字節(jié)發(fā)送速度能快能慢
5.8.3.能建立極長的監(jiān)聽隊(duì)列
5.8.4.能與套接字綁定卻從不發(fā)起連接
5.9.考驗(yàn)機(jī)僅是補(bǔ)充,不能取代其他測試方法
5.10.考驗(yàn)機(jī)有助于驗(yàn)證非功能性行為,同時(shí)又與遠(yuǎn)程系統(tǒng)保持隔離
6.mock對象
6.1.mock對象只能產(chǎn)生符合已定義接口的行為
6.2.mock對象通過切斷所有外部連接改進(jìn)單元測試的隔離性,通常在系統(tǒng)層級之間的邊界處使用
關(guān)鍵詞: