服务端用例设计的思(tao)路!
服务端的测试简单来说就是除了前端以外的的测试。
总的来说可以分为以下两类:
1. WEB或者APP的提供业务逻辑的服务端接口测试
2. 数据库、缓存系统、中间件、、jar包依赖、输入输出敏感信息等测试.
其中接口测试占据工作工作中的80%,接口测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。下面粗略的列举出测试的几个点。
1. 检查接口请求是否正确,返回数据的正确性与格式
2. 检查接口入参的默认值、参数类型、非空校验、以及边界值检查接口的容错性.
3. 所有功能都需要考虑兼容老版本,列表页的接口需考虑排序值
4. 检查接口的性能以及安全性
5. 对于接口内部依赖接口的不可靠性预防(如:依赖的第三方接口超时)
那么有人要问了,那么对于接口测试如何才能做到完善完备的测试呢?
下面干货来了,在写测试用例时候可以根据该图的思路分支进行用例设计。
对于第二部分的后端的数据库、缓存系统、中间件、文件系统、jar包依赖、输入输出敏感信息等测试这方面其实是要根据各个公司的流程和实际的开发环境来决定的,以下是小编在实际项目中一些总结,请对号入座各取所需
1.性能
a) 项目涉及老系统的QPS是多少?新系统预估的QPS是多少?如何预估的?
b) 项目对外提供接口或者页面的平均响应时间是多少?
c) 修改对系统的请求量是否会有影响?预估变化是多少?要给出计算和评估方式,不能拍脑袋!
d) 修改对系统的处理能力是否会有影响?对CPU和内存开销影响有多大?响应时间是否会变慢?
e) 修改对公共系统是否有影响,如数据库,消息中间件。
2. 内容
页面
i. 资源
所有页面资源要转到公司统一CDN的下,所有资源要写相对路径
所有的地址在上线前都要检查为外网地址
ii. 文字描述
公司名称等名词正确,语句通顺,无错别字。
3. 数据
对老数据的影响
i.此次上线的接口模块产生的一系列活动和效果对老数据的影响
2.金额计算
i. 验证精度匹配
3.接口参数类型
i. 参数是否都是用到了对应类型如:bigdecimal
4.备份
i.是否涉及数据备份?
5.数据清洗
i. 是否需要对老数据进行清理和处理?
6.初始化脚本
i.核对初始化脚本数据正确、是否齐全
4.安全
敏感信息测试
i.请求方式
请求中包含敏感信息的要使用post请求(使用live http header工具查看)
ii. 多余敏感信息
当接口返回中有当前页面不需要的敏感信息时要对接口拆分
iii. 敏感信息隐藏
页面中有屏蔽敏感信息的要查看其原代码是否会明文显示
生成的订单等打码,手机号前三后四作为显示
越权访问
i. 无权限
无权限访问有权限页面或接口(如:未登录访问已登录页面)
ii. 低权限
低权限访问高权限页面或接口
5. 冲突测试
接口并发测试
i. 多线程
是否涉及数据库操作的多线程并发?
多线程是否需要加锁进行处理?
管理后台
i. 管理后台同时操作测试
6. 第三方依赖测试
如果是java:是否引用了第三方的jar包?本次升级是否依赖第三方jar更改?
7.系统结构
新应用
i. POM文件
新服务器
i.数据库访问权限
要有所使用库的访问权限
ii. 配置文件
配置文件名称规则、配置文件内容
系统结构
i.系统结构
外部系统异常,数据持久层异常(redis,memcache,db异常),是否捕捉,是否影响主流程?
外部系统异常,调用第三方接口返回失败,异常,超时,是否捕捉,是否影响主流程?
对外部系统异常必须try catch
8.对外部系统影响,服务提供者与服务消费者
对上游系统
i.是否修改原有接口的数据结构与返回数据的格式?
ii.都有哪些外部系统(上游系统)调用了被修改的接口?
对下游系统
i. 是否新增调用第三方接口(包含下游系统,数据库,消息中间件)?
ii. 对新增调用第三方接口(包含下游系统,数据库,消息中间件)的压力有多少大,多少QPS?
iii.接口调用方是否有缓存?自己是否需要做缓存?
9. 监控
项目上线后是否响应监控?监控是否加告警?
项目发布后应该查看哪些监控?
10.日志
生产环境配置文件
- 日志级别
应为INFO级别
关键业务流程和异常流程是否有日志记录?
11.发布流程
数据脚本
- 最后一个版本由DBA审核通过(业务不同要求不同)
- 内容正确,特别是涉及到展现给用户的文字(包括业务端用户和运营人员)
业务端确认
- 核查收到需求文档中所列各业务端总监确认邮件。
- 确认内容为知晓此事并做相应改动或无影响。
- 系统的业务峰值时间段是什么?是随时发布,还是业务低谷发布?
周知人员
- 协调PM、开发做好发布前准备
- 工作时间发布管理后台,需要PM提前通知运营人员
发布评审
- 复杂项目必须提前定义发布流程,要求拉着QA leader,开发leader一起确认。
总结以上,可以形成一个进行接口测试的模板
服务端用例设计的思(tao)路!的更多相关文章
- vivo 服务端监控架构设计与实践
一.业务背景 当今时代处在信息大爆发的时代,信息借助互联网的潮流在全球自由的流动,产生了各式各样的平台系统和软件系统,越来越多的业务也会导致系统的复杂性. 当核心业务出现了问题影响用户体验,开发人员没 ...
- 基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计与实现
设计概述 服务端通信组件的设计是一项非常严谨的工作,其中性能.伸缩性和稳定性是必须考虑的硬性质量指标,若要把组件设计为通用组件提供给多种已知或未知的上层应用使用,则设计的难度更会大大增加,通用性.可用 ...
- 服务端高并发分布式架构演进之路 转载,原文地址:https://segmentfault.com/a/1190000018626163
1. 概述 本文以淘宝作为例子,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则. 特 ...
- 资深P7架构师详解淘宝服务端高并发分布式架构演进之路
1. 概述 本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则. ...
- 简单服务端缓存API设计
Want 我们希望设计一套缓存API,适应不同的缓存产品,并且基于Spring框架完美集成应用开发. 本文旨在针对缓存产品定义一个轻量级的客户端访问框架,目标支持多种缓存产品,面向接口编程,目前支持简 ...
- TYPESDK手游聚合SDK服务端设计思路与架构之二:服务端设计
在前一篇文中,我们对一个聚合SDK服务端所需要实现的功能作了简单的分析.通过两个主要场景的功能流程图,我们可以看到,作为多款游戏要适配多个渠道的统一请求转发中心,TYPESDK服务端主要需要实现的功能 ...
- 谈一款MOBA游戏《码神联盟》的服务端架构设计与实现
一.前言 <码神联盟>是一款为技术人做的开源情怀游戏,每一种编程语言都是一位英雄.客户端和服务端均使用C#开发,客户端使用Unity3D引擎,数据库使用MySQL.这个MOBA类游戏是笔者 ...
- 谈一款MOBA类游戏《码神联盟》的服务端架构设计与实现(更新优化思路)
注:本文仅用于在博客园学习分享,还在随着项目不断更新和完善中,多有不足,暂谢绝各平台或个人的转载和推广,感谢支持. 一.前言 <码神联盟>是一款为技术人做的开源情怀游戏,每一种编程语言都是 ...
- SimpleRpc-客户端与服务端工作模型探讨
前言 本篇文章讲述客户端与服务端的具体设计细节.有细心的小伙伴发现,客户端和服务端的工作方式不一样:服务端是多线程计算模型,利用工作线程完成数据的读取,而客户端是单线程(利用Reactor线程完成数据 ...
随机推荐
- vue打包空白,图片没加载,背景颜色没有渲染出来-配置秘诀
找到config文件夹下的index.js文件修改一下位置 看清楚是 build(上边还有个dev 是开发环境下的配置,不需要改动)下的 assetsPublicPath :将‘/’改为‘./’ 在c ...
- Ubuntu下如何解压缩zip,tar,tar.gz,tar.bz2文件
转自:http://wangli-5665.diandian.com/post/2011-08-18/4039228 这么多年来,数据压缩对我们来说是非常有用的.无论是在邮件中发送的图片用的zip文件 ...
- Echarts的option中的data问题
option = { title : { text: '某站点用户访问来源', subtext: '纯属虚构', x:'center' }, tooltip : { trigger: 'item', ...
- java执行shell/cmd命令
try { Process p =Runtime.getRuntime().exec("chmod 777 /home/bomb/MoveToy/WebRoot/a.sh " ); ...
- 【C++程序员学 python】python 之变量
既然学过C++,那么就应该知道变量是什么,常量是什么. python 相比于C++,在使用变量之前不用先声明. 而是直接使用,python 会根据你的变量自动识别其类型. 假如a = 123 那么a ...
- 面试-默认参数(传值)、var(传址)、out(输出)、const(常数)
相关资料:1.http://blog.csdn.net/rznice/article/details/69600112.http://www.cnblogs.com/echomyecho/archiv ...
- sql添加自动增长列
alter table a add num int identity
- 【C#/WPF】ListView的MVVM例子,及禁止拖动ListView的头部Header
一个ListView的MVVM简单例子: <ListView ItemsSource="{Binding GoodsList}" Margin="0,10,0,10 ...
- FusionCharts JavaScript API Column 3D Chart
Column 3D Chart labelDisplay label显示的方式 设置为AUTO 可以根据密度自动排列 slantLabels 0/1 与labelDisplay配合使用 如果lab ...
- MVC出现错误:系统找不到指定文件(异常来自 HRSULT:0x80070002)
vs2013创建Web应用程序MVC出现错误:系统找不到指定文件(异常来自 HRSULT:0x80070002) 查到博客园VS2013新建Web Application时报错Exception fr ...