功能测试框架
常用的测试用例的方法:
1、等价类划分
包含有效等价类和无效等价类,例如要求登录名为:数字+字母,有效等价类就是:数字+字母,无效等价类就可以是1)只包含数字,2)只包含字母,3)有特殊字符等。
2、边界值分析
边界内取值,边界上取值,边界外取值都要考虑,例如密码要求8-20位,需要测试 7位,8位,19位,20位,21位
另外做边界值测试,也不能忘记正常范围内的测试。
3、因果图分析
是需要考虑一些输入条件的排列组合,因果图就是生成判定表,根据需求找到输入条件,以及条件所产生的结果,多种组合,举例说明:
4、正交实验设计方法
根据被测软件的说明书,找到影响功能实现的操作对象和外部因素,把他们当作因子,而把各个因子的取值当作状态。
5、功能图分析方法
用到逻辑覆盖和路径测试的概念,属于白盒测试的范围。
逻辑覆盖包括:语句覆盖、判定覆盖、条件覆盖、条件组合覆盖
路径覆盖:每一条路径都需要覆盖。
6、错误推测法
基于经验和直觉猜产品能够有啥错误。
1、程序中有可能出现的错误
2、产品中以前出现的错误
7、需求文档转化法
熟读产品说明文档, 将每句话都测试一遍。
8、随机测试
站在一个用户的角度,随意点击,查看是否会报错。
9、对象属性分析法
bug预防体系
分辨率问题
1、一般都会在1024*768 的分辨率下查看,其他的分辨率,例如800*600 也可以
预防办法:
产品:需要确定哪几种常用的分辨率需要兼容 ; 研发:需要设计时针对各个分辨率制定设计规范,并按照规范研发
测试:需要测试产品需要的几个常用分辨率的兼容性
web兼容性测试
1、360浏览器
2、edge浏览器
3、safari浏览器
4、谷歌浏览器
5、火狐浏览器
6、qq浏览器
7、opera浏览器
预防方法:
产品:需要确定哪几种常用的浏览器需要兼容 ; 研发:需要设计时针对各个浏览器制定设计规范,并按照规范研发
测试:需要测试产品需要的几个常用浏览器的兼容性
link问题
1、所有的链接是否有效,并且链接到相对应的页面中
2、保证web中没有孤立的页面,也就是说没有链接可以到达这个页面
3、链接打开的方式是否合理(在原有洁面打开还是打开一个新的链接)
4、是否存在死链接
预防方法:
产品:需求中写明链接位置和链接目的地
测试;要检查每个链接是否有效
链接检查工具:
http://www.csdn.net/article/2013-12-13/2817805-online-tools-for- managing-broken-links
快捷键和焦点
tab键和焦点的切换:
在测试的页面中,对全页面,tab键都可以进行焦点切换,并且将相临的tab键切换顺序做到关联。
例如:
1、登录页面,tab键默认在用户名上;2、输入用户名,按tab键,则聚焦到输入密码上;3、输入密码后,聚焦在点击按钮”登录“上。
预防体系:产品需要明确该页面哪些需要tab聚焦以及聚焦顺序;研发:按照产品要求编写代码;测试:要验证默认焦点与切换顺序是否合理。
前进、后退、刷新问题
1、在有些特殊的情况下,是不允许前进后退操作,会出现重复提交、数据不完整、校验失败等问题
预防办法:
产品:明确哪些敏感页面不允许前进后退,例如:提交订单或者充值支付等功能。
研发:需要考虑如果前进后退是否会有系统漏洞,比方说让用户重复充值,所以是否后退功能应该失效。
产品:多从用户的角度考虑,万一我前进后退了会怎么样,和产品确定需求。
页面提示语言,js提示语言
往往在一个产品中,每个研发人员用的提示语言都自带风格,所以不能统一,友好度下降
预防方法:
产品:产品统一规格提示语言;研发:按照规范执行;测试:按照规范测试
1、提示语言里面永远不要用“你”
2、如果有操作,可以用“请”
3、全脚和半脚不要掺合使用
4、英文和数字之间有空格,汉字和英文,数字之间也有空格。
图片展示问题
在页面中往往有一些图片,有的图片不能完全展示,有的图片自带链接链接无效。有的图片不具备放大缩小的功能。
预防体系:
产品:严格在说明书中明确该图片是否有链接,链接位置指向哪,链接是在当前页面展开还是进入新的页面,这些都得说明,还有该图片是否能够放大,是否能够放小等需求。
研发:按照产品规定开发,并且最好一个项目图片保持一种规范
测试:点击图片的链接,验证链接有效性,另外传图片可以不同形状的传,还有不同大小,看是否正常展示
输入框
输入框填入超长字符是否有溢出,是否与旁边位置有重叠。尤其如果输入字母考虑大写字母的宽度,全部写成大写字母。
预防体系:
研发:把所有的输入框都限制最长字符设置
测试:把所有的输入框都做最长字符限制的测试,然后观察检查是否有重叠,找那种字体特别宽的字符。
重复提交
用户提交数据页面,是否可以反复点击“提交”按钮,并检查如果反复提交的话,数据库中有几条数据
预防体系:
研发:要考虑是否能够反复提交,当点击提交后,是否提交按钮就变为失效的状态。
测试:通过脚本或者工具要查看提交按钮是否可以反复点击,尤其是金融系统。
输入判断问题
输入的内容判断:
1、特殊字符是否支持
2、是否区分大小写
3、是否对全角、半角有限制
4、数字框是否只支持数字
5、输入框中最长最短字符的判断
6、对待空格的处理
7、需要前台地址js判断输入的准确性,后台也判断以下输入的准确性。
预防措施:
产品:在说明书中要明确判断输入的是否正确。
测试:对所有的输入字段进行判断,包括超长、特殊字符、大小写字母,标点符号,空格,空等操作。
不同浏览器同时登录同一个账户
数据同步的问题,当一个账户登录到不同的浏览器或者一个浏览器登录不同的用户时,cookie操作不会出现混乱的问题。
预防体系:
1、产品:要考虑多个用户,不同浏览器操作的场景,设计更全面
2、测试;按照多浏览器和多用户的使用情况,进行更多场景测试。
安全考虑
1、当代码用户信息(密码)等的url不要包括明文信息。
2、即使要传递密码,也不要用特别明显的字段:例如pwd,password这样的字样,容易被人截获
预防体系:
测试:要用抓包工具,或者开发者工具查看是否存在敏感信息,是明文状态的,例如密码,另外验证下缓存信息是否有敏感信息。
url链接检查
在web系统中,直接输入各个功能页面的输入url链接,查看是否能够正常显示。
预防体系:
研发:代码走查的时候要验证每个url是否有权限限制,逻辑关系,比如没有登录账户,直接输入一个页面的url,是否需要跳转到登录页面的url
测试:获取所有系统url,在非登录情况下进行遍历截图,或关键字判 断,验证非登录状态下无法访问具有访问权限限定的
sql注入和跨站攻击
1、不要把数据库中和程序中的报错信息显示在前端页面上
2、在数据库中如果是比较敏感的信息,字段名不要用很通俗易懂的东西,尤其密码啥的,不要用password,也不允许用明文。
3、页面回显的input text, input hidden中的文本内容需过滤 “<、>、”、’等字符(半角转换为全角或者删除掉),防止 Javascript 的跨站攻击
预防体系:
测试:验证页面不会暴露系统的所有出错信息,可以使用appscan或者其他工具扫描系统的sql注入漏洞
用户易用性
当用户删除某个东西时,要有相对友好的提示语言。
预防体系:
测试:对每个删除操作都要有友好提示语言
接口文档不符合
有的时候设计和接口文档不一致
预防体系:
1、产品:要严格把控接口文档是否符合要求,及时审核和更新
2、测试:严格按照接口文档操作
各个资源连接释放
有的时候系统访问不了,那是因为数据库连接没有释放,如果在做压力测试,连接释放如果效果不高,则有可能出现可能大量超时失败的内存泄漏问题。长时间工作内存满了
预防方法:
测试:进行稳定性测试,验证长时间情况下资源是否可以释放。
参数的容错处理
如果接口对参数没有很好的容错信息,对返回值也没有很好的容错处理
预防方法:
1、产品:对接口文档要明确哪些需要有容错处理;测试:严格按照文档进行接口测试。
探索性测试
探索性测试的类型
1、自由式探索
2、基于场景的探索
3、基于策略的探索
4、基于反馈的探索。