如何通过代码分析精简用例(2)

上一次分享的如何通过代码分析精简用例主要是针对WEB侧逻辑复用,从而精简冗余用例的案例。

本次的案例分享是希望通过对SVR代码的分析,完成用例执行的精简。

测试需求:

每日每工号B2C电话拉取画像限制为200次

这种类似频次的需求,在很多项目中都会遇到,它们共通的特点是实际操作起来比较复杂,在有限的时间里可能难以覆盖。对于这类需求比较好的方式是单元测试+全流程测试的组合,关于单元测试的方法在我曾经的乱弹单元测试中有介绍,本次介绍的是手工测试如何通过代码分析来简化。

代码分析:

涉及SVR:画像SVR(cc_customer_data_svr) 风控SVR(cc_risk_manage_svr)

不想看下面的分析过程的可以直接看上图。

  1. 画像SVR在拉取画像前会请求风控SVR,检查画像拉取配额信息customer_profile_processor.cpp
  2. 风控SVR首先拉取用户画像配额配置(如:200次),接下来通过读取redis获取用户画像使用次数,判断使用次数是否小于配额,如果不小于配额则返回没有配额,否则自增使用次数写入redis后返回。

check_user_profile_quota_processor.cpp

cc_risk_manage_svr.cpp

  1. 画像SVR通过返回的配额信息,决定是否拉取画像。

customer_profile_processor.cpp

用例精简:

拿两个用例来举例:

登录工号A,拨打B2C网络电话同一号码n次,同一天内尝试再次拨打

登录工号A,拨打B2C网络电话不同号码n次,同一天内尝试再次拨打

通过这两个用例我们可以得出写用例同学是希望校验同一号码是否会被“去重”。

通过代码分析后,我们的执行则可以变成:

(前提:拨打一次B2C后),拨打同一号码,用户画像使用次数是否增加。

(前提:拨打一次B2C后),拨打不同号码,用户画像使用次数是否增加。

用户画像使用次数的查询,如果直接去通过命令行去查redis是比较麻烦的,从代码里我们可以看到开发其实是把查询结果写进了日志。我们可以通过日志比较直观的看到查询结果。

DEBUG162: kfuin=2852199351, kfext=2852997014, quota result=0, use=5, max=5

至此,我们就完成了从耗时较长的多次电话拨打转变为拨打少量电话检查日志,从而完成了用例执行的精简。

总结

对于一些共通的需求和设计保持敏感,保持测试的完备性的同时提升测试效率。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏服务端技术杂谈

进程内缓存使用技术方案

进程内缓存可以采用带锁的Map或者第三方库,或者自己实现进程内缓存管理,如ConcurrentHashMap,ThreadLocal,guava cache等。

1253
来自专栏微服务生态

实现缓存最终一致性的两种方案

问题点:如果更新Redis失败,同时在将数据发到MQ之前的时间,应用重启了,这时候MQ就没有需要更新的数据,如果Redis对所有数据没有设置过期时间,同时在读多...

631
来自专栏nnngu

012 继承和聚合的区别

继承 指的是一个类继承另外的一个类的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extend...

3024
来自专栏黑白安全

利用Cookie注入 绕过WAF

cookie注入的原理在于更改本地的cookie,从而利用cookie来提交非法语句。

1182
来自专栏企鹅号快讯

左手用R右手Python系列——动态网页抓取与selenium驱动浏览器

但是所有这些都是基于静态页面的(抓包与API访问的除外),很多动态网页不提供API访问,这样就只能寄希望于selenium这种基于浏览器驱动技术来完成。 好在R...

2528
来自专栏JAVA同学会

Kafka 简介

在Kafka中,客户端和服务器之间的通信是通过一种简单的,高性能的,语言不可知的TCP协议完成的。

1301
来自专栏青枫的专栏

Java中如何通过一个类名来调用另一个类的静态方法?

所以,比如另一个类叫OtherClass,它的静态公有方法是 public static int MethodA() {...}

1214
来自专栏Java编程技术

Dubbo剖析-服务分组与服务版本号

在Dubbo中接口类并不能唯一确定一个服务,在dubbo中接口+服务分组+版本号才能唯一确定一个服务,本文就来讲解下服务分组和版本号的使用。

902
来自专栏JAVA同学会

Kafka 简介

在Kafka中,客户端和服务器之间的通信是通过一种简单的,高性能的,语言不可知的TCP协议完成的。

2474
来自专栏大前端开发

ES6特性之:箭头函数

在ES6的所有新特性中,箭头函数(Arrow Fucntion)算是我用的最频繁的特性之一了。

811

扫码关注云+社区