异常测试实践与梳理

简介: 异常测试,是指通过人为制造异常,检测系统的处理是否符合逻辑。结合在A项目中的实践,梳理一下常见异常测试的类型、关注点及常用测试工具等。

A项目是一个典型的web前端+后台的项目,主要的业务是购买账号及注册账号。从实践来讲,我觉得一个项目的异常测试基本可以分为2大类:功能异常及服务端异常,功能异常按照先后执行顺序一般可以分为3种:单接口异常、web端异常及业务操作异常。下面来介绍一下功能异常,服务端异常在异常测试实践与梳理之服务端异常测试中介绍。

avatar


1、单接口异常测试

单接口异常测试主要的关注点是依赖服务调用异常时,业务代码能否容错及容错逻辑是否合理。

单接口异常测试一般也可以放到服务端异常测试阶段来做,但这个阶段常规功能测试已经做完,再回过头来对每个接口进行异常测试,还需要花一定时间去重新熟悉接口业务,且该阶段关注的重点是后台整体的异常,需要覆盖的异常点很多,从时间上来说一般会比较紧。所以,个人觉得单接口异常测试放在接口测试阶段比较合适,并且单接口异常测试可以为服务端异常测试做铺垫,把接口依赖分析都完成了。

单接口异常测试,主要包括输入异常、操作异常、依赖服务异常等,具体要视接口情况而定。输入异常及操作异常一般在接口测试时都会涉及,而依赖服务异常不一定。如果项目对可靠性要求比较高的话,且时间允许情况下,还是要争取覆盖一下。

在A项目的单接口异常中,依赖服务异常是重点。在执行测试之前,需要做一些准备工作。

  • 分析接口所有依赖的服务(需要咨询开发,或对业务和代码熟悉的可以直接看代码来了解) A项目中所有接口的依赖服务主要包括主系统(调用注册服务)、数据库(MySQL)、缓存(redis)等。
  • 了解各依赖服务的超时设置 如访问mysql、redis及http请求的超时时间。需要跟开发确认所有访问第三方依赖的http请求的连接参数设置是否相同。
  • 依赖第三方服务接口的异常返回码类型,及代码处理逻辑

A项目中有一个接口调用了主系统的注册接口,需要去了解,若注册接口调用失败而返回非200返回码,代码是否会进行重试,若重试依然失败,该接口最终的返回结果是什么?管理后台是否还有二次注册的接口?

avatar


在单接口异常测试执行时,只需要选择该接口对应的依赖服务进行测试就好。访问超时和丢包一般可以使用linux的tc命令来设置,服务挂掉一般通过改ip或端口来实现的,依赖第三方接口的异常返回码一般是用WireMock来模拟的。

2、web端异常测试

这里的web端异常测试,主要是指接口访问超时及返回异常返回码时的提示是否符合预期逻辑。

除了文字提示之外,一般通用的错误提示分为以下三种:toast(一段时间后自动消失)、错误页及alert(弹框提示)。

avatar


一般前端在开发时都会跟产品及交互定好每种异常情况下的文案规则,在UI测试阶段就对照这份规则来进行测试。下图就是A项目中页面初始化接口的文案规则:

avatar


有些异常情况只通过页面操作是不太好模拟,例如服务器异常、访问超时等等。一般UI测试是在接口测试完成之后才做的,异常返回码的模拟在接口测试阶段已经覆盖过,所以在UI测试阶段,推荐使用工具来进行异常返回码的模拟,而不需要进行复杂的后端操作来模拟,使用工具可以节省很多的时间。

windows的pc端推荐使用fiddler,这是一个http协议调试代理工具。在前端测试中,一般主要使用fiddler的2种功能,设置断点功能及请求自动重定向功能。下面简单介绍一下这两种功能,具体用法自行百度啊~~

1、设置断点
通过菜单栏“Rules/Automatic Breakpoints”给请求设置断点,可以选择Before Requests或After Responses。可以修改提交到服务器的数据信息(如:请求头或请求体等),也可以修改从服务器端返回的数据,还可以用来模拟请求超时。

2、请求自动重定向
这是fiddler最实用的功能,可通过自由设置规则,将符合条件的请求进行重定向,修改HTTP数据的特性。

3、业务操作异常测试

这部分一般是放在功能测试的后期,因为业务异常用例的设计需要对项目有一定的理解,是业务强相关的。
A项目是购买相关的,主要的业务操作异常集中在购买流程中,例如:购买时回退页面、支付超时、多人同时购买同一商品等等。一个人能想到的异常情况一般是有限的,所以在业务异常测试之前,测试人员可以先出一个大致的测试方案,然后跟开发同学一起开一个评审会,评估一下哪些异常测试用例是没有必要的,哪些是可能遗漏的,再对测试方案进行优化,保证测试的有效性。特别是对bug比较多的业务点要重点进行一些业务异常的测试,在进行bug发散的基础上,多分析和思考可能引起类似异常的操作。

目录
相关文章
|
16天前
|
安全 Linux 测试技术
提升龙蜥内核测试能力!探究持续性模糊测试优化实践
清华大学软件学院对Anolis OS使用靶向模糊测试方法将测试工作引向修改的代码,进而提高对业务代码的测试能力。
|
1月前
|
SQL 搜索推荐 测试技术
【Havenask实践篇】完整的性能测试
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。性能测试的目的在于评估搜索引擎在各种负载和条件下的响应速度、稳定性。通过模拟不同的用户行为和查询模式,我们可以揭示潜在的瓶颈、优化索引策略、调整系统配置,并确保Havenask在用户数量激增或数据量剧增时仍能保持稳定运行。本文举例对Havenask进行召回性能测试的一个简单场景,在搭建好Havenask服务并写入数据后,使用wrk对Havenask进行压测,查看QPS和查询耗时等性能指标。
65361 6
|
2月前
|
安全 测试技术
测试团队的一次复盘实践
测试团队的一次复盘实践
142 0
|
3月前
|
安全 jenkins 测试技术
自动化测试与持续集成/持续交付(CI/CD)的实践与应用
自动化测试是现代软件开发不可或缺的环节,它可以有效地提高测试效率、降低测试成本。而持续集成/持续交付(CI/CD)则是一种基于自动化的软件开发流程,能够将代码的开发、构建、测试和部署等过程无缝连接起来,从而实现快速迭代和部署。本文将结合实际案例,介绍自动化测试和CI/CD的实践与应用。
144 2
|
4月前
|
前端开发 Java 测试技术
JavaSE碎碎念:记录一次异常测试和一些个人的浅显理解
JavaSE碎碎念:记录一次异常测试和一些个人的浅显理解
|
3月前
|
机器学习/深度学习 搜索推荐 算法
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
187 0
|
23天前
|
传感器 监控 算法
【软件设计师备考 专题 】模块测试的方法和实践
【软件设计师备考 专题 】模块测试的方法和实践
65 0
|
25天前
|
敏捷开发 IDE 测试技术
深入理解自动化测试框架Selenium的设计理念与实践
随着敏捷开发和持续集成的理念深入人心,自动化测试在软件开发周期中扮演着越来越重要的角色。Selenium作为一个广泛使用的自动化测试工具,其设计理念和实践对于提高测试效率和质量具有指导意义。本文将深入探讨Selenium的核心设计原则、架构以及最佳实践,旨在帮助读者构建更稳定、高效的自动化测试系统。
|
25天前
|
jenkins 测试技术 持续交付
深入理解自动化测试框架设计原则与实践
本文旨在探讨自动化测试框架的设计原则及其在实际项目中的应用。通过对自动化测试框架的系统剖析,我们揭示了有效构建和维持测试框架的核心要素,并提供了一套实用的指导方案来帮助读者实现高效、可靠的自动化测试流程。文章不仅聚焦于框架的技术细节,也强调了灵活性、可维护性和可扩展性在设计时的重要性,同时结合实际案例分析,展示了如何在不同测试环境中定制化和优化测试框架。
|
27天前
|
机器学习/深度学习 敏捷开发 人工智能
深入探索软件自动化测试:框架与实践
【2月更文挑战第30天】 在快速迭代的软件开发周期中,自动化测试已成为确保产品质量和加快交付速度的关键因素。本文将深入探讨自动化测试的核心概念、常用框架以及在实际项目中的应用实践。我们将分析自动化测试的优势,并讨论其在不同开发阶段的作用,同时提出构建高效自动化测试流程的策略。通过实际案例分析,本文旨在为读者提供一套系统的自动化测试解决方案,以应对日益复杂的软件测试挑战。