1. http接口测试
电商商品上架平台为后台系统,存在很多新增、删除、修改模板等操作,业务逻辑会要求在新增修改等操作时不允许为空或重复等校验,一般像这类操作前端和后端都会做校验,单纯从页面只能测试前端校验逻辑是否正确,无法测试后端校验是否正确,通过http接口测试就可以覆盖到后端的校验逻辑。所以基于业务逻辑在进行接口测试时会重点关注以下异常情况,其中主要包括:
重复和非空校验:名称重复、必填项字段为空等
异常参数:参数不完整、参数重复等
异常查询:缺少分页信息、缺少品类id\型号id等
数值校验:设置参数为非数值类型、包含特殊字符等
测试工具主要使用Yapi平台:在设计接口case时通过异常参数的传参,可以清楚的验证异常场景下接口的返回值。
scf接口测试
在测试订单流程时,会重点关注订单状态的流转。以竞拍接口为例,为避免出现超卖,会针对接口进行并发测试,来校验后端在参拍时是否对回收单状态进行了校验。
测试方式:使用注解的方式对TestNg线程池和执行次数进行配置
invocationCount:表示执行的次数
threadPoolSize:表示线程池内线程的个数
基于业务的异常场景测试
以电商上传商品业务为例,商品添加为后台操作系统,商品上传存在新增、编辑、删除等功能,映射逻辑的上传都是通过导入excel的方式。所以在测试期间会重点关注页面异常操作和excel上传异常。
(1)页面异常操作
思路:由于在接口测试阶段已经将对应模块的接口异常case覆盖到,所以在功能测试阶段只需要重点关注页面层面的异常操作。
异常测试点:提交时快速多次点击、频繁添加/删除
测试方法:主要通过页面频繁操作对系统并发情况进行验证
(2)excel上传
思路:了解对应上传功能校验逻辑,针对校验逻辑设计异常case
异常测试点:上传内容包含特殊字符、文件格式不正确、非空校验、最大条数限制、表头顺序是否一致、业务内部逻辑
测试方法:主要通过修改上传的excel文件中的内容,来模拟异常数据的上传
2、通用性异常场景测试
(1)幂等校验
消息重发:目前很多提交都是异步提交,如短信发送,一般点击发送就会提示发送成功。但实际是否发送成功,后续会有系列处理机制,根据消息的一些本身机制,后续处理过程中会进行重发机制。
测试方法:可在终端最后一步,或中间环节人为触发多次发送。如:在消息队列中重发,多次补收同一内容的报文等。
业务间的重试:有些业务特意设置在连接超时或者失败时需重试,这时候就需要验证幂等性处理。
测试方法:可以通过模拟网络连接超时或服务超时等触发重发机制。
(2)缓存测试
为提升效率,很多系统应用了缓存机制,那么对于缓存测试以下三点在测试过程中需重点关注。
DB同步性: 如对商品重要属性进行了新增、编辑(价格、库存等重要信息)、删除时,如果应用了缓存机制,那测试过程中就需要关注DB的修改是否同步到缓存中、数据库的字段进行更新缓存中的存储结构是否进行更新等。
测试方法:
①了解缓存内容,对数据进行操作,操作后缓存相应展示页面查看
②如数据库结构发生变化,需测试缓存中数据的存储
缓存失效性:有些关键数据放缓存中是有失效性的,需根据具体业务去了解相关失效性,还是永远存储。
测试方法:根据业务关键性数据的缓存设置时间来测试业务的失效性。
缓存异常时系统处理:缓存溢出或丢失时,系统的业务是否能正常处理。一般的处理逻辑:重试机制、数据获取切换到DB。总之,不能因缓存异常,影响业务。
测试方法:模拟缓存溢出
3、与第三方交互
与第三方的交互一般都是mq交互或服务调用,所以在测试过程中会重点关注幂等校验以及服务调用超时的情况。
测试方法:
重复发送mq
使用Yapi平台对接口进行mock 、修改服务超时响应时间、模拟第三方服务返回异常
(原文链接来自: www.cnblogs.com/Wl55387370/p/13918131.html)
=================================================
异常测试的测试点
1.文件丢失测试
强行删除被测软件的一些文件,测试被测系统的提示是否准确以及其后的相关补救提示或操作;
2.服务器资源测试
通过人为手段,增加软件数据库服务器、web服务器或者中间件服务器等相关服务器的硬件资源,如:cpu、内存、硬盘等的负载,测试被测系统的反应和其后的补救提示或操作;
3.断电测试
在测试期间,对部分或者所有相关软件测试机器进行断电测试,测试软件的恢复能力
4.网络故障测试
在测试中中断网络或者人工增加网络流量,测试被测系统的提示是否准确以及其后的相关补救提示或操作
5.数据表毁坏测试
非法删除或修改数据库中的表数据或者表,测试被测系统的提示是否准确以及其后的相关补救提示或操作
6.数据库服务器死机测试
在测试过程中强行关闭软件的数据库服务器或者用其它方式导致数据库死机,测试被测系统的提示是否准确以及其后的相关补救提示或操作
7.web会话测试
对于采用b/s结构的软件,应该注意web会话测试。比如:在空白的浏览器中输入比较敏感的页面的URL,软件是否有相应的提示、强调应该先进行登录才能访问该界面
8.特殊业务流程测试
测试软件不按照正规的流程,而是按照可能的但非正规的业务流程运行,是否会生成错误数据,或者造成原有数据的错误,甚至造成系统的瘫痪;
9.压力测试
主要是检查系统某些关键业务在极限情况下运行的能力,测试在这种情况下系统的运行、处理数据的情况,是否会造成系统瘫痪
10.修改系统的重要配置信息测试
在软件的配置界面进行重要信息的修改或删除,测试系统是否有相关限制提示,并测试如果修改错误,系统是否能够进行错误提示,引导用户修改,而不至于系统瘫痪
11.单引号操作
大多数基于SQL的数据库数据库数据库数据库系统在用户存储包含一个英文单引号的信息时会出现问题,所以每一个可以接受文字数字型的条目都要有包含一个或多个单引号的文本案例。当然,这类问题还应该包括英文双引号、&、<、>等特殊字符。在测试的时候应该注意其之前的提示和错误操作之后的恢复与补救措施等
12.必填项输入测试
测试每一个功能说明书上指出的屏幕上必须输入数据的字段和屏幕上每一个被说明为必须输入的字段,以保证它强制要求你在字段中输入数据。测试其如果没有输入相关数据的提示和后续操作
13.日期类型测试
日期类型要测试其边界值和日期格式类型的有效性测试。对于日期类型的边界值可能根据数据库不同而不同,比如sql server的最小日期是1753年1月1日;而对于有效性最常用的就是闰年的有效日期问题,准备这类测试用例来测试软件对于错误输入的提示和后续操作
14.特殊字段类型测试
准备每一个功能说明书或界面中规定的特殊数据输入要求(身份证、日期、电话号码、邮编等)的字段的测试案例,输入的数据包括它不应该接受的数据类型,测试软件对错误输入的提示和后续操作
15.端口号被占用
不同服务使用了同一端口号
16.服务异常终止
通过人为手段将数据库服务、web服务等服务进行暂停,观察系统的反应
17.将系统的用户名和密码或权限进行修改
例如在系统运行过程中,修改数据库访问用户名或密码,观察系统的反应
18.修改系统环境变量
在系统运行过程中,人为修改系统使用的环境变量参数,观察系统的反应
19.对系统产品进行升级
老系统仍然在运行过程中,对系统进行升级操作
20.在对应的服务器上安装其他相关软件
在系统运行过程中,服务器上安装新的杀毒软件或者进行病毒库的更新,或更新或安装新的浏览器软件,或更新或安装新的输入法软件,或更新或安装新的办公软件
21.进行数据迁移工作
在系统运行过程中,对系统数据库进行迁移工作
22.文件丢失操作
在系统运行过程中,将系统对应的安装文件夹或生成文件夹进行移动或删除或修改文件夹的属性
————————————————
版权声明:本文为CSDN博主「狂飙兔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_29656581/article/details/78223275
========================================
Chao Monkey
====================================
异常测试通常指的是检测系统对异常情况的处理,常规来说,异常测试包括硬件或软件异常时的处理,本文主要介绍系统资源方面的异常测试。系统资源主要包括CPU、内存、磁盘和网络,因此,系统异常测试也主要从这4个方面来进行。
CPU异常
CPU高负载
通过模拟CPU高负载,观察在CPU资源被抢占的情况,系统的运行情况。
实现方式:编译运行以下源码,即可简单实现单核跑满:
#include <stdlib.h>intmain(){while(1);return0;}
每次运行会占满一个核心,如果需要模拟多核跑满,多次运行即可。通过kill命令杀死进程结束模拟。
模拟CPU高负载的方式实际上还有很多,很多工具也都实现类似的功能,这里推荐一个PassMark提供的专业拷机软件:BurnInTest,有兴趣的可以尝试:(https://www.passmark.com/products/bitlinux.htm)
内存异常
内存繁忙
针对内存的异常测试,主要方式是通过模拟内存频繁申请/释放,观察内存高负载情况下系统的运行情况。内存异常测试推荐使用memtester(http://pyropus.ca/software/memtester)
使用方式:
$memtester[测试内存量][测试次数]
例如
$ memtester4G20
模拟20次的内存申请/释放,每次测试内存使用量为4G。
磁盘异常
磁盘空间不足
Linux系统提供了一个块拷贝命令——dd,可以非常方便的满足我们的测试需求,使用方式:
$ ddif=/dev/zeroof=[目标路径] bs=[文件块大小] count=[文件块数目]
更多具体命令细节可以参见:https://en.wikipedia.org/wiki/Dd_(Unix))
磁盘I/O繁忙
结合shell脚本和上述dd命令,反复生成/删除文件,即可简单的模拟磁盘I/O繁忙的情况。
此外,也可以通过磁盘类的性能测试工具实现I/O负载的生成。FIO是一个测试系统IOPS的工具,根据指定的参数模拟IO负载,在磁盘类的性能测试中有广泛的运用。在这里,我们可以用FIO来模拟I/O繁忙,ks中已经有同学对FIO做了详细的介绍(http://ks.netease.com/blog?id=281),这里就不再赘述。
网络异常
在网络方面,主要有带宽跑满、网络延迟、网络丢包等异常情况。Linux系统提供了很多工具,可以方便我们实现模拟网络异常,这里选择netperf和tc来实现异常生成。
带宽跑满
netperf是网络带宽测试的工具,可以测量两个机器之间的网络带宽,我们可以使用netperf来模拟跑满节点网络带宽的情况。由于netperf为C/S运行模式,需要分别部署服务端和客户端,所以理论上至少需要2台机器,且受限于各自的上下行带宽限制。
实现方式:
服务端:
$ netserver
客户端:
$netperf-H[服务端IP]-l[测试时长(秒)]
网络延迟和网络丢包
tc全称traffic control,是linux中的流量控制模块,通过设置tc,可以很方便的模拟网络延迟和网络丢包:
网络延迟:
$tcqdiscadddev[网络设备名]rootnetemdelay[延迟时间]
网络丢包:
$tcqdiscadddev[网络设备名]rootnetemloss[丢包率]
将上述命令中的add改为del即可清除异常。
由于tc命令相对复杂,在此安利一下性能组同学开发的一款脚本:easy_traffic,将tc中用以模拟网络异常的功能简化了很多,只需要提供几个简单的参数即可实现网络延迟、网络丢包、网络带宽限制。
本文来自网易实践者社区,经作者崔慎杰授权发布。
=====================================