服务测试需要了解的知识点

服务相关测试内容整理

自2020年6月以来,带领团队完成了40多款app的测试交接工作,期间整个研发+测试+运维团队出现过几次线上事故。近期对公司所有发生的线上事故进行复盘,问题的现象大致有以下几种:
1、线程阻塞影响到主业务;
2、三方接口没有设置超时,导致线程阻塞;
3、对于异常没有捕获,导致协议处理队列无法消费,不断堆积堵塞;
4、日志消费单线程,存放任务的队列无限长,导致崩溃;
5、代码未判空处理,导致空指针异常,未对异常进行处理,导致线程异常直至崩溃;
6、代码和功能的相关联的地方未考虑到;

发现线上事故的发生原因大致可归类为以下几种:
1、专业能力不足: 包括专业技术能力(①、开发方案设计缺陷;②、编码能力不足,未考虑到性能等因素;③、测试宽度和深度不够,测不到深入的问题)、业务能力(对产品和代码不熟悉,开发和测试考虑不周全)
2、意识不足: 包括安全开发意识、责任意识、敬畏心
3、规范执行不到位: 对已有的规范执行不到位
4、规范缺失: 在发生问题之前没有相应的规范制度

复盘每次线上事故,细细琢磨,测试团队目前还存在的问题:①、对交接的业务熟悉度不够;②、缺少专业技术上的广度(很多测试点由于认知不足导致想不到而测不到);③、缺少专业技术上的深度(会存在一些当前专业能力下想得到,但测不到的内容);
今天主要是结合公司当前业务以及近期的线上事故,梳理出一些服务相关测试知识,希望能帮助小伙伴们拓宽知识面,在后续的测试过程中能想到更多。

一、概念解释
为了方便大家理解能够理解一些服务相关术语,整理了一些和开发沟通性能测试过程中,较高频率的词汇解释。

响应时间(RT) :服务对请求做出的响应时间。

吞吐量(TPS) :服务(包含多个接口)在单位时间内处理请求的数量总和。

并发用户数 :服务可以同时承载的正常使用产品功能的用户数量。

每秒查询率(QPS) :单个接口每秒所能处理请求的数量(最大吞吐能力)

连接池 :允许多个客户端使用缓存起来的连接对象,这些对象可以连接数据库,它们是共享的、可被重复使用的。

线程池 :可以理解为缓冲区,由于频繁的创建销毁线程会带来一定的成本,可以预先创建,但不立即销毁,以共享方式为别人提供服务,一来可以提供效率,再者可以控制线程无线扩张。

二、测试阶段
理解了一些概念性的词汇之后,我们梳理下在测试阶段我们一般会做那些方面的测试,其中就应该包括服务的性能测试。
在做一些测试工作之前,我们需要根据产品需求文档、产品原型图等设计客户端功能测试用例(包含各种正常情况、异常情况、边界值情况等),需要了解开发的方案设计以及实现逻辑。这些测试前的工作很重要,可以帮助我们更好的完成测试,更好的确保产品质量。
一般测试类型分为:
UI测试

功能测试

中断测试

兼容性及适配测试

性能测试(客户端和服务端性能测试)

稳定性测试

三、性能测试流程及类别
在上述的测试类别中,性能测试里又细分包含很多种类型,大体如下:
测试流程
需求分析—性能指标确认—脚本开发—脚本设计—监控部署—多次执行【测试执行—性能分析—性能调优】—测试 告
性能测试类别
①、负载测试
通过逐步加压的方法,达到既定的性能阈值的目标,阈值的设定应是小于某个值,如cpu使用率小于等于80%。
②、压力测试
通过逐步加压的方法,使得系统的某些资源达到饱和,甚至失效的状态,简单粗暴的解释就是什么条件能把系统压崩溃。
③、并发测试
在同一时间內,多个虚拟用户在同时访问同一个模块,同一个功能。
④、容量测试
通常是指数据库层面的,目标是获取数据库的最佳容量能力。又称为容量预估。具体测试方法为在一定的并发用户,不同的技术数据量下,观察数据库的处理能力,即获取数据库的各项性能指标。
⑤、可靠性测试
又称为稳定性测试或疲劳测试。是指系统在高压情况下,长时间的运行是否稳定如cpu使用率在80%以上,7*24小时的运行,系统是否稳定。
⑥、异常测试
又称为失败测试。是指系统架构方面的测试,如在负载均衡中,要测试宕机,节点挂掉等情况的系统反映。

四、压力测试关注点
性能测试中,较多使用的是压力测试方法,在压测环境下,通过逐步加压,使得业务出现卡顿,直至崩溃。那么在压力测试过程中,我们需要了解并清楚那些东西呢下做了个整理:
①、压测的场景和用户行为(结合实际业务形态)

②、压测机器的服务配置、实际线上的服务配置和数据库配置

③、了解压测过程中一些需要关注的指标

④、了解各指标的优化策略

⑤、压测中TPS上不去的原因说明

五、服务测试重点注意点
在理解了基本概念,测试类型的情况下,大家慢慢对服务有了一定的认知,并不需要很精通,但最起码能做到了解。下面结合公司每次更新事故列出一些重点关注点:

①、三方Http接口
当方案设计中涉及到三方http接口时,测试人员除了测试接口之外,应该对三方接口的以下几个点需要重点注意:

②、异常检查
常见异常包括:空指针、数组越界、接口异常、数据库操作(慢sql,数据库慢读取队列挤压)异常

③、队列(Mq)
概念解释:一种特殊的线性表。有先进先出的特点。
举例解释:超市收银台内(线程池)可容纳3人(3个线程)同时结账,其他人只能在外面排队等候结账(等待队列)。

队列分类

涉及到队列,需要重点关注的点:

④、多线程
概念解释:
1、线程:程序执行流的最小单元,进程中的一个实体,一个相对独立的、可调度的执行单元,是被系统独立调度和分派的基本单位。
2、主线程:当程序启动时,就自动产生了一个线程。主函数main就是在主线程上运行的。
3、多线程:指在一个进程当中可以创建多个线程来“同时”处理多个事务。

举例解释:
一个车间(进程)里可以有很多个工人(线程),它们协同完成一个任务。比如一个手机生产车间,张三负责主板的安装与调试,李四负责显示屏的测试与加工,王五负责手机零件的组装等。线程就好比这车间里的工人,一个进程包含了多个线程,它们各自负责完成自己的任务。一个进程的内存空间是共享的。

涉及到多线程,需要重点关注的点:

⑤、中间件
概念解释:将具体业务和底层逻辑解耦的组件
实现的效果:需要利用服务的人(服务端开发),即使不需要知道底层逻辑(提供服务的)的具体实现,只要拿着中间件结果来用就好了。(例如:开发使用radis中间件做数据缓存)

涉及到中间件,需要重点关注的点:

总结
在工作中坚持每天学习一点,每天积累一点,每天进步一点,相信在测试行业的路上,各位的专业能力宽度和深度都能有长足的进步!!祝顺利~

文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树数据库组成31344 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月22日
下一篇 2021年4月22日

相关推荐