资源描述
Bug预防体系
web常见产品问题及预防
测试人员在每次版本迭代中, 会对项目整体质量有一个把控, 对于项目常见问题, 开发常常犯错误都会有所了解, 为了避免或者降低这么错误或不规范事情在发生, 测试人员能够整理构建属于产品bug预防体系, 总结项目常常出现bug种类、 位置、 以及能够提出针对性规避方法, 提升产品质量。
1. 分辨率兼容性
Ø 产品网页通常确保在1024*768分辨率下显示正常, 不过常常忽略
800*600分辨率下显示情况, 还有其她特殊要求分辨率
Ø 假如页面设计明确只考虑1024*768需求, 则只在1024*768下验证各个
产品页面显示正确无误
预防方法:
Ø 产品: 需要明确产品需要兼容常见屏幕分辨率
Ø 开发: 网页页面设计需要针对多个屏幕分辨率制订设计规范, 并依据设计规范进行开发
Ø 测试: 在不一样分辨率下验证页面显示兼容正确性
2. 浏览器兼容性
现在市场上主流浏览器以下:
a. IE 6.0-11
b. 360 浏览器
c. 猎豹浏览器
d. QQ 浏览器
e. Chrome 浏览器
f. FireFox 浏览器
通常情况下要确保IE6-11和360 浏览器下兼容性, 需要确保页面不变型,
Js实施均正确
预防方法:
Ø 产品: 依据主流浏览器市场占比, 评定你需要兼容浏览器
Ø 开发: 针对需要兼容浏览器类型和版本, 指定浏览器兼容设计开发规( CSS和Js 为主), 并不停总结兼容性经验教训
Ø 测试: 在产品要求兼容浏览器类型和版本下, 进行兼容性测试
3. Link问题
全部链接是否按指示那样确实链接到了该链接页面
Ø 所链接页面是否存在
Ø 确保Web应用系统上没有孤立页面, 所谓孤立页面是指没有链接指向该页面
Ø 链接打开方法是否合理(在目前窗口中打开、 打开新窗口)
Ø 有死链
预防方法:
Ø 产品: 提供需求中明确是否需要链接以及链接位置以及链接打
开方法
Ø 测试: 死链测试能够采取工具自动进行
4. 快捷键和焦点
Tab键和焦点切换: 在测试页面中使用Tab键能够在全页面全部元素进行焦点切换、 而且要将相邻元素 tab键切换次序做到关联。
如:
a. 用户打开登录首页, 则焦点应该默认显示在用户名输入框中
b. 在用户名输入框输入用户名以后, 按下tab 键后, 焦点应该切换到密码输入框中, 而不是切换到其她元素上。
c. 输入密码后, 按下tab键可将焦点切换到“保留密码”复选框或者登录按钮以上操作, 均对偏好使用快捷键用户给于更友好支持。
预防方法:
Ø 产品: 考虑页面默认焦点设定位置, 设定tab键在界面上切换焦点次序
Ø 开发: 依据产品人员要求实现默认焦点位置, 和tab 键切换次序
Ø 测试: 验证默认焦点位置和tab切换次序
5. 前进、 后退和刷新
IE 有一个特征: 就是许可前进、 后退到某一个页面或在目前页面刷新, 在一些特殊业务场景要求下, 用户进行前进、 后退和刷新目前页面操作, 会造成数据不完整、 校验失败或者反复提交情况。
预防方法:
Ø 产品: 明确哪些敏感页面不许可前进、 后退和刷新, 通常情况下充值和支付等相关页面或者其她数据提交页面严禁后退和刷新后提交。
Ø 开发: 从技术层面考虑后退和前进操作是否会造成系统漏洞, 让用户反复充值或者支付。假如用户尝试后退, 则让页面强制失效或者严禁后退。
Ø 测试: 和产品确定严禁后退操作限制页面, 进行针对性测试
6. 页面提醒语言、 js提醒语言、 程序提醒语言
通常情况下, 产品人员并不会将产品需求细化到某句话应该怎样提醒用户, 所以不一样程序员会依据自己语言特点来提醒用户, 这就造成了不一样程序员提醒语言风格完全不一样, 造成产品友好度下降。
预防方法:
Ø 产品: 产品人员和开发人员一起制订尽可能大而全产品提醒语言规范, 而且作为规范说明提供给开发人员进行使用。
Ø 开发: 遵守语言说明规范, 而且针对多种系统要求不停补充和规范提醒
Ø 测试: 测试过程中, 验证语言是否符合指定语言规范
语言文字提醒:
a. 全角字符和半角字符都要使用一个空格分开
b. 英文和数字之间要有空格分开
c. 汉字和英文、 数字要有空格分开
d. 带有汉字话要使用全角字符
e. 语言中不要混用全角和半角标点
f. 在语言中, 永远不要用“你”这个字, 要做部分操作步骤描述时候, 要多用“请”字
7. 文字缩略和折行
输入框提交很长纯英文字母或者数字(不带任何全角字符和汉字), 而且不换行, 则提交数据后, 页面可能被此相关字符拉伸尤其长。
预防方法:
Ø 开发: 提交公共处理字符程序, 处理上述问题, 在全部输入框中增加相关处理
Ø 测试: 全部输入框需要进行此输入测试, 确保页面不会被用户恶意输入拉长
8. 图片显示和链接
图片是否增加链接通常会被开发人员忽略掉图片显示位置通常会显示不一样像素大小和百分比图, 所以需要明确定义大图片怎样缩减成为小图片策略, 以及小图片怎样拉伸显示为大图片。
预防方法:
Ø 产品: 提供需求中明确图片是否需要链接以及链接url地址以及点击后是在目前页打开, 还是弹出新页面打开。明确用户上传图片显示方法, 采取等比缩放, 还是原大小显示, 还是自适应显示
Ø 开发: 根据产品要求进行开发, 针对图像显示开发统一显示模块
Ø 测试: 点击图片链接, 验证图片链接正确性和打开方法是否符合产品设计要求。传不一样格式图片(长方形图、 正方形图、 原型图、 超大图和超小图), 验证图片显示策略符合产品
9. 反复提交
用户提交数据页面, 用户有可能连续数次点击提交按钮, 造成数据反复提交。
黑客或者不良用户经过抓包能够获取提交url , 进行尝试反复提交。
预防方法:
Ø 开发: 点击“提交”后, 将按钮变为Disable状态, 严禁用户再次点击。针对每条提交数据需要增加校验参数, 预防不良用户经过其她工具恶意提交。
Ø 测试: 经过页面验证按钮点击后状态, 经过工具发送反复提交请求, 验证系统是否能够处理反复提交问题(金融系统需关键测试)
10. 输入判定问题
Ø 全部键盘输入特殊字符, 均能够正常保留
Ø 需要尤其处理英文单引号、 英文双引号等引发程序错误问题
Ø 需要处理“ <”、 “ /”和“ \”等轻易保留犯错字符
Ø 数字框只能输入数字内容
Ø 日期框需要判定日期是否正当
Ø 文本框需要判定字段长是否限制了
Ø 对于空格处理, 假如系统想trim掉字符串最开头和最终空格, 则需要整个系统都使用此策略, 不然会造成数据传输不一致问题
Ø 需要前台页面使用js来判定输入正当性, 同时后台逻辑也要添加判定输入正当性
预防方法:
Ø 开发: 开发公共处理特殊字符模块, 在系统中进行规范应用
Ø 测试: 对全部输入字段, 进行输入判定测试, 超长、 空、 特殊字符、 utf8字符等, 并验证其她页面输入有效性, 验证前台和后台均加有输入判定逻辑。
11. 多个ie同时访问
Ø 用户可能打开不一样IE使用相同用户登录后进行操作, 程序处理时候要考虑到数据一致性和同时问题
Ø 多个IE使用不一样用户, 则cookie操作不会出现用户信息混乱问题
预防方法:
Ø 开发: 提前考虑到多个IE操作和多用户操作使用场景, 在使用cookie当地信息时需要做好针对性程序处理, 依据以往出现问题设计开发规范
Ø 测试: 根据多浏览器和多用户使用情况, 进行更多场景测试
12. 安全考虑
Ø 在URL中不要带有明文用户信息写代码时候, 不要把密码等敏感用户信息明文显示在url中
Ø 即使要传输密码参数也不要使用pwd、 passpord这么参数名称来进行传输, 预防被截获
Ø 要在传输参数操作中使用NoCache参数, 预防将url参数进行缓存
预防方法:
Ø 开发: 建立数据传输技术规范和参数命名规范标准, 严格参考实施, 预防信息被拦截, 造成应用系统信息泄露
Ø 测试: 在缓存目录验证缓存信息是否有敏感信息, 经过抓包方法验证是否暴露了敏感信息
13. 直接URL链接检验
在Web系统中, 匿名在地址栏直接输入各个功效页面URL地址, 检验
系统是否处理了权限控制
预防方法:
Ø 开发: 代码走查方法确定全部页面含有权限验证逻辑
Ø 测试: 获取全部系统url, 在非登录情况下进行遍历截图, 或关键字判定, 验证非登录状态下无法访问含有访问权限限定
14. 预防sql注入和跨站攻击
Ø 不要把数据库或者程序任何报错信息显示在页面上。
Ø 数据库中包含到操作权限表名和字段名不要使用过于通俗易懂命名, 尤其是用户和密码之类信息, 严禁使用明文存放密码
Ø 页面回显input text, input hidden汉字本内容需过滤 “ <、 >、 ”、 ’等字符(半角转换为全角或者删除掉), 预防 Javascript 跨站攻击
预防方法:
Ø 开发: 犯错时候使用错误处理页面, 建立标准过滤关键字程序, 统一数据库设计命名规范将敏感表名做特殊命名处理, 密码使用Md5或其她加密方法保留
Ø 测试: 验证全部页面不会暴露系统任何犯错信息使用安全工具appscan 或其她工具扫描系统sql注入漏洞和跨站攻击漏洞
15. 相关cookie
Cookie没有设定过期时间IE不支持Cookie时候没有任何提醒信息Cookie中敏感信息没有进行加密
预防方法:
Ø 开发: 明确cookie生存期, 并对生成cookie进行检验, 建立标准检验浏览器对cookie支持程序函数
Ø 测试: 检验cookie生存周期, 以及是否存在敏感内容
16. 多种资源链接释放
有时候, 系统莫名访问不了, 有可能是数据库连接没有释放压力测试时候, 连接释放假如效率不高, 则有可能出现大量连接超时失败内存泄露, 长时间工作内存被占满了。
预防方法:
Ø 开发: 系统资源释放过程, 最好经过代码review方法来相互监督
Ø 测试: 进行稳定性测试, 验证长时间工作情况下资源是否能够释放
相关keepalive设置:
假如需要在一个连接同时获取多个资源, 则需要打开apache或者resinKeepalive参数为On, 来提升系统处理能力, 降低数次建立连接所消耗资源。假如大量处理只是一次性连接, 则不要打开Keepalive设置。在实际工作中, 需要将keepalive分别设置On或者Off来验证哪个设置性能愈加好。
17. 系统上线log配置
上线以后, 要关闭无用大量调试log信息不要打开过多log
预防方法:
运维和开发: 系统管理员对全部打开log等级进行确定, 并群发相关人确定
18. 用户易用性
用户删除某个数据前, 要明确提醒用户是否要删除, 默认把焦点选择为“否”。
预防方法:
Ø 开发: 根据上述要求进行焦点设定
Ø 测试: 进行测试确定
19. 文档
程序实现和接口文档描述不一致
预防方法:
Ø 开发: 团体中专员定时对接口文档进行审核和更新, 确保文档、 需求变更和程序实现保持一致
Ø 测试: 仅参考文档进行测试
20. 多表操作
具体设计文档缺失, 接口对多表进行操作时候, 常常会发生有些表数据没有被更新情况
预防方法:
Ø 开发: 审核设计文档是否覆盖必需逻辑, 加强代码审查
Ø 测试: 经过查询接口判定全部插入接口数据库操作是否正确
展开阅读全文