测试为什么要聊监控
功能测试来确保产品的需求实现,而监控就是保障出现问题前或发生时立即被发现并解决。现在服务基本上都放在云上,相关的监控也都比较齐全。但是有些时候可能团队的配(财)置(力)还没到全部使用云监控的程度,我们还是免不了自己进行监控,再加上线上问题的处理及时性也是对测试的一个硬性要求,所以搭建监控平台的思维和能力也成为了测试需要具备的一种高级技能。
可能的监控种类
接口监控
这个比较好理解,之前聊了接口测试及自动化接口测试的事情,那个是保证接口功能性的流程。而接口监控主要监控的是接口的状态或者所在服务的状态。这个需要注意的是接口的请求方法和接口的请求频率。
- 接口的请求方法:原则上只能使用get请求,因为其他请求可能会产生脏数据。
- 接口的请求频率:频率需要符合业务要求,过快的风险是可能会影响数据统计等,或者造成性能问题。过慢的风险是达不到监控发现问题及时性的目的。
服务监控
测试可以通过分析服务日志等文件来实现对服务状态的判断,可以使用python等脚本语言实现,但是要重点考虑文件读取&分析的性能。
中间件监控
比较讨巧的一种监控方法,通过操作或读取数据一些中间件来达到监控中间件和服务的目的。比如使用队列监控来判断消费者服务是否正常运行。但千万注意在操作过程中不要产生脏数据,建议只是通过读取数据判断。
监控举例 - rabbitMQ队列监控
思路: 利用读取队列中的 消息数量 和 消息消费速率 来判断是否有消息积压。
解读: 如果队列中固定时间内的 消息数量 > 阈值(自定义) 且 消息消费速率 = 0 时,我们认为此队列有积压。
-
实现方法: 消息数量 和 消息消费速率 可以利用rabbitMQ的API获取到,具体地址可以在RabbitMQ后台上找到,或者网上搜。
脚本代码: (待更新,其实有了思路就成功了一大半了,如果读者真有需求那我之后看评论里大家的意愿再来决定是否提供吧)
测试人需关注
在文章开头其实已经聊了可以自行开发监控对于测试人员的意义,所以这里就不在赘述了。唯一需要提醒大家的是,监控的目的是发现问题,不是制造问题,所以需要万分小心的是在做监控的过程中一定不能造成对原服务数据和性能的影响,望大家谨记。