异步轮询与卫兵进程
引言:與fitnesse有關(guān)的自動(dòng)化設(shè)計(jì)?
?
?背景:
1.業(yè)務(wù)鏈涉及多個(gè)進(jìn)程,業(yè)務(wù)進(jìn)程之間有一定的銜接。當(dāng)這個(gè)用例執(zhí)行失敗時(shí),想讓程序自己去定位出錯(cuò)點(diǎn),這個(gè)工作顯然是很麻煩的。
2.fixture代碼最后返回fitnesse結(jié)果時(shí),需要獲取當(dāng)前用例業(yè)務(wù)結(jié)果表數(shù)據(jù)。這樣預(yù)期是希望在被測業(yè)務(wù)進(jìn)程在處理完成第一時(shí)間或者盡可能短的時(shí)間就獲取到業(yè)務(wù)處理的結(jié)果數(shù)據(jù),這顯然也是很難辦到的。
?難點(diǎn)分析:
1.對(duì)于自動(dòng)定位錯(cuò)誤:
模擬生產(chǎn),默認(rèn)后臺(tái)被測程序都是啟動(dòng)的,插入數(shù)據(jù)后應(yīng)該就會(huì)自動(dòng)觸發(fā)被測進(jìn)程做業(yè)務(wù)處理。鏈?zhǔn)教幚碇?#xff0c;可能會(huì)遇到被測業(yè)務(wù)上的bug,那么自動(dòng)化發(fā)現(xiàn)bug或者業(yè)務(wù)處理錯(cuò)誤后,一般會(huì)先查看涉及業(yè)務(wù)的表,然后再去查看日志等步驟。不通case涉及到表不同,日志不同,所以這樣讓程序自己識(shí)別錯(cuò)誤和異常等是比較困難。
2.數(shù)據(jù)比對(duì):
每個(gè)case測試的進(jìn)程執(zhí)行時(shí)間即業(yè)務(wù)處理場景時(shí)間是有差異的,無法設(shè)置一個(gè)固定值去sleep,當(dāng)然設(shè)置最長時(shí)間是不合理的。
?解決方案:
1.對(duì)于問題定位,可以總結(jié)和梳理信控業(yè)務(wù)鏈,總結(jié)出涉及的表,將共性的抽象為一種策略。這個(gè)策略就是定義了若干表名,case在執(zhí)行時(shí)會(huì)匹配策略。再設(shè)置一個(gè)常駐進(jìn)程去執(zhí)行具體策略,實(shí)際上是輪詢這個(gè)策略中配置的若干表,發(fā)現(xiàn)錯(cuò)誤或者異常立即上報(bào),類似于一個(gè)衛(wèi)兵。【實(shí)現(xiàn)時(shí)為了避免衛(wèi)兵發(fā)現(xiàn)處理中間狀態(tài)不是終態(tài),當(dāng)衛(wèi)兵發(fā)現(xiàn)錯(cuò)誤和異常后將不會(huì)立即上報(bào),而是做確認(rèn)后再上報(bào)。】
2.數(shù)據(jù)比對(duì),采用異步輪詢機(jī)制,設(shè)置最長、最短輪詢時(shí)間與最多、最少輪詢次數(shù)兩個(gè)維度,盡量做到第一時(shí)間反饋業(yè)務(wù)結(jié)果數(shù)據(jù)。
?
轉(zhuǎn)載于:https://www.cnblogs.com/xnchll/p/6612157.html
總結(jié)
- 上一篇: Python案例3—计算基础代谢率V_1
- 下一篇: 手把手教你如何创造睡后收入