黑盒测试:
白盒测试:
静态测试:无需执行被测程序,直接看软件文档或者代码(自动化) 常见是白盒测试(代码检测等)
方法为互审 、走查(抽查)、 会议三种形式
动态测试:运行被测程序(黑盒测试)
手工测试:针对深度测试和强调主观判断的测试 (探索性测试)
自动化测试:使用单独测试工具的自动化(单元测试、接口测试、性能测试)
2-2 软件测试手段
按照测试手段分类:黑盒测试、白盒测试;静态测试、动态测试;手工测试、自动化测试
一、黑盒测试
不考虑程序内部结构和特性下,通过相关暴露出的接口,对程序进行测试
只检查程序的功能是否按照需求规格说明的规定正常使用
程序是否能正常的接收输入数据并产生输出数据
一般针对软件界面或可见的功能
从用户的视角,通过不同的数据驱动系统,通过输出来判断
优缺点:
优点:容易实施,不需要关注内部的实现;更贴近用户的使用角度
缺点:测试覆盖率较低,一般只能覆盖到代码量的不到40%
针对黑盒的自动化测试,复用率较低,维护成本较高(关注功能,变化多的也是功能 自动化测试代码维护成本高)
黑盒测试主要测试什么:
1)是否有不正确或遗漏的功能;
2)在接口上,输入是否能正确的接受,能否输出正确的结果;
3)数据结构错误或外部信息(文件数据)访问错误;
4)性能是否满足要求
设计方法:
1)等价类划分法:输入条件等价的归为一类,形成几组代表性的输入
2)边界值分析法:关注边界条件
3)错误推测法:基于经验或直觉来判断程序中可能出现错误,针对性的设计测试用例(文件超大或文件不存在;界面输入时考虑特殊字符)
4)因果图法:对多种输入条件组合的测试方法
5)正交试验分析法:筛选代表性的输入数据
6)状态迁移图法:梳理软件功能点中的状态关系,画出状态变迁图设计测试用例
7)流程分析法:梳理程序的逻辑执行的路径来设计测试用例
二、白盒测试(结构化测试 透明盒测试)
1、根据程序的逻辑结构来设计测试用例,用逻辑的覆盖率来衡量测试的完整性,强调逻辑
2、逻辑的单位:
语句 :语句覆盖指的是用例设计出来保证每一条语句至少执行一次
条件 :保证每一个条件表达式执行一次
条件组合: 覆盖所有不同条件的组合成果
分支 :每个分支执行一次
路径:每一个可能的路径至少执行一次
优点:迫使测试人员去仔细思考软件的实现,理解原理;可以检测代码中的每条分支和路径;揭露隐藏在代码中的错误;对代码的测试比较彻底
缺点:追求高覆盖率导致成本高;无法检测代码中遗漏的路径和数据敏感性(数据处理的有问题)的错误;不能直接验证需求的正确性
测试方法:
代码检测法:多面检查 走查
静态结构分析法:测试工具分析源代码的内部逻辑结构
静态质量度量法
逻辑覆盖法
基本路径测试法
三、灰盒测试
介于黑白盒测试之间的,关注输出对于输入的正确性,同时也关注内部表现
四、静态测试
不运行被测程序,直接看文档或代码,来发现程序的不足
互审 走查 会议
五、动态测试
动态测试是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等
六、手工测试
由专门的测试人员从用户视角来验证软件是否满足设计要求的行为。更适用于针对深度的测试和强调主观判断的测试(探索性测试)
七、自动化测试
使用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查(单元测试 接口测试 性能测试)
八、手动测试与自动化测试区别
1、手工测试的优缺点
易发现缺陷(创造性 主观性)
容易实施(只要环境具备 人员到位)
创造性、灵活性
覆盖量化难(人对测试做到什么程度很难量化、覆盖率能达到多少不好量化)
重复测试效率低
不一致性、可靠性低
人力资源依赖(依赖人能力的高低)
2、自动化测试
高效率、速度快
高复用性
覆盖率容易度量
准确、可靠
不知疲劳
机械、发现缺陷率低
一次性投入大(从测试工具的选型、框架的设计、脚本的编写与维护投入大)
2-软件测试手段
根据测试对象的可见度:黑盒测试、 白盒测试
根据状态:静态测试、动态测试
执行方式:手工测试、自动化测试
黑盒测试:
不考虑程序内部结构和内部特性下,通过相关暴露出的接口,对程序进行测试。
只检查程序的功能是否按照需求规定,正常使用;
程序是否能适当的输入输出数据,并产生正确的输出信息;
一般针对软件外面的界面,可见的功能;
从用户的视角,通过不同数据事件,通过输出结果进行判断;
优点:
1.容易实施,不需要关注内部的实现
2.更贴近用户的使用角度
缺点:
1.测试覆盖率较低,一般只能覆盖到代码量的不到40%
2.针对黑盒的自动化测试,复用率较低,维护成本较高。因:产品活动增/删(更新)
黑盒测试主要测试什么
1.是否有不正确或遗漏的功能?
2.在接口上,输入是否能正确的接受?能否输出正确的结果?
3.是否有数据结构错误或外部信息(例如数据文件)访问错误?
4.性能上是否能够满足要求?
黑盒测试的主要设计方法
等价类划分法:针对程序的输入条件进行分类,输入典型的数据
边界值分析法:特殊的边界数据,测试代码的边界状态
错误推测法:基于经验,直觉,判断错误的地方;特殊字符,文件不存在
因果图法:根据输入输出看做原因和结果,形成因果图。(因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。)
正交试验分析法:选出代表性的数据,作为输入数据
状态迁移图法:软件审批的过程,各种状态迁移关系图来设计
流程分析法:处理程序逻辑执行的路径
白盒测试:逻辑覆盖率
主要的逻辑单位:
语句覆盖:保证每条语句执行一次
分支(判定):保证每条分支至少执行一次
条件:条件表达式,至少计算一次
条件组合:所以不同条件下的组合情况
路径:程序中,每个可能的路径至少执行一次
优点
1.迫使测试人员去仔细思考软件的实现,理解原理。
2.可以检测代码中的每条分支和路径。
3.揭示隐藏在代码中的错误。
4.对代码的测试比较彻底。
缺点
1.昂贵。
2.无法检测代码中遗漏的路径和数据敏感性错误
3.不能直接验证需求的正确性
白盒主要测试方法:
代码检测法:多面 代码审查
静态结构分析法:测试工具,内部结构分析
静态质量度量法:标准的度量模型
逻辑覆盖法:6种逻辑,语句 ,分支,条件,条件组合,路径,判定
基本路径测试法:通过分析复杂度,选出基本可执行路径的集合。程序控制流图,描述程序控制流
灰盒测试
介于黑、白盒测试之间的,关注输出对于输入的正确性,同时也关注内部表现
静态测试
定义:静态测试是指无须执行被测程序,而是通过评审软件文档或代码,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率;
动态测试
定义:动态测试是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等。
手工测试
由专门的测试人员从用户视角来验证软件是否满足设计要求的行为。更适用针对深度的测试和强调主观判断的测试。众包测试,探索式测试
自动化测试
使用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查。
单元测试、接口测试、性能测试等
一·软件测试的分类
软件测试手段
根据测试对象的可见度:
黑盒测试、 白盒测试
根据状态:静态测试、动态测试
执行方式:手工测试、自动化测试
(1)黑盒测试:(系统测试阶段常用)
所谓黑盒测试就是把系统或者软件看成一个不能打开的盒子,在完全不考虑程序内部结构和内部特性下,通过相关暴露出的接口,对程序进行测试。只检查程序的功能是否按照需求规定,正常使用;程序是否能适当的接受输入数据,并产生正确的输出信息;着眼于程序外部结构,不考虑内部逻辑,一般针对软件外面的界面,可见的功能;更多从用户的视角,通过不同数据事件,来驱动我们的系统,通过输出结果进行判断;
优点:
1.容易实施,不需要关注内部的实现
2.更贴近用户的使用角度
缺点:
1.测试覆盖率较低,一般只能覆盖到代码量的不到40%(不可见不了解内部)
2.针对黑盒的自动化测试,复用率较低,维护成本较高。因:产品活动增/删(更新)针对功能,活动经常变
黑盒测试主要测试什么
1.是否有不正确或遗漏的功能?(软件的实现上有没有实现的不正确或者没有实现的功能)
2.在接口上,输入系统是否能正确的接受?系统能否输出正确的结果?(输入到输出系统是否能满足预期的要求)
3.是否有数据结构错误或外部信息(例如数据文件)访问错误?(系统对数据的处理和访问上有没有问题)
4.性能上是否能够满足要求?(黑盒测试重要的一方面)
黑盒测试的主要设计方法
1.等价类划分法:针对程序的输入条件进行分类,输入典型的数据
2.边界值分析法:特殊的边界数据,测试代码的边界状态
3.错误推测法:基于经验,直觉,判断错误的地方;特殊字符,文件不存在
4.因果图法:根据输入输出看做原因和结果,形成因果图。(因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。)
5.正交试验分析法:选出代表性的数据,作为输入数据
6.状态迁移图法:软件审批的过程,各种状态迁移
7.流程分析法:处理程序逻辑执行的路径来设计测试用例
(2)白盒测试:逻辑覆盖率来衡量完整性
测试人员对内部的结构非常了解,逻辑结构透明,白盒测试又称为结构化测试和透明盒测试,针对逻辑结构测试用例
主要的逻辑单位:
语句覆盖:保证程序每条语句执行一次
分支(判定):保证每条分支至少执行一次
条件:条件表达式,至少计算一次
条件组合:覆盖所以不同条件下的组合情况
路径:程序中,每一条可能的路径至少执行一次
优点
1.迫使测试人员去仔细思考软件的实现,理解原理(应为透明,对系统深入了解)
2.可以检测代码中的每条分支和路径
3.揭示隐藏在代码中的错误
4.对代码的测试比较彻底
缺点
1.昂贵。(较高的覆盖率)
2.无法检测代码中遗漏的路径和数据敏感性错误(少写)
3.不能直接验证需求的正确性(根据代码来的)
主要测试方法:
代码检测法:多面 代码审查
静态结构分析法:测试工具,源代码的内部结构分析
静态质量度量法:标准的度量模型如ios质量标准
逻辑覆盖法:6种逻辑,语句 ,分支,条件,条件组合,路径,判定
基本路径测试法:通过分析复杂度,选出基本可执行路径的集合。程序控制流图,描述程序控制流
(3)灰盒测试
介于黑、白盒测试之间的,关注输出对于输入的正确性,同时也关注内部表现(结合白黑盒测试,在系统组建这层来评价应用软件设计符合需求的情况)
(4)静态测试
定义:静态测试是指无须执行被测程序,而是通过评审软件文档或代码,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率;(通过静态的审查代码或者文档来发现程序的不足)
静态测试的方式 (不正式到正式)
1.互审 程序员相互检查对方的代码
2.走查 小组一起来集体来
3.会议
动态测试(黑盒设计的一些方法主要是动态测试的一些方法)
定义:动态测试是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等。
举例(外观车漆又没划伤,轮胎胎压足不足,油量正常不正常属于静态测试,汽车发动听听引擎声音,开车感受乘车舒适度可操控性属于动态测试)
手工测试
由专门的测试人员从用户视角来验证软件是否满足设计要求的行为。更适用针对深度的测试和强调主观判断的测试。(充分利用主观能动性)
众包测试,探索式测试
自动化测试
使用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查。
单元测试、接口测试、性能测试等
软件测试的分类 按照测试手段区分
手工测试和自动化测试的优缺点
手工测试的基本定义
自动化测试的基本定义
灰盒测试的基本定义
关于白盒测试的缺点
关于白盒测试的优点
白盒测试主要依靠内部逻辑测试
黑盒测试的主要设计方法 (黑盒测试大多用于系统测试部分)
黑盒测试的主要测试内容
黑盒测试的相关缺点
黑盒测试的一些优点
黑盒测试主要从用户的角度考虑
黑盒测试的基本定义 不考虑系统的内部逻辑,主要考虑外部的接口,功能测试
软件测试的分类 1测试手段
软件测试的分类
按测试手段分类
黑盒、白盒测试
(1)黑盒测试
不了解内部结构,设计逻辑
优点:
容易实施,不需要关注内部的实现
更贴近用户的使用角度
缺点:
测试覆盖率较低,不到40%。
针对黑盒的自动化测试,复用率较低,维护成本较高
黑盒主要测试什么
是否有不正确或遗漏的功能
在接口上,输入是否能正确的接受?能否输出正确的结果?
是否有数据结构错误或外部信息(例如数据文件)访问错误?
性能满足是否能够满足需求?
主要设计方法
等价类划分法、边界值分析法、错误推测法、因果图法、正交试验分析法、状态迁移图法、流程分析法
(2)白盒测试
针对逻辑结构,逻辑覆盖率来验证测试的完整性
主要的逻辑单位
语句、条件、条件组合、分支、路径、
优点:
迫使测试人员去仔细思考软件的实现,理解原理
可以检测代码中的每条分支和路径
揭示隐藏在代码中的错误
对代码的测试比较彻底
缺点:
昂贵
无法检测代码中遗漏的路径和数据敏感性错误
不能直接验证需求的正确性
主要测试方法
代码检测法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法
灰盒测试
介于黑、白盒测试之间的,关注输出对于输入的正确性,同时也关注内部表现
2.静态、动态测试(验车)
静态测试
互审 走查 会议
动态测试
通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等
3.手工测试、自动化测试
手工测试
由专门的测试人员从用户视角来验证软件是否满足设计要求的行为。更适用针对深度的测试和强调主观的测试。
众包测试、探索式测试
优点:
易发现缺陷
容易实施
创造性、灵活性
缺点:
覆盖量化难
重复测试效率低
不一致性、可靠性低
人力资源依赖
自动化测试
优点:
高效率、速度快
高复用性
覆盖率容易度量
准确、可靠
不知疲劳
缺点:
机械 、发现缺陷率低
一次性投入较大
单元测试、接口测试、性能测试
软件测试手段
按对象可见度:
黑盒测试
系统测试使用较多
主要测试:
是否有不正确或遗漏的功能
在接口上,输入是否能正确的结束。能否输出正确的结果
是否有数据结果错误或外部信息访问错误
性能上是否满足要求
优点:
容易实施、不需要关注内部实现
更接近用户的使用角度
缺点:
测试覆盖率低,一般只能覆盖到代码量的不到40%
针对黑盒的自动化测试,复用率较低,维护成本较高
白盒测试:
优点:
迫使测试人员仔细思考软件的实现,理解原理
可以检测代码中的每条分支和路径
揭示隐藏在代码中的错误
对代码的测试比较彻底
缺点:
昂贵
无法检测代码中遗漏的路径和数据敏感性错误
不能直接验证需求的正确性
按状态:
静态测试
动态测试
按执行方式:
手工测试
自动化测试
黑盒测试 只测试功能 一般是界面、功能
优点1、操作简单,不关注内部功能实现
2、贴近用户使用角度
缺点1、测试覆盖率低,一般只能覆盖40%
2、黑盒的自动化测试,复用率较低,维护成本高(软件迭代更新快)
黑盒测试主要测试内容
1、软件 对需求 功能的实现
2、在接口上,输入输出 是否达到预期
3、是否有数据结构错误/访问错误
4、性能是否满足要求
软件测试分类
黑盒 白盒
静态 动态
手工 自动
按测试手段分类:
黑盒测试、白盒测试(对象可见度)
静态测试、动态测试(状态)
手工测试、自动化测试(执行方式)
黑盒测试:只测试单元功能,测试输入输出,不考虑内部结构,用户需求出发,事件驱动,关注功能
黑盒测试优点:容易实施;更贴近用户视角
缺点:测试覆盖率较低,一般只能覆盖代码量不到40%;针对黑盒的自动化测试复用率较低(黑盒关注功能),维护成本较高
主要关注:是否有不正确、遗漏的功能;能够正确输入输出;是否有数据结构或外部信息访问错误;性能是否满足要求(黑盒测试主要用于系统测试)
主要设计方法:等价类划分法、因果图法、边界值分析法、正交试验分析法、流程分析法、错误推测法、状态迁移图法
白盒测试:又称结构化测试,强调逻辑结构(主要逻辑单位:语句、条件、条件组合、分支、路径)
白盒测试优点:迫使测试人员思考软件实现,理解原理;可检测代码中每条分支和路径;揭示隐藏在代码中的错误;对代码测试比较彻底
缺点:昂贵,工作量大;无法检测代码中遗漏的路径和数据敏感性错误;不能直接验证需求正确性
主要测试方法:代码检测法(代码审查、走查)、静态结构分析法、静态质量度量法(构造质量度量模型)、逻辑覆盖法(语句覆盖、条件覆盖、条件组合覆盖。。。)、基本路径测试法(程序控制流图)
灰盒测试:介于黑盒测试、白盒测试之间,既关注输入输出,也关注内部结构
静态测试:不执行被测程序,通过评审软件文档或代码度量程序静态复杂度,检查软件是否符合编程标准,发现程序不足,减少错误出现(互审、走查、会议)
动态测试:运行被测程序,检查运行结果与预期结果差异,分析运行效率、正确性、健壮性
手工测试:由测试人员从用户视角验证软件是否满足设计要求,适用针对深度的测试和强调主观判断的测试(众包测试、探索化测试)
自动化测试:使用单独测试工具软件控制测试的自动化执行以及对于其预期和结果进行自动检查(单元测试、接口测试、性能测试)
手工测试与自动化测试优缺点:
手工测试:
优点:易发现缺陷,容易实施、创造性、灵活性
缺点:覆盖量化难、重复测试效率低、不一致性、可靠性低、人力资源依赖
自动化测试:
优点:高效率、速度快、高复用性、覆盖率容易度量、准确、可靠、不知疲劳
缺点:机械、发现缺陷率低、一次性投入较大
手工测试 自动化测试
软件测试的分类
按照测试对象的可见度:黑盒测试、 白盒测试
按照状态:静态测试、动态测试
按照执行方式:手工测试、自动化测试
1、黑盒测试(功能测试):不考虑程序内部结构和内部特性下,通过相关暴露出的接口,对程序进行测试
优点:(1)易于实施;(2)贴近用户视角。
缺点:(1)测试覆盖率较低;(2)复用率较低,维护成本较高。
测试重点:(1)是否有不正确或遗漏的功能;(2)针对接口,输入与输出是否正确;(3)是否有数据结构错误或外部信息访问错误;(4)性能是否满足要求。
2、白盒测试(逻辑结构测试)
主要的逻辑单位:
语句:保证每条语句至少执行一次
分支(判定):保证每条分支至少执行一次
条件:条件表达式至少计算一次
条件组合:所有不同条件下的组合情况,至少执行一次
路径:每个可能的路径至少执行一次
优点:(1)迫使测试人员仔细思考软件的实现,理解原理;(2)可以检验代码的每条分支和路径;(3)揭示隐藏在代码中的错误;(4)对代码的测试比较彻底。
缺点:(1)昂贵,较高覆盖率,工作量大;(2)无法检测代码中遗漏的路径和数据敏感性的错误;(3)不能直接验证需求的正确性。
白盒测试的主要测试方法:(1)代码检测法;(2)静态结构分析法;(3)静态质量度量法;(4)逻辑覆盖法;(5)基本路径测试法。
3、灰盒测试:介于黑、白盒测试之间,关注输出对于输入的正确性,同时关注内部表现
4、静态测试:无需执行被测程序,而是评审软件文档或代码,度量程序静态复杂度,检测软件是否符合编程标准(直接看文档或代码)
5、动态测试:运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等
6、手工测试:从用户视角来验证软件是否满足设计要求
7、自动化测试:使用单独的测试工具控制测试的自动化执行
白盒测试的主要测试方法