功能测试3剑客=功能测试框架+BUG预防体系+探索性测试
功能测试框架
1.测试用例设计方法
-
等价类划分方法:在输入条件规定了取值范围的情况下,则可以确立一个有效等价类和两个无效等价类
-
边界值分析方法:若输入条件规定了取值范围,则选择恰好落在边界上,以及处在边界内、外边上的测试值
-
因果图分析方法:考虑输入条件之间的相互组合,生成判定表,检查程序输入条件的各种组合情况
- 正交实验法:
依据Galois理论,从大量的(实验)数据(测试例)中挑选适量的,有代表性的点(例),从而合理地安排实验(测试)的一种科学实验设计方法.可以是用软件来提取测试例【PowerPoint】
- 功能图分析方法(白盒测试):
语句覆盖、判定覆盖、条件覆盖、条件组合覆盖、路径覆盖
- 错误推断法:
基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法
- 需求文档转化法:
所有的需求文档描述的文字信息、流程图、状态图,口头共识转化为用例
- 随机测试法:
不考虑任何测试用例和需求,完全站在一个用户或者的角度对产品进行使用
2.测试策略
- 界面测试
- 功能测试
- 可靠性
- 易用性
- 可维护
- 竞品对比
- 负载
- 压力
- 兼容
- 稳定性测试
BUG预防体系
现代测试人员的价值:不是发现更多的BUG,而是如何让项目的BUG出现得更少,任何事都是事前防范胜于事后补救。
1.流程:
- 分辨率兼容性:
产品的网页通常保证在1024*768的分辨率下显示正常,但是常常忽略800*600分辨率下的显示情况,还有其他特殊要求的分辨率如果页面设计明确只考虑1024*768的需求,则只在1024*768下验证各个产品页面的显示正确无误预防方法:产品:需要明确产品需要兼容的常见屏幕分辨率开发:网页页面的设计需要针对多种屏幕分辨率制定设计规范,并依据设计规范进行开发测试:在不同分辨率下验证页面显示的兼容正确性
- 浏览器兼容性:
目前市场上的主流浏览器如下:1. IE 6.0-112. 360 浏览器3. 猎豹浏览器4. QQ 浏览器5. Chrome 浏览器6. FireFox 浏览器通常情况下要保证IE 6-11和360 浏览器下的兼容性,需要保证页面不变型,Js执行均正确预防方法:产品:依据主流的浏览器市场占比,评估你需要兼容的浏览器开发:针对需要兼容的浏览器类型和版本,指定浏览器兼容设计开发规范(CSS和Js 为主),并不断总结兼容性的经验教训测试:在产品要求兼容的浏览器类型和版本下,进行兼容性测试
- Link问题:
所有链接是否按指示那样确实链接到了该链接的页面所链接的页面是否存在保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面链接的打开方式是否合理(在当前窗口中打开、打开新窗口)有死链预防方法:产品:提供的需求中明确是否需要链接以及链接的位置以及链接的打开方式测试:死链测试可以采用工具自动进行
-
页面提示语言、Js提示语言,程序提示语言:通常情况下,产品人员并不会将产品需求细化到某句话应该如何提示用户,所以不同的程序员会根据自己的语言特点来提示用户,这就造成了不同程序员提示的语言风格完全不一样,造成产品友好度下降。预防方法:产品:产品人员和开发人员一起制定尽可能大而全的产品提示语言规范,并且作为规范说明提供给开发人员进行使用。开发:遵守语言说明规范,并且针对各种系统的要求不断补充和规范提示语测试:测试过程中,验证语言是否符合指定的语言规范
-
重复提交:用户提交数据页面,用户有可能连续多次点击提交按钮,造成数据的重复提交。黑客或者不良用户通过抓包可以获取提交的url ,进行尝试重复提交。预防方法:开发:点击“提交”后,将按钮变为Disable状态,禁止用户再次点击。针对每条提交的数据需要增加校验参数,方式不良用户通过其他工具恶意提交。测试:通过页面验证按钮点击后的状态,通过工具发送重复提交的请求,验证系统是否可以处理重复提交的问题(金融、财务系统需重点测试)
-
安全考虑:在URL中不要带有明文的用户信息写代码的时候,不要把密码等敏感的用户信息明文的显示在url中即使要传递密码参数也不要使用pwd、passpord这样的参数名称来进行传递,防止被截获要在传递参数的操作中使用NoCache参数,防止将url参数进行缓存预防方法:开发: 建立数据传输技术规范和参数命名规范标准,严格参照执行,防止信息被拦截,造成应用系统的信息泄露测试:在缓存目录验证缓存信息是否有敏感信息,通过抓包方式验证是否暴露了敏感信息
- 系统上线的log配置
上线以后,要关闭无用大量调试log信息不要打开过多的log预防方法:运维和开发:系统管理员对所有打开log级别进行确认,并群发相关人确认
- 参数的容错处理:
接口没有对参数进行必要的容错,参数出现错误的时候,接口也没有做相应的错误处理,文档也没有描述容错机制和返回代码预防方法:开发:明确每个接口对哪些情况进行必要的容错,并写到设计文档中,由Leader 进行文档审核测试:严格按照接口文档的容错描述进行测试,并且可以结合参数类型和非法参数进行结合测试
探索性测试
- 静态页面:静态文字、图片、链接页面显示
- 静态文字
检查页面上的字体、size、颜色、位置;
检查页面文字图标的间距、行距是否统一,对齐方式是否统一;
静态文字中是否存在拼写错误;
- 图片
检查图片的尺寸、位置;
对广告图片的点击是否正常,点击后给出的页面是否正确;
页面上具有相同意义的图标应保持一致;
对于链接其他网站的图片,无法显示时是否有容错性处理; - 链接
对广告图片的点击是否正常,点击后给出的页面是否正确;
检查页面链接是否可正常点击,点击后链接到的位置是否正确;
链接点击后是否正常的发生颜色变化(若特殊处理也需要相应的检查);
链接的打开方式是否合理(在当前窗口中打开、打开新窗口,一般风格一致的都在同一个窗口打开); - 页面显示
调整页面大小,检验页面的布局是否被压缩,重叠,覆盖等;
对需要屏蔽的页面检查是否有效屏蔽,对只能打开一个的功能页面,检查是否被打开了多个;
检查不可调整大小的页面是否可调整页面大小;
检查需要滚动条的页面是否提供的滚动条,并可有效滑动;
对页面中影响到光标位置或者阴影等特效效果位置的操作,需要检验操作的正确性和效果的合理性;
页面被内容拉长,拉宽后,检查页面的文字是否还能正确显示,对齐方式,格式都保持一致、正常;
对外文(日文、韩文)和繁体的显示,需要支持,不允许出现乱码;
页面中的tab翻页可以正常切换、支持tab按键切换的要检验使用的正确性。多个tab页面间的数据交换更新要检验正确性;
页面推荐的内容要保证有结果,可以正常使用。
- 静态文字
- 逻辑层面
- 表单:按钮、单行文本框、多行文本框、单/多/复选框、单表、多表、翻页的功能是否正常
按钮的大小、摆放间距、对齐方式是否一致;
按钮上文字的字体、size、对齐方式是否一致;
使用tab键切换按钮,顺序是否符合需求规定;
按钮可正常点击,触发的后续操作是否正确;
对于有时效性的按钮,需要结合时间考虑可用性是否符合要求;
对于有条件限制使用的按钮,可用性是否符合条件限制;
New button:检查包含next和cancel按键的子窗口的显示;检查子窗口显示的内容;
Add button:检查包含save和cancel按键的子窗口的显示;
Edit button:检查在未选择项目情况下点击后的警告信息;检查包update和cancel按键的子窗口的显示;检查选择的项目是否显示在制定的位置;
Copy button:检查在未选择项目情况下点击后的警告信息;检查点击后的确认信息;检查插入后的复制数据;
Delete button:检查在未选择项目情况下点击后的警告信息;检查点击后的确认信息;检查删除后的数据;
Run button:检测运行时的参数窗口;检查执行结果;检查未选择项目情况下点击后的警告信息;
Back button:检查是否回到上一屏幕;
Next button:检查是否显示下一屏幕;
Finish button:检查数据是否进入数据库;检查完成屏幕的显示;
Cancel button:检查确认信息;检查是否有其他键执行同样功能;检测是否能能够正确处理;文本输入框需要过滤html tag标签;
文本输入框需要检查长度限制是否准确。并考虑汉字和字母数字所占用的长度折算关系检验长度限制;
文本输入框检验需求规定要求过滤的特殊字符;
对于粘贴的文字数量超过限制的容错处理;
对用户可编辑可输入的功能点,需要进行临界测试
对用户可编辑可输入的功能点,需要进行越界容错测试复选框需要根据单选和多选的限制进行选择。单选的进行多选验证或者空选,多选的如果有选择数量限制,则需要考虑空选和超出限制的选择验证
对于动态的复选框,在新增了内容后可以及时的反应到页面上提供选择。同理对于删除的选项页需要及时的反应到页面不可见或者不可选。
对于选择多个数据进行后续操作的复选形式,需要检查多选后的数据数量是否正确。检查空选的容错处理。
对下拉方式的选择,检查选中后在输入框内出现的内容是否和checkbox中的内容一致
下拉选框的候选内容为空时的,需要的容错处理检查翻页是否正常,检查分页是否正确,检查每一页显示的数据项、数据数量是否正确;
修改浏览器地址栏的翻页参数,检查参数在页码合法范围内时,是否正确跳转;检查参数超出页码合法范围时,是否有容错性处理; - 表单之间的关联关系、数据传递、数据同步
检查表单中显示的数据项(下拉文本框、文本框等)内容是否与数据库中存储的信息一致;
修改数据项内容后,检查表单显示的内容是否改变,显示是否正确;
对页面的url进行参数修改,是否可以正常处理。单一逐个修改,组合修改检查是否可以正确处理。
检查表单中数据项是否有记忆保留功能,对于已经提交的数据是否能正确显示;
对于提交页面连接超时时,需要给出合理的文字提示。对不能连接或者出现异常的页面也要给出合理提示。多表单间数据传递时,检查如果会中间步骤中断,是否有容错处理,是否能保证数据在数据库中的唯一性;
检查直接访问中间表单的URL时,是否限制访问,做出了相应的容错性处理,保证路径顺序的完备性;
对连续页面功能操作测试时,需要考虑浏览器上刷新、回退、前进按钮的影响。在登录、密码输入校验等不可逆的位置,应对回退前进进行适当处理,需要检验
对存在与多个页面的功能需要统一的结果界面时,需要检验不同的触发点得到的结果页面是否一致
提交写数据的事务性测试,对于分段提交的数据,当数据的录入不完整时,如缺少某一段或多段数据,检查是否有容错性处理; - 上传下载
上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到;
对于上传文件的文件名是否有容错处理,如文件名中包含空格等特殊字符,需考虑上传文件名的各种情况;
- 表单:按钮、单行文本框、多行文本框、单/多/复选框、单表、多表、翻页的功能是否正常
- 技术层面
- cookie
检查Cookie的时效性是否正确,对于永久cookie,检查是否永久有效;对于临时cookie,检查是否只在当前浏览器及派生的页面中有效,关闭浏览器即失效;
检查是否存入指定域名的cookie信息;
如果在 cookies 中保存了注册信息,请确认该 cookie能够正常工作而且已对这些信息已经加密。对cookie的安全机制进行测试。如果使用 cookie 来统计次数,需要验证次数累计正确。
手工修改cookie信息,检查cookie是否失效;
检查IE不同安全级别情况下cookie信息写入是否正确,对于安全级别设置为高或阻止所有cookie时,系统应能给出明确的提示信息; - session
Session存于服务器端,隐式传递数据,对于使用session传递数据的方式,需要通过显示的数据内容检查数据传递的正确性;
- java script
对于大量使用java Script的程序需考虑多版本IE 的兼容性测试;
页面布局不被javacript语句破坏或者因为javacript页面无法显示;
javascript逻辑很多的情况可能会影响页面性能,要安排性能测试;
浏览器是Web客户端最核心的构件,来自不同厂商的浏览器对Java,、JavaScript、 ActiveX、 plug-ins或不同的HTML规格有不同的支持。例如,ActiveX是Microsoft的产品,是为Internet Explorer而设计的,JavaScript是Netscape的产品,Java是Sun的产品等等。另外,框架和层次结构风格在不同的浏览器中也有不同的显示,甚至根本不显示。不同的浏览器对安全性和Java的设置也不一样; - 浏览器
测试前需要明确那些浏览器产品需要进行测试;
对同一个浏览器产品的多个版本,在测试前确认那些需要进行测试;
不同浏览器在不同windows环境下进行测试,是否需要测试提前确认;
如果产品中嵌入了其他windows产品,需要检验不同版本的使用情况,具体需求需要提前确认;
- cookie