提交表单测试
了解表单提交
表单包含:
数据获取
页面输入
提交逻辑
用户权限
Checklist汇总
类型 | 测试点 | 测试方法 | 原理 | 举例 |
---|---|---|---|---|
数据获取 | 特殊字符 | 1、了解获取的来源数据的创建规则2、创建允许创建的特殊字符最全集3、查看页面是否有报错想 | 如果没做转义处理,特殊字符会破坏数据传输格式:1、json格式2、xml格式3、http参数 | 断掉json格式:"不成对的双引号;断掉xml格式:<;不成对的左右尖括号断掉http参数:&符号 |
长度对样式的影响 | 1、了解获取的来源数据的创建规则2、创建允许创建的最长汉字或英文句子3、创建仅英文或数字混合的连续字符串(变态测试)4、查看页面是否样式乱掉 | 字数超出范围却没做部分显示,会影响样式 | ||
数据维度 | 1、了解来源数据的维度2、要测一和多 | 程序处理单个数据,还是list? | 促销早期曾发现问题,当一个商品有一个赠品的时候不会报错,两个赠品就报错了 | |
其他校验 | ||||
页面输入 | 数据类型和范围 | 1、了解前台限制的数据类型和范围规则2、了解数据存储定义的数据类型和范围3、了解下游系统接口数据类型和数据存储定义的类型和范围4、测试时,上游数据的类型和范围限制需要小于下游5、需要测试前端和服务端 | 数据的类型和范围,需要向上兼容 | 为什么要测服务端?假如上游到下游的存储限制为,10->100->20,在100的时候,通过伪造变更数据等方式,将数据改为100,在下游会报错 |
必填 | 1、校验前端必填2、直接模拟POST请求,校验后端必填 | |||
默认值 | 1、非必填不填,校验默认值存储2、页面上没有填的信息,校验默认值存储3、下游系统关注默认值逻辑 | 不填或者没地填,可能会有默认值,下游系统应该评估影响 | ||
空格 | 1、验证是否strip前后空格2、验证中间空格不应被strip | |||
特殊字符 | 同上特殊字符 | 1、断掉传输格式2、SQL和JS注入 | ||
特殊输入项正则校验 | 1、校验前端2、校验后端 | 身份证手机号邮箱等 | ||
数据变化 | 篡改隐藏域数据(前端) | 1、更改POST提交的隐藏域的信息的关联性2、校验信息的关联性 | 可以改隐藏域,实际上就是伪造POST请求 | 修改数据的关联性,比如商品在某些城市是有效的,篡改下单链接中的商品和城市关系,需要校验该商品是否覆盖此篡改城市 |
篡改隐藏域数据属性(后端) | 1、设置隐藏域获取的数据有效2、打开表单页面3、修改数据为无效4、提交表单 | 表单页面获取时的校验,提交时要重新做一遍 | 前提:提交订单页面获取了商品、商家、促销、优惠券等信息,缓存在隐藏域,数据本身仅仅是个ID,在数据库中存储了更多的属性操作:在表单提交之前,将缓存的数据属性的有效性进行变更,如:商品下架、缺货、金额改变、商家冻结、促销过期或达到限购提交表单:验证已变化的数据是否做了校验,对存储有何影响 | |
提交防重 | 前端防重 | 1、双击提交按钮 | 点击后按钮应置为disable,防止误连击 | |
后端服务业务防重 | 1、了解业务上的防重逻辑2、对业务上需要防重的维度做重复提交 | 对业务上的防重逻辑做校验 | 最快的方式,通过开发者工具重发POST/PUT请求,校验服务端防重 | |
并发防重 | 1、了解防重维度在数据库是否有唯一索引存在2、如果不存在需要使用jmeter或者自己写个多线程,模拟并发测试是否会灌入重复数据 | 1、数据库做唯一索引限制可以有效的避免重复数据2、如果出于性能考虑,不做唯一索引,则需要其他手段来保证数据唯一 | ||
SQL或者JS注入 | 1、文本框注入2、HTTP请求注入 | SQL注入跨站脚本编制等 | 对关键字符检查是否过滤或转义或者注入响应代码或者appscan等工具扫描 | |
用户权限 | 是否有用户权限 | 登录、未登录,用户安全、越权测试 | ||
缓存设计 | 是否有缓存设计 | 了解缓存应用类别,对缓存进行测试 |