1、WEB/APP服务端测试
这种服务端测试就是为 WEB/APP 端提供一些后台的接口,一般都是用 HTTP、HSF、MTOP 接口的方式提供。这种后台的测试从流程上来说是跟随着发布节奏来的,根据时间、提测以及持续集成目标,可以采用不同的测试方法:
手工接口测试
根据接口设计,测试人员可以借助中间件平台,自有工程,第三方工具进行接口测试了。接口测试过程中,特别需要关注异常场景测试,单接口异常测试主要包括输入异常、操作异常、依赖服务异常,测试验证时关注容错逻辑以及异常返回码是否符合接口约定。
- 输入异常:包括入参为特殊字段类型、非法长度、边界值等
- 操作异常:例如操作为特殊业务流程、非法修改数据等非正常业务操作
- 依赖服务异常:包括访问超时、服务挂掉、异常返回码等场景
手工集成测试
待需求的前端和上下游都交付之后就可以进入集成测试阶段,在这个环节测试人员除了协调各涉及端的测试进度、测试环境和自己域的业务验证之外,同样需要关注异常测试,集成阶段的异常主要包括输入异常、接口异常、操作异常,测试验证时关注异常文案交互是否符合业务预期。
- 输入异常:包括入参为特殊字段类型、非法长度、边界值等
- 接口异常:例如接口超时、非约定返回码等
- 操作异常:业务流程中高频导致的并发、乱序等非法操作场景
持续集成
借助类似 Jenkins 工具平台完成手工测试的自动化持续集成,实现接口级别的回归和链路级别的回归。
2、后端的数据库、缓存系统、中间件、文件系统测试
这种就类似于云计算等后端基础服务的测试,对于一些大的公司,会有一个专门的团队来开发这种后端基础服务,这种服务当然也需要测试人员来保证质量。这类服务一般都是通过HTTP接口的方式提供给刚才讲的WEB/APP的后端使用。
- 名列前茅个要做的也就是接口测试: 也就是用 Postman等工具做手工测试、用TestNG+HttpClient或者Python的Nose框架做自动化测试。不过,对于这类后端服务来说,接口只是暴露给外用的部分,内部逻辑通常是非常复杂的。
- 除了针对接口做测试之外,测试人员还需要细致地了解这些服务端产品的技术框架及技术实现: 需要了解到模块的级别,对于系统框架图,时序图等都有很好的理解。针对这些理解去设计用例,再跟开发一起讨论如何实现用例。如果这种基础服务用了某一个开源软件,那通常也需要测试人员能关注社区的进展,并把我们发现的Bug及解决方案等推到社区,为社区做贡献。
除了接口测试之外,异常测试、稳定性测试,性能测试也是服务端测试必备的测试类型。
- 异常测试会模拟各种异常情况。比如硬件异常-机器挂掉的情况下能否启动备机,硬盘挂掉的情况下是否会丢失数据;网络异常-网络忽然断掉,或者网络流量变小的情况:系统异常一操作系统忽然挂掉的情况,这些极端的情况出现的时候,我们需要验证数据有没有丢,能不能尽快启动备机对外提供服务,系统状态有没有异常等。我们会采用各种方式或者工具来模拟这些异常,比如用TrafficControl工具来控制网络流量。
- 稳定性测试,就是模拟系统在7*24的运行下会不会出问题,一般会用接口测试或者性能测试用例不断地跑,在运行期间,我们会模拟各种情况,比如说负载的变化、系统的各种干扰等。可以用ChaosMonkey等工具来进行这类测试。
- 性能测试,其实细分起来会有各种类型,比如负载测试,压力测试,配置测试,甚至还有线上压测,容量规划等。最常规的性能测试,一般是先规定一个系统需要承受的压力。
- 压力测试 ,已知服务器系统高峰期使用人数,验证各事务在最大并发数(通过高峰期人数换算)下事务响应时间能否达到客户要求。系统各性能指标在这种压力下是否还在正常数值之内。系统是否会因这样的压力导致不良反应(如宕机、应用异常中止等)。
- 容错性测试 ,通过模拟一些非正常情况(如:服务器突然断电、网络时断时续、服务器硬盘空间不足等),验证系统在发生这些情况时,是否能够有自动处理机制以保障系统的正常运行或恢复运行措施。如有HA(自动容灾系统),还可以专门针对这些自动保护系统进行另外的测试,验证其能否有效触发保护措施。
- 问题排除测试 ,通过原有案例或经验判断,针对系统中曾经发生问题或怀疑存在隐患的模块进行验证测试,验证这些模块是否还会发生同样的性能问题。如:上传附件模块的内存泄露问题、地址本模块优化、开启Tivoli性能监控对OA系统性能的影响等等。
对于这种后端服务的测试人员来说,技术上的要求是挺高的,需要有较好的编程能力,需要对数据库,操作系统等机制有很好的了解才行。
以阿里为例,阿里为双11做的压测是完全模拟整个生产业务系统,完全模拟从前端客户端(各种客户端)到服务层到后台-数据库,所谓的端到端,涵盖了客户端性能测试+网络端性能测试+服务器性能测试,压测打通整个业务链路,所以为了模拟这样全套流程,尤其是这么大的同时并发量,需要推动参与的人就过千,压力源服务器按他当时宣传的并发在线人数应该准备了1500-2000台,这样来看,普通的压测工具肯定是无法鱼担和协作的,不仅仅是阿里,像美团,饿了么都会有这样的高并发,他们都是自己开发的压测系统,服务自己的业务。