持續(xù)集成之利用mock與回放技術(shù)助力自動(dòng)化回歸
持續(xù)交付中存在的測(cè)試難點(diǎn):
1翎卓、測(cè)試數(shù)據(jù)的準(zhǔn)備和清理
1.每次全新的測(cè)試都使用全新初始化數(shù)據(jù)抵乓。
2.在測(cè)試完成后店归,清楚變更數(shù)據(jù)刃麸,將數(shù)據(jù)還原醒叁。2、分布式系統(tǒng)的依賴(lài)
1.單元測(cè)試時(shí)要面對(duì)兩難選擇泊业,測(cè)依賴(lài)還是不測(cè)依賴(lài)
2.集成測(cè)試時(shí)把沼,如何保證依賴(lài)服務(wù)的穩(wěn)定性,或者說(shuō)排除由穩(wěn)定性帶來(lái)的干擾
3.真實(shí)業(yè)務(wù)系統(tǒng)中吁伺,存在多層依賴(lài)的問(wèn)題饮睬,還要想辦法解決被測(cè)應(yīng)用依賴(lài)的服務(wù)的依賴(lài)服務(wù)3、測(cè)試用例的高度仿真
什么是mock
mock: 如果某個(gè)對(duì)象在測(cè)試過(guò)程中依賴(lài)另一個(gè)復(fù)雜對(duì)象篮奄,而這個(gè)復(fù)雜對(duì)象又很難被從測(cè)試過(guò)程中剝離出來(lái)捆愁,那么就可以利用mock去模擬并代替這個(gè)復(fù)雜對(duì)象。
mock的優(yōu)勢(shì)
1窟却、使測(cè)試用例更獨(dú)立昼丑、更解耦
2、提升測(cè)試用例的執(zhí)行速度
3夸赫、提高測(cè)試用例準(zhǔn)備的效率
mock框架
1菩帝、基于對(duì)象和類(lèi)的Mock:框架有Mockito或者EasyMock,其實(shí)現(xiàn)原理都是在運(yùn)行時(shí)茬腿,為每一個(gè)mock的對(duì)象或類(lèi)動(dòng)態(tài)生成一個(gè)代理對(duì)象胁附,由這個(gè)代理對(duì)象返回預(yù)先設(shè)計(jì)的結(jié)果。
這類(lèi)框架適合模擬DAO層的數(shù)據(jù)操作和復(fù)雜邏輯滓彰,只能用于單元測(cè)試階段控妻。而到了單元測(cè)試階段,你需要模擬一個(gè)外部依賴(lài)服務(wù)時(shí)揭绑,就需要基于微服務(wù)的mock弓候。
2、基于微服務(wù)的Mock:Weir Mock和Mock Server他匪。
Mock實(shí)現(xiàn)的方式基本一致:
1.標(biāo)記被代理的類(lèi)或?qū)ο蠊酱妫蚵暶鞅淮淼姆?wù)
2.通過(guò)mock框架定制代理的行為
3.調(diào)用代理,從而獲得預(yù)期的結(jié)果