1.软件测试的定义:
2.软件测试的对象包括:软件研发周期的方方面面
3.软件测试的五大要素和两个目标
4.软件测试应该遵循的原则:
4.1测试能显示缺陷的存在,但不能证明系统中不存在缺陷
4.2测试穷尽测试是不可能的,应该设定及时的终止条件
4.3测试应该尽早的进行
4.4缺陷具备群集特性
4.5测试的杀虫剂悖论(同一个模块,如果重复的使用同一个测试用例来测试的话,就可能发现不了新的问题,所以测试应该不定时的评审和修改,并且增加不同的测试方法)
4.6测试的二八原则(把百分之八十的时间用在百分之二十的重要的模块)
4.7测试活动依赖于测试背景(比如金融性的软件的安全性等)
5.软件测试的分类
5.1按阶段来分类
单元测试(对软件中最小的可测试单元进行检查和验证,就是针对代码的测试,如对于C语言来是一个函数,java是一个类,UI是一个小模块)
单元测试的原则:
1.尽可能保证各测试用例是相互独立的
2.一般是有被测代码的开发人员来进行测试,用以检测所开发的功能是否符合自己的设计要求
单元测试的益处:
1.能今早的发现缺陷(TDD:先写单元测试用例,然后再写功能代码)
2.有利于重构
3.简化集成
4.文档(可以很大程度的减少文档的数量)
5.用于设计(有助于我们理清设计的思路)
单元测试的限制:
集成测试
集成测试的定义:
集成测试主要的实施方案:
1.big bang(就是一次全部集成)
2.自顶向下(从主程序开始,然后向下)
3.自底向上(从程序的最底层的模块开始,逐步组装,能很好的锁定软件故障的位置)
4.核心系统集成(先把核心的软件部分挑选出来,进行集成测试,然后逐步组装)
5.高频集成(每隔一段时间就对软件进行集成测试,持续集成)
系统测试(对于测试人员来说是非常重要的)
系统测试的定义:
系统测试的关注点
系统测试与集成测试的区别:
1.测试对象的不同:
2.测试时间:集成测试是介于单元测试和系统测试之间的测试
3.测试内容:
系统测试:是整个系统的功能和性能
集成测试:各个单元模块之间的接口
4.测试角度:
集成测试:偏于技术角度的测试
系统测试:偏于业务角度的测试
验收测试(交互测试)
验收测试的定义:
验收测试的细分:
1.用户验收测试(把产品交互给用户之前,开发者自己做的测试)
2.运行验收测试(从运维的层面来看软件是否能正常的运行)
3.合同和规范验收测试(按照规范和合同来验收)
4.alpha测试(在开发者的环境上执行,由用户来执行)
5.beta测试(完全脱离开发人员的测试,在用户环境上用户来执行)
5.2按照测试手段来分类
黑盒测试(功能测试)
黑盒测试的优点:
1.容易实施,不需要关注内部代码的实现
2.更贴近用户的使用角度
黑盒测试的缺点:
1.测试覆盖率比较低,一般只覆盖到代码的40%
2.针对黑盒测试的自动化测试,复用率低且维护成本高
黑盒测试的关注点:
1.是不是有遗漏或者不正确的功能
2.在接口上,输入是否能正确的接接受,输出是否是正确的结果
3.是否有数据结构错误或者外部信息(例如数据文件)访问错误
4.性能是否满足要求
黑盒测试主要的设计方法:
1.等价类划分法
2.边界值分析法
3.因果图法
4.错误推测法(基于经验和直觉来推测,如考虑特殊字符)
5.正交实验分析法(通过正交性,通过一组数据中帅选一些数据)
6.状态迁移图法
7.流程分析法
白盒测试(结构化测试)
白盒测试的优点:
1.会迫使测试人员去仔细思考软件的实现,理解原理
2.可以检测代码中每条分支和路径
3.可以揭示代码中隐藏的错误
4.对代码的测试比较彻底
白盒测试的缺点:
1.比较昂贵
2.无法检测代码中遗漏的路径和数据敏感性的错误
3.不能直接验证需求的正确性
白盒测试的方法:
1.代码检测法(代码走查,多面检查,会议审查;主要检查代码的一致性)
2.静态结构分析法(通过工具分析系统结构,数据结构)
3.静态质量度量法(根据标准的质量模型来构造质量度量模型)
4.逻辑覆盖法(前面的六种逻辑覆盖)
5.基本测试路径法(主要的白盒测试方法,根据程序控制流图)
灰盒测试
定义:介于黑盒,白盒测试之间关注输出对输入的正确性,同时也关注内部的实现,更多是在系统评价中进行测试
静态测试
定义:
动态测试
动态测试的定义:通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率,正确性与健壮性
手工测试
手工测试的定义:由专门的测试人员从用户的视角来验证软件是否满足设计的要求的行为,更适用针对深度的测试和强调主观判断的测试(充分利用人的主观判断)
自动化测试
自动化测试的定义:利用单独的测试工具软件控制测试的自动化执行以及对预期结果进行自动检查,主要用于单元测试,接口测试,性能测试
自动化测试与手工测试的比较:
5.3按照软件测试模型来分类:
1.瀑布模型(没有体现出测试的地位)
瀑布模型的优缺点:
V模型:(反映了测试与忽视了测试对需求的分析和验证,也没有体现出测试要尽早的执行,只能后期才能发现软件的问题)
W模型:(体现了测试发生在软件的整个过程,能今早的发现软件的问题)
X模型:V模型的改进
H模型:
2.敏捷测试
3.基于脚本的测试
4.基于风险的测试
5.探索式测试
5.4按照测试类型来分类:
1.功能测试
功能测试工具:
性能测试(能满足需求规格所需求的性能要求)
性能指标:
性能测试工具:
页面的静态性能评估:
安全测试:
安全测试的定义:对软件产品进行测试,以确保其符合产品安全需求和质量标准
渗透测试:通过模拟对软件产系统的恶意的攻击行为来评估系统安全性的一种测试(目的就是攻破软件系统)
安全测试与渗透测试比较:
安全测试可以了解的点:OWASP(官网https://www.owasp.org中的两个重要的栏目:Top 10(例举出最新的10个最常见的安全问题) ,Test Guid(引导测试人员如何实施安全测试))
安全测试工具:
兼容性测试:
浏览器的兼容问题,浏览器内核(内核的不同会导致浏览器的兼容差异)
浏览器兼容测试的工具:
文档测试:
文档测试的定义:针对软件产品的交付品,配套的文档类部件的测试,如用户手册,使用说明,用户帮助文档等
文档测试需要关注的点:
完整性,正确性,一致性,易理解性,易浏览性
可靠性测试:软件可靠性,硬件可靠性(环境方面的测试,可靠性测试更多的就是硬件测试)
易用性测试:是指测试用户使用软件时是否感觉方便,是否能保证用户体验的测试类型。(一般就是UI层面的测试)
本地化测试:(不同地区的不同版本的测试)
部署测试:也叫安装测试,主要验证系统部署过程,并确保软件经过安装测试后可以正常使用
无障碍测试: