简单的介绍背景,公司服务系统是流行的分布式架构。数据库之前经历了横、纵拆分表改造,这次决定把核心表迁移到分布式数据库(oceanBase)。服务与服务之间的调用就如同蜘蛛网一样错综复杂,如何保证这次优化上线后系统不出问题,是这次关键的任务。
历史用例非常多,如果全量执行所有测试用例不仅耗时,而且未必能覆盖全面(有一些提供给第三方的接口可能测试不到)。功能回归远远不能证明这次测试的质量,以下是我这次梳理的一些思路
public Boolean removeCoursewareKeyByUserId(List<String> userIds) {
try {
List<String> keys = userIds.stream().map(it -> genUserCwCountCacheKeyV2(it, CoursewareState.AVAIL.getState())).collect(Collectors.toList()).stream().flatMap(List::stream).collect(Collectors.toList());
keyManager.del(keys);
return true;
} catch (Exception e) {
LOGGER.error("removeCoursewareKeyByUserId, userIds:{}", JSON.toJSONString(userIds));
return false;
}
}
在做完以上的一些工作后,交付功能测试版本,后续的就是压测调优和线上回归的事情了。
如果大家有一些更好的测试方法和经验,希望可以分享出来一起讨论。