软件测试相关概念以及原则(二)
敏捷测试:1、强调从客户角度进行测试
2、重点关注迭代测试新功能,不再强调测试阶段
3、尽早测试,不间断测试,具备条件即测试
4、强调持续反馈
5、预防缺陷重于发现缺陷
敏捷测试 VS 传统测试
传统测试:1、测试是质量的最后保护者
2、严格的变更管理
3、预先的计划和细节的准备
4、重量级文档
敏捷测试:1、开发和测试人员是紧密合作,大家都有责任对软件负责
2、变更是可接受的,拥抱变更
3、计划随着进展时常调整
4、只需要绝对必要的文档
基于脚本的测试:
Script-based Testing:先做测试设计再做测试
Script Testing(ST)
Exploratory Testing(ET):探索式测试;比较流行的测试方法。通过探索我们的被测系统,带着问题来使用我们的被测系统,并在探索的过程中发现测试的要点,找出我们被测系统的问题,在测试过程当中测试设计和测试执行原则是并行的,对于测试人员来说更加自由,更加依赖测试人员的责任。
1、完全抛开测试脚本的测试
2、它是一种测试风格,思维,而不是一种测试技术
ST VS ET
ST:1、系统性强
2、容易管理,控制
3、设计在先,执行在后
4、主要是验证自己的思路
5、可预见性
ET:1、自由灵活的
2、和ST是互补的
3、执行和设计(思考)并行
4、不断和系统交互,带着问题测试
5、学习的过程
探索式测试的优点:1、更能激发测试人员的创造性和工作乐趣
2、增加了发现新的或较深入bug的可能性
3、在较短时间内找到更多bug以及对SUT做一个快速的评估
4、有利于更加有效的实施自动化
5、更加适用于敏捷项目
6、减少了在简单,繁复上用例的无谓编写时间
缺点:1、测试管理上有局限性,胶南协调和控制
2、对于bug的重复利用和中时尚作用有限
3、对测试人员的测试技能和业务知识深度依赖较大
4、只有在被测系统已完全可用的前提下才更有作用
5、ET的生产率很难定义,测试的过程和测试完成度很难度量
6、ET本身较难进行自动化,更多的是看测试人员
———
局部探索式测试:
输入:接受输入,产生输出,存储数据,进行运算。从输入顺序,输出内容,输出异常几个角度来考虑我们的测试要点
状态:临时状态和永久状态。运行时有效,阶段有效这种相对临时的状态。数据库保存、文件保存为永久状态。状态的信息它可以协助我们来更加有效的判断我们的测试输入和输出
代码路径:更多指代码覆盖
用户数据:更多的应该采用真实用户数据
执行环境:软件操作系统、跟系统交互的第三方系统、系统的配置数据、运行系统的硬件设备
——–
全局探索式测试:漫游测试法
商业区:软件从启动到关闭这期间用户可能使用到的功能
旅馆区:软件在休息,也就是没有在运行时的一些功能,一般指运行在后台的或者一些定时任务
历史区:软件版本历史遗留代码当中的一些功能或者在以前测试中发现的较多问题的功能
旅游区:比较关注的功能。新手指引、新用户注册
娱乐区:系统功能之外,辅助的特性、功能
破旧区:废弃的功能
执行探索性测试:
know you mession:需要了解测试任务的重点
learning session:详细的学习和探索被测系统,了解系统的业务逻辑,具体功能
coverage session:实施阶段,完成主要功能点的测试验收,覆盖测试
deep session:在上一阶段的基础上来进行深入发散式探索式测试,挖掘深层次问题
close session:总结,整理测试过程中出现的信息,分析测试过程是不是有遗漏
缺陷大扫除:针对信息进行大扫除
基于风险的测试—RBT
定义:一种基于对软件失效的风险评估并以此知道测试计划、设计、执行、结果评价的软件测试类型
哪些是风险?
质量风险:软件功能、应用性、性能、软件功能缺失、数据转换
管理风险:人员技能不足、人力不足、测试环境不具备、被测系统的需求不清晰
优点:1、有限测试高风险,所以版本质量更加有保障
2、对项目识别风险的人要求较高,对功能和数据比较详细,如果准确率达不到要求,很容易产生风险评估率的偏差
按测试类型分类:功能测试,性能测试,兼容性测试,部署测试,易用性测试,文档测试,本地化测试,安全测试,无障碍测试,可靠性测试
———-
功能测试:根据产品特性,操作描述和用户方案,测试一个产品的特性和可操作行为以确定他们满足设计要求。简单来说,就是对提供给用户的软件功能进行验证
针对的问题:功能错误或遗漏、界面问题、性能错误、数据及访问错误、初始化及终止错误
功能测试工具:QTP/winrunner:使用较多
silkTest、Rational、robot
开源:selenium、watir、sikuli
——–
性能测试:验证软件系统的性能,开源满足需求规格给定的指标要求
衍生出:负载测试。在我们测试过程中来逐步增加负载,并且记录下被测系统相应的性能表现,最终确定出我们系统在正常的指标范围下最大的负载
——–
压力测试:测试系统在极限情况下的压力情况,测试在什么样的负载压力下会导致系统的失效,不能够正常运行,测试系统所能承受的最大极限
——–
稳定性测试:稍大于正常业务量的一个负载,对系统进行持续的、长时间的测试
性能指标:并发用户数、每秒事务数、系统响应时间、设备性能
性能测试工具:LoadRunner:使用较多,silkperformer,jmeter,webload
静态性能评估(重点):开发web应用时,基于一系列web应用页面性能优化的最佳实践对web应用的应用进行静态分析,并给出评估结果的性能分析方法
工具:yslow,pagespeed
应用性能管理:APM,提供对系统的实时监控以实现性能管理、故障管理的解决方案
听云:www.tingyun.com
———
安全测试:对软件产品进测试以确保其符合产品需求和质量标准
安全测试工具:Appscan、webinspect、nessus、nmap、metasploit、webscarab、fortify(白盒测试)、W3AF
——-
渗透测试:通过模拟对软件系统的恶意攻击行为来评估系统安全性的一种测试
渗透测试 VS 安全测试
渗透测试:攻击。目的就是攻破我们的软件系统以证明系统存在的问题。——关注“点”
安全测试:防。对整个系统防御的功能进行系统的考虑来验证。——关注“面”
——–
兼容性测试:软件本身的兼容性,不同平台软件对运行设备的兼容性,软件互操作性(比如开发的软件是否与微信、qq等其他第三方软件一起使用),浏览器内核
浏览器兼容性测试工具:Browsershorts、Browser Sandbox、Google浏览器兼容性测试插件
性能知识库网址:www.w3help.org
———
文档测试:针对软件产品的交付品,配套的文档类部件的测试。如用户手册、使用说明、用户帮助文档等
关注要点:完整性、正确性、一致性、易浏览性、易理解性
——–
可靠性测试:软件可靠性、硬件可靠性
——-
易用性测试:指测试用户使用软件时是否感觉方便,是否能保证用户使用体验的测试类型
——-
本地化测试:针对软件的本地化版本实施的针对性测试(比如中文、英文)
主要测试内容:语言、书写习惯、时区、日期格式、货币、当地风俗、法律法规、政治敏感内容
——–
部署测试:也称安装测试,主要验证系统部署过程,并确保软件经过安装测试后可以正常使用
主要测试内容:在不同环境下的部署验证,参照部署文档执行,过程的合理,正确性,基础数据
——-
无障碍测试:可访问性测试,是指软件需要提供便于特殊人群使用的功能,包括视障、听障、老年人、身体残疾用户等
——
回归测试:软件功能修改后,对软件进行重新测试以确认修改没有引入新的错误或导致其他部分产生错误。回归测试的中心在关键模块和重点功能组件
——
冒烟测试:来自于硬件板卡验证术语。软件上则用于确认代码中的更改会按预期运行,切不会破坏整个版本的稳定性
——
A/B测试:多用于互联网行业。通过为页面提供两个版本给用户使用并记录相关用户行为数据,来确定更优化设计的一种方案
A/B测试实施要点:1、多个方案并行
2、每次测试仅改动一个变量
3、按照某种规律进行优胜劣汰
测试工具:visual website optimizer 可视化网站优化器