软件测试基础知识---2018年4月28日

软件测试基础知识:
探索性测试理论(jams)、测试驱动开发
软件测试:使用人工或者自动的手段来运行或者测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间差异。
五大元素:质量、人员、资源、流程、技术
软件测试分类:
一、单元测试:
概念:对软件中最小的可以测试的单元进行检查和验证
原则:1、尽可能的保证各个测试用例是相互独立的
2、一般是由代码开发人员来实施,检验代码是否符合要求
有益处:
1、尽早的发现缺陷
2、有利于重构
3、简化集成
4、文档
5、用于设计
限制处
1、不可能覆盖到所有的执行路径,所以不可能保证捕捉到所有路径的错误
2、每一行代码,都需要3-5行测试代码才能完成单元测试,所以存在投入和产出的一个平衡。
单元测试框架:xunit、junit、nunit、PHPunit、cppunit
二、集成测试:
概念: 集成测试是在单元测试的基础的基础上,组装成新的模块
实施方案:big bang、自顶向下、自低向上、核心系统集成、高频集成(不断的进行测试---敏捷测试)
单元测试与集成测试的区别:测试的对象不同、测试的依据不同、测试的方法不同
三、系统测试
概念:将进行过集成测试的软件作为计算机的一部分与其他模块结合起来进行测试,保证系统的正常运行
关注点:1、关注系统本身的使用
2、关注系统与其他系统间的联通
3、关注系统在不同压力下的变现不同
4、关注系统在真实环境下的表现
系统测试与集成测试的区别:
1、测试的对象:
集成测试:是通过单元测试的各个模块所集成起来的构件
系统测试:除了软件之外,还包括计算机的硬件以及相关的外围设备、数据采集和传输结构、支持软件、操作人员等整个系统
2、 测试的时间:
集成测试介于单元测试和系统测试之间测试
系统测试在集成测试之后
3、测试的角度
集成测试:偏于技术角度验证
系统测试:偏于业务角度的验证
四、验收测试
交付测试,确定系统是和否满足用户的需求
细分:用户验收测试、进行验收测试、合同和规范验收测试
alpha测试:
beta测试:
验收驱动开发

按照测试手段分类:
黑盒测试、白盒测试、静态测试、动态测试、手工测试、自动化测试
黑盒测试优缺点:
优点:1、容易实施。不需要关注内部的实施
2、更贴近用户的使用角度
缺点:1、测试覆盖较低,不到40%
2、黑盒的自动化测试,维护成本较高
关注点:1、是否有不正确或者遗漏的功能
2、在接口上,输入是否正确的接受?能否输出正确的结果?
3、是否有数据结构错误,或外部访问的错误
4、性能测试是否满足要求
主要的设计方法:
等价类划分法、边界值分析法、错误猜测法、因果图法、正交试验法、状态迁移法、流程分析法等
等价类:(126邮箱测试)
为什么:测试数据是无限的,测试资源是有限的,我们不可能做到穷举所所有的符合和不符合规则的数据,所以要找有代表性的数据进行测试。
怎么用:1、至少找一个符合组成规则的数据作为代表有效数据——有效类、尽可能多的包含符合规则的
2、至少找一个不符合规则的数据作为代表无效数据——无效类,一次只能包含一种错误的情况
优点:简单高效
快速评估工作量(测试用例条数)
1、一个功能有m个输入,至少设计m+1条测试用例,(实际工作中,用例数是最少用例数的4-6倍):有效用例1条,无效用例m条
2、n个功能,每个功能有m个输入,至少要设计n*(m+1)
缺点:数据的选取是随机的,不一定能够发现缺陷,只考虑了对输入有效与无效的覆盖,并没有考虑输入之间的关系
适用范围:只要存在输入就可以选择等价类

边界值:(126邮箱测试)
定义:选取边界上的值进行测试的方法
作用:边界上的数据,更容易发现缺陷
用法:1、上点:边界上的点 。用户名[6-18],6,18
2、内点:取值范围内的任意一点,8位,10位,12位
3、离点:离边界最近的点【闭外开内】
优点:更容易发现边界上的错误
缺点:有取值范围的时候
适用范围:输入有取值边界的时候,考虑加上离点和上点
@等价类边界值不仅能够进行测试用例设计,还能快速评估测试用例的数量,通过追加离点和上点,提高用例发现的概率

判定表法(电影票):
概念:条件桩:需要判断的条件 动作桩:输出的结果
n个条件桩生成2的n次方个组合
优点:等价类边界值只考虑了输入的有效与无效,并没有考虑输入之间的关系,如果输入之间存在一定的逻辑关系——判定表,可以分析逻辑关系的全组合,逻辑条件只有两种组合,成立和不成立的关系(满足与不满足)
缺点:当条件桩过多的时候,用例数会成倍增长,工作量非常大。
适用范围:多个复选框,适合用判定表法对复选框进行测试,功能中存在逻辑条件,不同的条件组合在一起的时候,会产生不同的结果,
根据需求确定条件桩之后,可以快速评估全组合的测试用例数量,有效进行工作时间的调整,对于逻辑条件较多较复杂的需求,为了防止测试的遗漏,使用判定表法保证所有的逻辑条件的全部组合都被测试到

正交试验法:(ppt打印测试)
设计步骤:因子状态过多,需要合并
因子状态过少,用已有状态进行补,若有合并的状态,将合并的状态进行拆分
优点:能够覆盖输入参数之间的两两组合,有效的减少重复的两两组合,有时如果全部组合测试,用例数会特别多,工作量大,如果不组合又有漏侧的风险,这时,我们可以采用正交试验的方法,可以有效减少重复的用例,提高测试效率。
缺点\适用范围:
输入参数之间必须是完全独立的,并且有固定的有效输入,不能有逻辑关系。对于输入之间没有逻辑关系的多种组合,通过正交试验法,使用最少的用例达到两两组合的测试覆盖。把全组合分成两两组合,大幅度降低用例的数量,节约了测试成本、提高了测试效率。
当因子和状态过多的时候,或无法使用正交表进行测试用例设计时,可以采用测试工具allpairs进行用例设计,提高工作效率,减少用例研发时间:
1、建议把工具放在c盘的根目录下
2、新建excel表格,设计因子状态表
3、在allpairs工具下,新建一个txt文件,把因子状态表复制进来(不要做任何操作),点击保存
>cd \
>cd allpairs
>allpairs.exe 123.txt->123.out.txt 回车
区别:
判定表法是对逻辑值的全组合,正交试验是对常量的两两组合,针对需求的不同特点采用不同的方法进行测试用例设计

流程分析法:(ATM机取款测试)
步骤:从需求中找到所有的判断条件,(如果、假如、当、弱)
优点:可以覆盖业务过程中输入、处理、输出的全部流程,包括正常的流程和异常的流程
缺点:覆盖的测试数据不全,没有考虑输入的一些无效数据,可能会造成测试遗漏,用等价类边界值的方法追加用例
需求提前熟悉业务,且最终还要结合其他的用例设计方法补充用例
流程分析法可以实现每个界面每个步骤的全面覆盖,通过绘制流程图,可以快速的编写测试用例,对多个界面,多步操作且执行顺序要求的,可以使用流程分析法,保障对输入输出的全面覆盖。

输出域覆盖法:
定义:针对界面上的回显数据(初始化数据)倒推输入(或数据来源),来校验回显数据是否正确,由输出结果倒推输入,进行测试的方法。
适用范围:
1、界面上有回显数据,需要用输出域覆盖法,进行数据的验证,
2、界面上无输入项,点击某个操作的时候,界面上会生成一些数据,
通过对后台文件和数据库的分析,挖掘潜在的输出可能性,确保非界面的输出也被全面测试

状态迁移图:(MP3进程测试)
需求特点:多种操作的可能性,一个操作之后对应多个条件的操作,从一种状态可以转移到多个规定的状态。
步骤:1、根据需求提取状态名称
2、根据需求画出业务矩阵n个状态就要画N*N个业务矩阵
3、将业务矩阵转化为业务状态树,
广度优先:1、找一个状态作为起始节点
2、从左到右
3、每个节点只画一次所有可达的节点
4、直到所有的节点都画完,结束叶子节点
5、一条路径对应一条测试用例
深度优先:1、找一个状态作为起始节点
2、先画第一个节点左侧的叶子节点
3、把所有最左侧的叶子节点全部画完
4、从最后一层逐层递推
5、直到所有的节点全部画完,每个节点只画一个可达节点
4、从根节点到叶子节点,一条路径对应一条用例
优缺点:功能的有效组合全部覆盖、无法覆盖无效的组合
适用范围:多个状态或输入的取值、状态的变化或取值有规定的顺序、条件,一个状态可以有若干个可达的状态

因果图:(3小时等形成收费)
步骤:根据SRS列出所有的原因、所有的结果、给原因和结果编号、画出因果图、按照因果列出判定表、将不存在的判定表删除、剩余部分为测试用例的组合。

输入域覆盖法:
特殊值(主要和输入的特点有关)
长时间输入:对没有限制输入长度的输入进行长时间输入以查看是否存在输入数据内存在是否越界导致系统故障的情况。

异常分析法:
主要针对系统罗列可能的故障\异常:
断电、断网、破环硬件、数据损坏、内存不足、终止进程、强制关机、程序进行中点击取消、上传\下载文件过程中点击取消,针对每种可能的故障设计测试用例。

错误猜测法:
设计思想:根据以往的经验的对系统内部知识的了解,列出系统中各种可能有错误或容易发生错误的特殊情况,再根据这些情况设计测试用例。
注意:错误猜测法只能作为测试用例设计的补充而不能单独用来设计测试用例。

白盒测试的优缺点:
优点:1、迫使测试人员思考软件的实现、理解原理
2、可以检测代码中的每一条分支和路径
3、揭示隐藏在代码中的错误
缺点:1、昂贵
2、无法检测代码中遗漏的路径和敏感错误
3、不能直接验证需求的正确性

主要设计方法:
代码检测法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法

灰盒测试:介于黑盒、白盒测试之间的,关注输出对于输入的正确性,同时也关注内部表现

静态测试:不需要执行被测试的程序,而是通过评审软件文档或者代码,检查程序是否符合编程的标准、减少出错的概率
方式:互审、走查,会议

动态测试:通过运行被测试的程序,检查运行结果与预期结果的差异,并分析运行的效率,并分析运行效率、正确性和健壮性等、

手工测试:由专门的测试人员从用户的角度来验证是否满足设计的要求的行为。更适用于针对深度的测试和强调主观判断的测试
众包测试、探索性测试

自动化测试:使用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动的检查
单元测试、接口测试、性能测试

手工测试与自动化测试的区别:
手工测试:
优点: 易发现缺陷、容易实施、创造性、灵活性
缺点:覆盖量化难、重复测试效率低、不一致性、可靠性低、人力资源的依赖
自动化测试:
优点:高效率、速度快、高复用性、覆盖率容易度量、准确、可靠、不知疲劳、
缺点:机械、发现缺陷率低、一次性投入较大

按照测试的模式分类:
瀑布模型、敏捷测试、基于脚本的测试、基于风险的测试、探索性测试等

传统的瀑布模型:
项目的计划
需求分析
软件设计
程序的开发
软件测试
集成维护
优缺点:
优点:1、强调需求、设计的作用
2、前一阶段完成之后,只需要关注后续的阶段
3、为项目提供安阶段划分的检查点、里程碑清算
4、文档规范
缺点 :1、难以适应需求的频繁变化
2、项目周期的后端才能看到成果
3、强制的里程碑,完成时间点
4、文档工作量大

V模型
软件测试基础知识---2018年4月28日




W模型:
软件测试基础知识---2018年4月28日

X模型:
软件测试基础知识---2018年4月28日
H模型:
软件测试基础知识---2018年4月28日
敏捷测试:
特点:1、强调从客户角度进行测试
2、重点关注迭代测试的新功能,不在强调测试阶段
3、尽早的测试,不间断测试、具备条件即测试
4、强调持续反馈
5、预防缺陷重于发现缺陷
敏捷测试与传统测试的区别:
传统测试:
1、测试是质量的最后保护者
2、严格的变更管理
3、预先的计划和细节的准备
4、重量级文档
5、各阶段严格的入口和出口标准
6、更多在回归测试时进行重量级的自动化测试
7、严格依赖流程执行
8、测试团队和开发团队是相互独立的
敏捷测试:
1、开发和测试人员是紧密合作,大家都有责任对软件负责
2、变更是可接受的,拥抱变更
3、计划随着进展时常调整
4、只需要绝对必要的文档
5、各迭代之间已经没有明显的入口和出口标准
6、所有阶段都需要自动测试,每个人都需要做,是项目集成的一部分
7、流程不再需要严格执行
8、团队合作是无缝隙合作

基于脚本的测试---SBT
script-based testing(测试计划)
scripted testing(ST)

探索式测试(ET)
完全抛开测试脚本的测试
是一种测试风格、思维而不是一种测试技术
优点:1、能够激发测试人员的创造性和工作乐趣
2、增加了发现新的或较深入bug的可能性
3、在较时间内找到更多bug以及对SUT作出一个快速的评估
4、更加有效的实施自动化
5、更加适用于敏捷项目
6、减少在简单、繁复上用例的无畏编写时间
缺点:
1、测试管理上有局限性、较难协调和控制
2、对于bug重复利用和重现上作用有限
3、对测试人员的测试技能和业务知识深度依赖较大
4、只有在SUT已经完全可用的前提下才更有作用
5、ET的生产率很难定义
6、ET本身较难进行自动化

ST与ET区别:
ST:
1、系统性强
2、容易管理控制
3、设计在先、执行在后
4、主要是验证自己的思路
5、可预见性
ET:
1、*灵活
2、和ST是互补的
3、执行和设计并行
4、不断和系统交互,带着问题测试
5、学习的过程

局部探索式测试:
输入、状态、代码路径、用户数据、执行环境
全局探索式测试:
漫游测试法:
执行探索式测试:


按测试类型来分类:
功能测试、性能测试、部署测试、文档测试、安全测试、兼容性测试、易用性测试、本地化测试、无障碍测试、可靠性测试
功能测试:
概念:测试产品的可操作行为来看产品是否满足需求
主要针对:功能错误或遗漏、界面问题、性能问题、数据以及访问错误、初始化以及终止错误
测试工具:
商用:QTP(web端)(winrunner主要是桌面的自动化)、silktest、rational
开源:selenium、waitr、sikuli

性能测试:
概念:负载测试、压力测试、稳定性测试
性能指标:并发用户数、每秒事物数tps、系统响应时间、设备性能
工具:loadrunner、silkperformer、jmeter、webload、apache bench、loadui
静态性能评估:开发web应用的时候,基于一系列web应用页面性能优化的最佳实践对web应用的页面进行静态分析,并给出评估结果的性能分析方法。
(yslow、pagespeed都是浏览器的插件)

应用性能管理(APM):提供对系统的实时监控实现性能管理、故障管理的解决方案。

安全测试:对软件产品进行测试以确保符合产品安全需求和质量标准。
防 —————— 面
OWASP、Appscan、webinspect、Nessus、Nmap、Metasploit、Fortify、W3AF
渗透测试:通过模拟对软件的恶意攻击行为来评估系统安全性的一种测试
攻 —————— 点


兼容性测试:软件本身的兼容性、不同平台下的兼容性、软件对运行设备的兼容性、软件互操作性
浏览器的内核
浏览器兼容性测试工具:browsershots、brpwser sandbox、goole浏览器兼容测试插件

文档测试:用户手册、使用说明
(完整性、正确性、一致性、易理解性、易浏览性)

可靠性测试:软件可靠性测试、硬件可靠性

易用性测试:用户体验的测试

本地化测试:针对软件本地版本实施的针对性测试

部署测试:安装测试、

无障碍测试:可访问性测试

回归测试、冒烟测试、monkey测试、AB测试(多个方案并行、每次测试仅改动一个变量)




































软件测试基础知识:
探索性测试理论(jams)、测试驱动开发
软件测试:使用人工或者自动的手段来运行或者测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间差异。
五大元素:质量、人员、资源、流程、技术
软件测试分类:
一、单元测试:
概念:对软件中最小的可以测试的单元进行检查和验证
原则:1、尽可能的保证各个测试用例是相互独立的
2、一般是由代码开发人员来实施,检验代码是否符合要求
有益处:
1、尽早的发现缺陷
2、有利于重构
3、简化集成
4、文档
5、用于设计
限制处
1、不可能覆盖到所有的执行路径,所以不可能保证捕捉到所有路径的错误
2、每一行代码,都需要3-5行测试代码才能完成单元测试,所以存在投入和产出的一个平衡。
单元测试框架:xunit、junit、nunit、PHPunit、cppunit
二、集成测试:
概念: 集成测试是在单元测试的基础的基础上,组装成新的模块
实施方案:big bang、自顶向下、自低向上、核心系统集成、高频集成(不断的进行测试---敏捷测试)
单元测试与集成测试的区别:测试的对象不同、测试的依据不同、测试的方法不同
三、系统测试
概念:将进行过集成测试的软件作为计算机的一部分与其他模块结合起来进行测试,保证系统的正常运行
关注点:1、关注系统本身的使用
2、关注系统与其他系统间的联通
3、关注系统在不同压力下的变现不同
4、关注系统在真实环境下的表现
系统测试与集成测试的区别:
1、测试的对象:
集成测试:是通过单元测试的各个模块所集成起来的构件
系统测试:除了软件之外,还包括计算机的硬件以及相关的外围设备、数据采集和传输结构、支持软件、操作人员等整个系统
2、 测试的时间:
集成测试介于单元测试和系统测试之间测试
系统测试在集成测试之后
3、测试的角度
集成测试:偏于技术角度验证
系统测试:偏于业务角度的验证
四、验收测试
交付测试,确定系统是和否满足用户的需求
细分:用户验收测试、进行验收测试、合同和规范验收测试
alpha测试:
beta测试:
验收驱动开发

按照测试手段分类:
黑盒测试、白盒测试、静态测试、动态测试、手工测试、自动化测试
黑盒测试优缺点:
优点:1、容易实施。不需要关注内部的实施
2、更贴近用户的使用角度
缺点:1、测试覆盖较低,不到40%
2、黑盒的自动化测试,维护成本较高
关注点:1、是否有不正确或者遗漏的功能
2、在接口上,输入是否正确的接受?能否输出正确的结果?
3、是否有数据结构错误,或外部访问的错误
4、性能测试是否满足要求
主要的设计方法:
等价类划分法、边界值分析法、错误猜测法、因果图法、正交试验法、状态迁移法、流程分析法等
等价类:(126邮箱测试)
为什么:测试数据是无限的,测试资源是有限的,我们不可能做到穷举所所有的符合和不符合规则的数据,所以要找有代表性的数据进行测试。
怎么用:1、至少找一个符合组成规则的数据作为代表有效数据——有效类、尽可能多的包含符合规则的
2、至少找一个不符合规则的数据作为代表无效数据——无效类,一次只能包含一种错误的情况
优点:简单高效
快速评估工作量(测试用例条数)
1、一个功能有m个输入,至少设计m+1条测试用例,(实际工作中,用例数是最少用例数的4-6倍):有效用例1条,无效用例m条
2、n个功能,每个功能有m个输入,至少要设计n*(m+1)
缺点:数据的选取是随机的,不一定能够发现缺陷,只考虑了对输入有效与无效的覆盖,并没有考虑输入之间的关系
适用范围:只要存在输入就可以选择等价类

边界值:(126邮箱测试)
定义:选取边界上的值进行测试的方法
作用:边界上的数据,更容易发现缺陷
用法:1、上点:边界上的点 。用户名[6-18],6,18
2、内点:取值范围内的任意一点,8位,10位,12位
3、离点:离边界最近的点【闭外开内】
优点:更容易发现边界上的错误
缺点:有取值范围的时候
适用范围:输入有取值边界的时候,考虑加上离点和上点
@等价类边界值不仅能够进行测试用例设计,还能快速评估测试用例的数量,通过追加离点和上点,提高用例发现的概率

判定表法(电影票):
概念:条件桩:需要判断的条件 动作桩:输出的结果
n个条件桩生成2的n次方个组合
优点:等价类边界值只考虑了输入的有效与无效,并没有考虑输入之间的关系,如果输入之间存在一定的逻辑关系——判定表,可以分析逻辑关系的全组合,逻辑条件只有两种组合,成立和不成立的关系(满足与不满足)
缺点:当条件桩过多的时候,用例数会成倍增长,工作量非常大。
适用范围:多个复选框,适合用判定表法对复选框进行测试,功能中存在逻辑条件,不同的条件组合在一起的时候,会产生不同的结果,
根据需求确定条件桩之后,可以快速评估全组合的测试用例数量,有效进行工作时间的调整,对于逻辑条件较多较复杂的需求,为了防止测试的遗漏,使用判定表法保证所有的逻辑条件的全部组合都被测试到

正交试验法:(ppt打印测试)
设计步骤:因子状态过多,需要合并
因子状态过少,用已有状态进行补,若有合并的状态,将合并的状态进行拆分
优点:能够覆盖输入参数之间的两两组合,有效的减少重复的两两组合,有时如果全部组合测试,用例数会特别多,工作量大,如果不组合又有漏侧的风险,这时,我们可以采用正交试验的方法,可以有效减少重复的用例,提高测试效率。
缺点\适用范围:
输入参数之间必须是完全独立的,并且有固定的有效输入,不能有逻辑关系。对于输入之间没有逻辑关系的多种组合,通过正交试验法,使用最少的用例达到两两组合的测试覆盖。把全组合分成两两组合,大幅度降低用例的数量,节约了测试成本、提高了测试效率。
当因子和状态过多的时候,或无法使用正交表进行测试用例设计时,可以采用测试工具allpairs进行用例设计,提高工作效率,减少用例研发时间:
1、建议把工具放在c盘的根目录下
2、新建excel表格,设计因子状态表
3、在allpairs工具下,新建一个txt文件,把因子状态表复制进来(不要做任何操作),点击保存
>cd \
>cd allpairs
>allpairs.exe 123.txt->123.out.txt 回车
区别:
判定表法是对逻辑值的全组合,正交试验是对常量的两两组合,针对需求的不同特点采用不同的方法进行测试用例设计

流程分析法:(ATM机取款测试)
步骤:从需求中找到所有的判断条件,(如果、假如、当、弱)
优点:可以覆盖业务过程中输入、处理、输出的全部流程,包括正常的流程和异常的流程
缺点:覆盖的测试数据不全,没有考虑输入的一些无效数据,可能会造成测试遗漏,用等价类边界值的方法追加用例
需求提前熟悉业务,且最终还要结合其他的用例设计方法补充用例
流程分析法可以实现每个界面每个步骤的全面覆盖,通过绘制流程图,可以快速的编写测试用例,对多个界面,多步操作且执行顺序要求的,可以使用流程分析法,保障对输入输出的全面覆盖。

输出域覆盖法:
定义:针对界面上的回显数据(初始化数据)倒推输入(或数据来源),来校验回显数据是否正确,由输出结果倒推输入,进行测试的方法。
适用范围:
1、界面上有回显数据,需要用输出域覆盖法,进行数据的验证,
2、界面上无输入项,点击某个操作的时候,界面上会生成一些数据,
通过对后台文件和数据库的分析,挖掘潜在的输出可能性,确保非界面的输出也被全面测试

状态迁移图:(MP3进程测试)
需求特点:多种操作的可能性,一个操作之后对应多个条件的操作,从一种状态可以转移到多个规定的状态。
步骤:1、根据需求提取状态名称
2、根据需求画出业务矩阵n个状态就要画N*N个业务矩阵
3、将业务矩阵转化为业务状态树,
广度优先:1、找一个状态作为起始节点
2、从左到右
3、每个节点只画一次所有可达的节点
4、直到所有的节点都画完,结束叶子节点
5、一条路径对应一条测试用例
深度优先:1、找一个状态作为起始节点
2、先画第一个节点左侧的叶子节点
3、把所有最左侧的叶子节点全部画完
4、从最后一层逐层递推
5、直到所有的节点全部画完,每个节点只画一个可达节点
4、从根节点到叶子节点,一条路径对应一条用例
优缺点:功能的有效组合全部覆盖、无法覆盖无效的组合
适用范围:多个状态或输入的取值、状态的变化或取值有规定的顺序、条件,一个状态可以有若干个可达的状态

因果图:(3小时等形成收费)
步骤:根据SRS列出所有的原因、所有的结果、给原因和结果编号、画出因果图、按照因果列出判定表、将不存在的判定表删除、剩余部分为测试用例的组合。

输入域覆盖法:
特殊值(主要和输入的特点有关)
长时间输入:对没有限制输入长度的输入进行长时间输入以查看是否存在输入数据内存在是否越界导致系统故障的情况。

异常分析法:
主要针对系统罗列可能的故障\异常:
断电、断网、破环硬件、数据损坏、内存不足、终止进程、强制关机、程序进行中点击取消、上传\下载文件过程中点击取消,针对每种可能的故障设计测试用例。

错误猜测法:
设计思想:根据以往的经验的对系统内部知识的了解,列出系统中各种可能有错误或容易发生错误的特殊情况,再根据这些情况设计测试用例。
注意:错误猜测法只能作为测试用例设计的补充而不能单独用来设计测试用例。

白盒测试的优缺点:
优点:1、迫使测试人员思考软件的实现、理解原理
2、可以检测代码中的每一条分支和路径
3、揭示隐藏在代码中的错误
缺点:1、昂贵
2、无法检测代码中遗漏的路径和敏感错误
3、不能直接验证需求的正确性

主要设计方法:
代码检测法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法

灰盒测试:介于黑盒、白盒测试之间的,关注输出对于输入的正确性,同时也关注内部表现

静态测试:不需要执行被测试的程序,而是通过评审软件文档或者代码,检查程序是否符合编程的标准、减少出错的概率
方式:互审、走查,会议

动态测试:通过运行被测试的程序,检查运行结果与预期结果的差异,并分析运行的效率,并分析运行效率、正确性和健壮性等、

手工测试:由专门的测试人员从用户的角度来验证是否满足设计的要求的行为。更适用于针对深度的测试和强调主观判断的测试
众包测试、探索性测试

自动化测试:使用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动的检查
单元测试、接口测试、性能测试

手工测试与自动化测试的区别:
手工测试:
优点: 易发现缺陷、容易实施、创造性、灵活性
缺点:覆盖量化难、重复测试效率低、不一致性、可靠性低、人力资源的依赖
自动化测试:
优点:高效率、速度快、高复用性、覆盖率容易度量、准确、可靠、不知疲劳、
缺点:机械、发现缺陷率低、一次性投入较大

按照测试的模式分类:
瀑布模型、敏捷测试、基于脚本的测试、基于风险的测试、探索性测试等

传统的瀑布模型:
项目的计划
需求分析
软件设计
程序的开发
软件测试
集成维护
优缺点:
优点:1、强调需求、设计的作用
2、前一阶段完成之后,只需要关注后续的阶段
3、为项目提供安阶段划分的检查点、里程碑清算
4、文档规范
缺点 :1、难以适应需求的频繁变化
2、项目周期的后端才能看到成果
3、强制的里程碑,完成时间点
4、文档工作量大

V模型
软件测试基础知识---2018年4月28日




W模型:
软件测试基础知识---2018年4月28日

X模型:
软件测试基础知识---2018年4月28日
H模型:
软件测试基础知识---2018年4月28日
敏捷测试:
特点:1、强调从客户角度进行测试
2、重点关注迭代测试的新功能,不在强调测试阶段
3、尽早的测试,不间断测试、具备条件即测试
4、强调持续反馈
5、预防缺陷重于发现缺陷
敏捷测试与传统测试的区别:
传统测试:
1、测试是质量的最后保护者
2、严格的变更管理
3、预先的计划和细节的准备
4、重量级文档
5、各阶段严格的入口和出口标准
6、更多在回归测试时进行重量级的自动化测试
7、严格依赖流程执行
8、测试团队和开发团队是相互独立的
敏捷测试:
1、开发和测试人员是紧密合作,大家都有责任对软件负责
2、变更是可接受的,拥抱变更
3、计划随着进展时常调整
4、只需要绝对必要的文档
5、各迭代之间已经没有明显的入口和出口标准
6、所有阶段都需要自动测试,每个人都需要做,是项目集成的一部分
7、流程不再需要严格执行
8、团队合作是无缝隙合作

基于脚本的测试---SBT
script-based testing(测试计划)
scripted testing(ST)

探索式测试(ET)
完全抛开测试脚本的测试
是一种测试风格、思维而不是一种测试技术
优点:1、能够激发测试人员的创造性和工作乐趣
2、增加了发现新的或较深入bug的可能性
3、在较时间内找到更多bug以及对SUT作出一个快速的评估
4、更加有效的实施自动化
5、更加适用于敏捷项目
6、减少在简单、繁复上用例的无畏编写时间
缺点:
1、测试管理上有局限性、较难协调和控制
2、对于bug重复利用和重现上作用有限
3、对测试人员的测试技能和业务知识深度依赖较大
4、只有在SUT已经完全可用的前提下才更有作用
5、ET的生产率很难定义
6、ET本身较难进行自动化

ST与ET区别:
ST:
1、系统性强
2、容易管理控制
3、设计在先、执行在后
4、主要是验证自己的思路
5、可预见性
ET:
1、*灵活
2、和ST是互补的
3、执行和设计并行
4、不断和系统交互,带着问题测试
5、学习的过程

局部探索式测试:
输入、状态、代码路径、用户数据、执行环境
全局探索式测试:
漫游测试法:
执行探索式测试:


按测试类型来分类:
功能测试、性能测试、部署测试、文档测试、安全测试、兼容性测试、易用性测试、本地化测试、无障碍测试、可靠性测试
功能测试:
概念:测试产品的可操作行为来看产品是否满足需求
主要针对:功能错误或遗漏、界面问题、性能问题、数据以及访问错误、初始化以及终止错误
测试工具:
商用:QTP(web端)(winrunner主要是桌面的自动化)、silktest、rational
开源:selenium、waitr、sikuli

性能测试:
概念:负载测试、压力测试、稳定性测试
性能指标:并发用户数、每秒事物数tps、系统响应时间、设备性能
工具:loadrunner、silkperformer、jmeter、webload、apache bench、loadui
静态性能评估:开发web应用的时候,基于一系列web应用页面性能优化的最佳实践对web应用的页面进行静态分析,并给出评估结果的性能分析方法。
(yslow、pagespeed都是浏览器的插件)

应用性能管理(APM):提供对系统的实时监控实现性能管理、故障管理的解决方案。

安全测试:对软件产品进行测试以确保符合产品安全需求和质量标准。
防 —————— 面
OWASP、Appscan、webinspect、Nessus、Nmap、Metasploit、Fortify、W3AF
渗透测试:通过模拟对软件的恶意攻击行为来评估系统安全性的一种测试
攻 —————— 点


兼容性测试:软件本身的兼容性、不同平台下的兼容性、软件对运行设备的兼容性、软件互操作性
浏览器的内核
浏览器兼容性测试工具:browsershots、brpwser sandbox、goole浏览器兼容测试插件

文档测试:用户手册、使用说明
(完整性、正确性、一致性、易理解性、易浏览性)

可靠性测试:软件可靠性测试、硬件可靠性

易用性测试:用户体验的测试

本地化测试:针对软件本地版本实施的针对性测试

部署测试:安装测试、

无障碍测试:可访问性测试

回归测试、冒烟测试、monkey测试、AB测试(多个方案并行、每次测试仅改动一个变量)