为了更好地保障测试质量,除了测试正向场景,也需要验证软件在异常情况下的行为和反应。本文分享一些测试过程中常见的异常。
通过模拟和触发各种异常情况,测试人员可以验证软件对异常的处理是否符合预期,是否能够正确地处理和恢复。那如何构造异常场景呢?首先我们需要了解有哪些常见异常,以及它们是如何触发的,才能有针对性地构造出异常场景。
一、常见的异常
空指针异常(NullPointerException)
当试图对一个值为 null 的对象进行操作时,例如访问 null 对象的属性或者调用 null 对象的方法,就会引发空指针异常。
数据库异常
数据库异常可能是由于数据库连接失败、SQL 语句错误、数据类型不匹配、事务处理错误等原因引起的。
IO 异常
IO 异常可能是由于文件不存在、文件权限问题、网络连接中断、读写错误等原因引起的。
数组越界异常(ArrayIndexOutOfBoundsException)
当试图访问数组中不存在的索引时,即索引超出了数组的范围,就会引发数组越界异常。
类型转换异常(ClassCastException)
当试图将一个对象转换为不兼容的类型时,例如将一个对象转换为其子类类型,或者将一个对象转换为与其无关的类型,就会引发类型转换异常。
数字格式异常(NumberFormatException)
当试图将一个无法转换为数字的字符串转换为数字时,就会引发数字格式异常。
网络异常
网络异常可能是由于网络连接超时、网络不稳定、网络请求错误等原因引起的。
并发异常
并发异常可能是由于多个线程或者分布式环境中对共享资源的并发访问引起的,例如出现竞态条件、死锁等情况。
配置异常
配置异常可能是由于配置文件的读取错误、配置项缺失或错误等原因引起的。
自定义异常
自定义异常是根据业务需求和设计而定义的异常类,用于特定的异常情况。
二、如何触发异常场景?
边界值测试
确定输入数据的边界值,并尝试使用边界值来触发异常情况。
例如,如果一个输入字段要求是 1 到 100 之间的整数,可以尝试输入 0、101 或非数字字符等边界值来触发异常。
错误输入测试
输入错误、非法或无效的数据,以验证软件在处理错误输入时的行为。
例如,输入错误的日期格式、超过最大长度的字符串、非法的字符、空值、包含特殊字符的字符串等。
性能测试
通过模拟多个用户同时操作、高负载的情况来触发并发异常或性能问题。
例如,模拟同时点击提交按钮、同时发送请求等情况。
异常环境测试
模拟异常环境来测试软件的稳定性和容错能力。
例如,模拟网络连接中断、数据库故障、硬件故障等异常情况,观察软件的反应和恢复能力。
异常操作测试
故意执行异常操作来触发异常情况。
例如,在特定的步骤中跳过必要的操作、按照错误的顺序执行步骤等。
配置测试
在配置文件中故意设置错误的参数或值,以测试软件对配置错误的处理能力。
中断测试
模拟外部干扰,例如中断网络连接、关闭关键服务、修改系统时间等,以验证软件在外部干扰情况下的稳定性和正确性。
三、结语
发现异常时,了解异常的原因和表现可以更快地定位问题,通过查看异常信息、日志、相关代码等方式。
结合对异常的了解,可以自己先尝试排查下异常发生的原因,也能帮助开发人员定位问题的根源。