1.合同到期,資料也落庫,存入到無效資料表中。正常的業務場景。
但是如果考慮到合同過期後,沒有按時的續簽,那麼這段時間段內的資料,實際上是需要恢復的。
原則:外部第三方請求引數,返回獲取的資料,都需要保持入庫,有的資料需要考慮恢復和排查問題。
2.計算費用介面/方法體,考慮有值的情況(已結算)
正常是無值的情況(未結算) 需要計算
原則:結算後的資料不允許修改變更。結算的查詢展示資料,是取結算後的資料,而不是實時計算的結果。
否則可能存在結算後因為單價或計算邏輯差異,導致計算後的結果與結算時的費用不一致。
3.中斷程式方法(int i = 1/0;),搜尋商品,下單
第一步:搜尋商品
第二步:下單
如果需要測試的第一步(搜尋商品是否正確),而不需要測試第二步(對該商品下單),可以在第一步結束之前,加上該程式碼異常,提前終止程式。
4.Request帶出物件,響應物件帶出物件。比如:在搜尋服務中,需要將每一步的搜尋結果,過濾了多少記錄等logs帶出來,然後在請求方存入日誌表。
在同一個專案中,請求物件可以帶出引數。如果是跨系統的遠端訪問的方式(feign),請求物件不可以帶出引數,而是需要透過返回物件帶出引數。
package com.example.core.mydemo.java.request; import java.util.List; public class RequestVo { private String id; private String name; private List<String> logs; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<String> getLogs() { return logs; } public void setLogs(List<String> logs) { this.logs = logs; } } package com.example.core.mydemo.java.request; import java.util.List; public class ResponseVo { private String respCode; private String respMsg; private List<String> logs2; public String getRespCode() { return respCode; } public void setRespCode(String respCode) { this.respCode = respCode; } public String getRespMsg() { return respMsg; } public void setRespMsg(String respMsg) { this.respMsg = respMsg; } public List<String> getLogs2() { return logs2; } public void setLogs2(List<String> logs2) { this.logs2 = logs2; } } package com.example.core.mydemo.java.request; import com.example.core.mydemo.json2.GsonUtils; import com.google.gson.Gson; import java.util.Arrays; /** * output: * RequestVo 內部={"id":"1","name":"內部搜尋","logs":["搜尋1","搜尋2","搜尋3"]} * RequestVo 外部={"id":"1","name":"外部搜尋","logs":["搜尋1","搜尋2","搜尋3"]} * responseVo 外部={"respCode":"1","respMsg":"OK","logs2":["搜尋11","搜尋22","搜尋33"]} */ public class RequestTest { public static void main(String[] args) { RequestVo vo = new RequestVo(); vo.setId("1"); vo.setName("內部搜尋"); ResponseVo responseVo = addRequest(vo); vo.setName("外部搜尋"); System.out.println("RequestVo 外部=" + new Gson().toJson(vo)); System.out.println("responseVo 外部=" + new Gson().toJson(responseVo)); } public static ResponseVo addRequest(RequestVo vo){ vo.setLogs(Arrays.asList("搜尋1","搜尋2","搜尋3")); System.out.println("RequestVo 內部=" + new Gson().toJson(vo)); ResponseVo responseVo = new ResponseVo(); responseVo.setRespCode("1"); responseVo.setRespMsg("OK"); responseVo.setLogs2(Arrays.asList("搜尋11","搜尋22","搜尋33")); return responseVo; } }
5. else條件的坑,比如:
if(條件1 && 條件2){
}else{
//else的含義是條件1和條件2都不成立的條件下,才執行。
//如果需要在else裡面再拆分條件,可以再巢狀加入if,將範圍變小。
//總體原則是:else的執行條件,不能因為if而改變了原意。否則會不符合業務邏輯。
}
6.微信小程式和h5測試方法,可以參考對比測試。微信小程式和h5都是可以訪問的,功能一樣,僅僅是訪問的地址不同。
微信小程式測試環境:需要訪問的是體驗版本,否則訪問的是線上版本。