功能测试Bug频发?测试工作中这点不可忽略
作者:互联网
摘要:近年来,随着互联网行业的快速发展,银行系统更新迭代愈发频繁,在功能测试中特殊字符类测试缺陷频发。需要相关资料,如何有问题可以查看我评论区关注我评论区
笔者参与了众多银行系统项目的功能测试工作,在测试过程中,笔者发现与特殊字符相关的功能测试缺陷日益增多,例如NULL字符引发的报文拼接报错、生僻字解析报错等。
为规范特殊字符测试设计,提高测试设计质量,笔者针对常见特殊字符类型进行了分类,并针对每一类特殊字符进行了概述和典型风险场景分析,旨在形成一套体系化的特殊字符测试设计规范,用于功能测试人员开展特殊字符专项测试的参考。
关键词:功能测试,特殊字符
笔者结合自身参与的银行系统功能测试实践经验,针对常见的特殊字符进行了分类,包括“NULL”、“空白字符”、“汉字生僻字”、“常用分割符”、“数据库相关特殊字符”、“其他特殊符号”等6类,“特殊字符”的测试覆盖规则严格依赖于具体的系统交易字段(页面字段、数据库字段),测试人员在实际测试过程中,先选择要测试的字段,再根据实际情况选择要覆盖的特殊字符类型。
空值NULL
1.1概述
“NULL”指数据库中具体字段的“NULL”值。NULL是一个不确定的值(NULL represents an unknown value),所以不包括在任何一个指定的集合中。常用数据库有DB2,Sybase,Oracle和MySql,不同数据库对NULL的处理存在差异,容易造成程序缺陷,特别是数据库迁移时更容易发生。目前已知的NULL相关缺陷有两类:
·应用程序读取字段,未判断null,导致应用抛出异常。
·不同数据库NULL处理有差异,导致应用程序逻辑不一致。
1.2典型风险场景
该类问题风险场景主要为不同数据库处理机制差异,例如:Sybase对空值的处理为长度为1的空格,而Oracle为NULL,在拼接报文时会出现因缺少字段而报错。测试人员应根据需求说明书逐一对各输入框的必输性进行测试,对于非必输项需测试其为空值的场景。笔者在测试过程中发现非必输项如输入空值,则迁移到Oracle数据库后会报“9998”类型错误,后项目组采取了对所有输入为空值的字段,均用统一默认值替代,解决了因识别空值为NULL而引发报文中字段缺失进而导致交易报错的问题。
空白字符
2.1概述
本文的“空白字符”指空格符(SPACE),制表符(TAB)与换行符(\n)。当前,“账号”“金额”等字段中允许输入空白符,但是应用处理不一致,会导致缺陷。目前已知的缺陷类型有:
·字段中间有空白字符,导致业务异常。
·字段首尾有空白字符,导致业务异常。
2.2典型风险场景
·户名字段输入空白字符,可能会发生对公户和个人户的混淆,例如:“张三”为个人户名,输入空白字符“张三 ”“张 三”后,由于户名长度过长,应用会将个人户识别为对公户,进而发生逻辑错误。
·账户号字段输入空白字符,会发生转账类交易失败等。
汉字生僻字
3.1概述
功能测试在界面输入字段如输入汉字生僻字类型,可能发生字段输入值校验失败、报文解析报错等,笔者梳理了常见的生僻字,测试人员可结合测试具体情况选择相应的生僻字进行测试。
常见汉字生僻字:
3.2典型风险场景
·转账类交易中收款方账户名称校验失败,交易失败。
·交易明细中有生僻字,导致报文解析失败。
常用分隔符
4.1概述
“常用分隔符”特指“|”,“-”,“/”,分号,逗号等5个符号。数据库字段存储时会把上述符号作为分隔符处理,如输入数据本身存在分隔符,则会引发字段解析错误,导致报文解析失败。
4.2典型风险场景
·交易明细查询在数据表中存储时,字段间以“|”做分隔符。如果交易数据中某些字段内容本身就包含“|”的话,在进行联机查询时,就会引起字段解析错误,导致明细查询报文解析失败。
·附言/备注中的分隔符“|”,导致关联系统报文解析失败。
数据库相关特殊字符
5.1概述
数据库相关的特殊字符包括:
1、未兼容数据库的特殊字符“_”、“%”等,该类特殊字符会引发数据库存取缓慢,引发系统运行风险等问题;
2、数据库处理机制存在差异的字符类型,如char类型字符在不同数据库的处理机制不同,存在程序逻辑错误风险,在数据库迁移测试中需重点关注;
3、SQL注入是一种WEB应用代码漏洞,测试人员可在输入字段中增加带有附加条件的SQL语句执行测试。
5.2典型风险场景
·未兼容数据库的特殊字符“_”、“%”,查询交易在使用模糊查询时,可能会引起极个别使用特殊字符做户名的客户的数据库查询时间长,进而对系统运行造成风险。
·Sybase和Oracle对于不同字符类别的处理机制不同。以char字符类型处理机制为例,Sybase中历史数据中有长度为1的数据‘6’,迁移到oracle后,取值时为会自动补空格变为‘6 ’,导致程序逻辑出错。刚开始开发人员在程序中通过trim过滤空格,后统一将char类型修改为varchar类型。
·表单中提交1’or1=1;#获取所有账号信息,可通过数据库用户最小化权限等方法解决。
其他特殊符号
6.1概述
其他特殊符号包括数字符号、货币符号、符号图案、外文字母等,详见下表:
6.2典型风险场景
·输入字段结合项目具体需求选择适配的特殊字符。
·重点关注交易明细(翻页)、账户明细(翻页)、转账等交易户名为特殊字符的场景。
标签:频发,字符,生僻字,数据库,功能测试,测试,NULL,Bug,特殊字符 来源: https://blog.csdn.net/weixin_54556126/article/details/122387254