异常测试实践与梳理

简介: 异常测试,是指通过人为制造异常,检测系统的处理是否符合逻辑。结合在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发散的基础上,多分析和思考可能引起类似异常的操作。

目录
相关文章
|
22天前
|
安全 Linux 测试技术
提升龙蜥内核测试能力!探究持续性模糊测试优化实践
清华大学软件学院对Anolis OS使用靶向模糊测试方法将测试工作引向修改的代码,进而提高对业务代码的测试能力。
|
1月前
|
SQL 搜索推荐 测试技术
【Havenask实践篇】完整的性能测试
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。性能测试的目的在于评估搜索引擎在各种负载和条件下的响应速度、稳定性。通过模拟不同的用户行为和查询模式,我们可以揭示潜在的瓶颈、优化索引策略、调整系统配置,并确保Havenask在用户数量激增或数据量剧增时仍能保持稳定运行。本文举例对Havenask进行召回性能测试的一个简单场景,在搭建好Havenask服务并写入数据后,使用wrk对Havenask进行压测,查看QPS和查询耗时等性能指标。
65382 6
|
2月前
|
安全 测试技术
测试团队的一次复盘实践
测试团队的一次复盘实践
144 0
|
3月前
|
安全 jenkins 测试技术
自动化测试与持续集成/持续交付(CI/CD)的实践与应用
自动化测试是现代软件开发不可或缺的环节,它可以有效地提高测试效率、降低测试成本。而持续集成/持续交付(CI/CD)则是一种基于自动化的软件开发流程,能够将代码的开发、构建、测试和部署等过程无缝连接起来,从而实现快速迭代和部署。本文将结合实际案例,介绍自动化测试和CI/CD的实践与应用。
148 2
|
3月前
|
机器学习/深度学习 搜索推荐 算法
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
191 0
|
7天前
|
敏捷开发 监控 前端开发
深入理解自动化测试框架Selenium的架构与实践
【4月更文挑战第16天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加快迭代速度的关键手段。Selenium作为一种广泛使用的自动化测试工具,其开源、跨平台的特性使得它成为业界的首选之一。本文旨在剖析Selenium的核心架构,并结合实际案例探讨其在复杂Web应用测试中的高效实践方法。通过详细解读Selenium组件间的交互机制以及如何优化测试脚本,我们希望为读者提供深入理解Selenium并有效运用于日常测试工作的参考。
14 1
|
8天前
|
自然语言处理 测试技术 API
深入理解自动化测试框架Selenium的设计理念与实践
【4月更文挑战第15天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加速迭代的关键手段。Selenium作为一种广泛使用的自动化测试框架,提供了对多种浏览器和平台的支持,极大地促进了Web应用的功能测试。本文旨在剖析Selenium的核心设计理念,探讨其在实际项目中的应用,并指出常见的误区及最佳实践,以期帮助测试工程师更高效地利用Selenium进行测试工作。
|
16天前
|
安全 测试技术
深入理解白盒测试:方法、工具与实践
【4月更文挑战第7天】 在软件开发的质量控制过程中,白盒测试是确保代码逻辑正确性的关键步骤。不同于黑盒测试关注于功能和系统的外部行为,白盒测试深入到程序内部,检验程序结构和内部逻辑的正确性。本文将探讨白盒测试的核心技术,包括控制流测试、数据流测试以及静态分析等方法,同时介绍当前流行的白盒测试工具,并讨论如何在实际项目中有效实施白盒测试。文章的目标是为软件测试工程师提供一份综合性指南,帮助他们更好地理解和应用白盒测试技术。
|
28天前
|
敏捷开发 测试技术 持续交付
深入探索软件测试自动化:框架与实践
在快速演进的软件行业中,测试自动化已成为确保产品质量和加快上市速度的关键因素。本文将深入分析测试自动化框架的构建要点,探讨其在实际应用中的效益,以及实施过程中可能面临的挑战。通过对比手动测试与自动化测试的优势与局限,本文旨在为读者提供一套系统化的测试自动化实践指南,以支持更高效、可靠的软件开发周期。
11 0
|
29天前
|
传感器 监控 算法
【软件设计师备考 专题 】模块测试的方法和实践
【软件设计师备考 专题 】模块测试的方法和实践
71 0