1)按照测试技术划分
黑盒测试:功能测试,必须
白盒测试:逻辑结构测试,代码的逻辑、算法、结构是否正确,要求必须懂得代码,需要编写测试用例,可选
灰盒测试:介于中间
注意:在单元测试时,白盒应用相对较多,在集成测试时,灰盒测试应用相对较多,在系统、验收测试时一般就不会使用白盒测试和灰盒测试了。
2)按是否需要运行代码划分
静态测试:界面测试,文档测试,代码测试【重点关注代码的规范性,一般检查变量的命名,注释的频率,编程的规范性,不需要写测试用例,一般只需要有代码审查单】
注意:一般经常把白盒测试和静态测试的要素结合在一起,形成静态白盒测试
动态测试:运行程序进行检查,检查实际输出结果和预期结果是否相符
3)按软件特性分类
功能测试
性能测试
1. 等价类划分
常见的软件测试面试题划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.
2. 边界值分析法
边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.
使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.
3. 错误推测法
基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.
错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结。还有, 输入数据和输出数据为0的情况。输入表格为空格或输入表格只有一行. 这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例.
4. 因果图方法
前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等. 考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例. 这就需要利用因果图(逻辑模型). 因果图方法最终生成的就是判定表. 它适合于检查程序输入条件的各种组合情况.
5. 正交表分析法
有时候,可能因为大量的参数的组合而引起测试用例数量上的激增,同时,这些测试用例并没有明显的优先级上的差距,而测试人员又无法完成这么多数量的测试,就可以通过正交表来进行缩减一些用例,从而达到尽量少的用例覆盖尽量大的范围的可能性。
6. 场景分析方法
指根据用户场景来模拟用户的操作步骤,这个比较类似因果图,但是可能执行的深度和可行性更好。
白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果
黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题
详细的描述一个测试活动完整的过程。1. 项目经理通过和客户的交流,完成需求文档,由开发人员和测试人员共同完成需求文档的评审,评审的内容包括:需求描述不清楚的地方和可能有明显冲突或者无法实现的功
《全国计算机等级考试三级教程软件测试》目录 第1章 软件测试的基本概念1.1 软件质量的概念1.1.1 软件质量的定义1.1.2 软件质量的属性1.1.3 软件质量模型1.1.4 软件质量的度量1.1.5 影响软件质量的主要因素1.2 软件测试的概念1.2.1 软件测试的定义与目的1.2.2 软件测试的原则1.3 软件的缺陷与错误1.3.1 软件缺陷的定义和类型1.3.2 软件缺陷的级别1.3.3 软件缺陷产生的原因1.3.4 软件缺陷的构成第1章 软件测试的基本概念1.1 软件质量的概念1.1.1 软件质量的定义1.1.2 软件质量的属性1.1.3 软件质量模型1.1.4 软件质量的度量1.1.5 影响软件质量的主要因素1.2 软件测试的概念1.2.1 软件测试的定义与目的1.2.2 软件测试的原则1.3 软件的缺陷与错误1.3.1 软件缺陷的定义和类型1.3.2 软件缺陷的级别1.3.3 软件缺陷产生的原因1.3.4 软件缺陷的构成1.3.5 修复软件缺陷的代价1.4 软件测试的经济学与心理学1.4.1 软件测试的心理学1.4.2 软件测试的经济学1.5 软件质量保证1.5.1 软件质量保证概要1.5.2 软件质量保证活动的实施1.5.3 软件的验证与确认1.5.4 验证和确认任务分析 本章小结 第2章 软件生存周期中测试的实施2.1 软件开发阶段2.1.1 软件生存周期2.1.2 软件测试的生存周期模型2.1.3 软件测试过程模型2.1.4 测试信息流2.2 需求获取与分析阶段的测试2.2.1 需求评审的实施2.2.2 需求规格说明的评审2.2.3 Wiegers 用例与需求评审表2.2.4 基于原型的测试2.2.5 基于需求的测试覆盖率评估2.3 设计阶段的测试2.3.1 设计的测试因素2.3.2 设计评审的实施2.3.3 设计规格说明的评审2.3.4 设计元素的覆盖原则2.4 编程阶段的测试2.4.1 白盒测试与黑盒测试2.4.2 源代码的控制流覆盖原则2.4.3 源代码的数据流覆盖原则2.4.4 源代码的静态分析与动态测试2.5 运行和维护阶段的测试2.6 回归测试2.6.1 回归测试的概念2.6.2 回归测试的类型2.6.3 回归测试的时机2.6.4 回归测试的实施 本章小结 第3章 代码检查、走查与评审3.1 桌上检查3.1.1 桌上检查的实施3.1.2 桌上检查的检查表3.2 代码检查3.2.1 特定的角色和职责3.2.2 代码检查的实施3.2.3 用于代码检查的检查表3.3 走查3.3.1 特定的角色和职责3.3.2 走查的实施3.3.3 走查中的静态分析技术3.4 同行评审3.4.1 同行评审的角色和职责3.4.2 同行评审的内容3.4.3 评审的方法和技术3.4.4 评审工作 本章小结 第4章 白盒测试4.1 覆盖率的概念4.2 逻辑覆盖4.2.1 语句覆盖与块覆盖4.2.2 判定覆盖(分支覆盖)4.2.3 条件覆盖4.2.4 条件/判定覆盖4.2.5 条件组合覆盖4.2.6 路径覆盖4.2.7 ESTCA覆盖4.2.8 LCSAJ覆盖4.3 路径测试4.3.1 分支结构的路径测试4.3.2 循环结构的路径测试4.3.3 圈复杂度与基本路径测试4.4 数据流测试4.4.1 定义∕使用测试的几个定义4.4.2 定义∕使用测试举例4.4.3 定义∕使用路径测试覆盖指标4.5 基于覆盖的测试用例选择4.5.1 覆盖率的使用4.5.2 使用最少的测试用例来达到覆盖4.6 程序插桩技术4.6.1 程序插桩4.6.2 用于测试覆盖率的程序插桩4.6.3 用于断言检测的程序插桩4.6.4 用于数据流异常检测的程序插桩 本章小结 第5章 黑盒测试5.1 等价类测试5.1.1 等价类的概念5.1.2 等价类测试的原则5.1.3 等价类方法测试用例设计举例5.2 边界值分析5.2.1 边界值分析的概念5.2.2 选择测试用例的原则5.2.3 边界值方法测试用例设计举例5.3 基于判定表的测试5.3.1 判定表的概念5.3.2 基于判定表的测试用例设计举例5.4 基于因果图的测试5.4.1 因果图的适用范围5.4.2 用因果图生成测试用例5.4.3 因果图法测试用例设计举例5.5 基于状态图的测试5.5.1 状态图5.5.2 利用状态转换树生成测试用例5.5.3 利用状态转换表生成测试用例5.6 基于功能图的测试5.6.1 功能图5.6.2 功能图法设计测试用例举例5.7 基于用例和场景的测试5.7.1 基本流和备选流5.7.2 利用用例和场景设计测试用例的实例5.8 基于有向图的测试用例设计5.8.1 使用基于有向图的测试的场合5.8.2 基于事务流建模设计测试用例5.8.3 基于控制流建模设计测试用例5.8.4 基于有向图设计测试用例的过程5.9 基于正交实验设计法的测试5.9.1 提取功能说明,构造因子/ 状态表5.9.2 加权筛选,生成因素分析表5.9.3 利用正交表构造测试数据集5.10 其他黑盒测试用例设计技术 本章小结 第6章 单元测试和集成测试6.1 单元测试的基本概念6.1.1 单元测试的定义6.1.2 单元测试与集成测试、系统测试的区别6.1.3 单元测试环境6.2 单元测试策略6.2.1 自顶向下的单元测试策略6.2.2 自底向上的单元测试策略6.2.3 孤立测试6.2.4 综合测试6.3 单元测试分析6.3.1 模块接口6.3.2 局部数据结构6.3.3 独立路径6.3.4 出错处理6.3.5 边界条件6.4 单元测试的测试用例设计原则6.4.1 单元测试的测试用例设计步骤6.4.2 单元测试中的白盒测试与黑盒测试6.5 集成测试的基本概念6.6 集成测试策略6.6.1 基于分解的集成策略6.6.2 基于功能的集成6.6.3 基于路径的集成6.6.4 基于调用图的集成6.7 集成测试分析6.7.1 体系结构分析6.7.2 模块单元分析6.7.3 接口分析6.7.4 风险分析6.7.5 可测试性分析6.7.6 集成测试策略分析6.7.7 常见的集成测试故障6.8 集成测试的测试用例设计原则6.8.1 集成测试的测试用例设计步骤6.8.2 场景测试 本章小结 第7章 系统测试7.1 系统测试概念7.2 系。
软件测试分类 软件测试是一项复杂的系统工程,从不同的角度考虑可以有不同的划分方法,对测试进行分类是为了更好的明确测试的过程,了解测试究竟要完成哪些工作,尽量做到全面测试。
1,按是否需要执行被测软件的角度 按是否需要执行被测软件的角度,可分为静态测试和动态测试,前者不利用计算机运行待测程序而应用其他手段实现测试目的,如代码审核。(我认为主要是让测试人员对编译器发现不了的潜在错误进行分析,如无效的死循环,多余的变量等),而动态测试则通过运行被测试软件来达到目的。
2、按阶段划分: 1 单元测试 单元测试是对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。它是软件动态测试的最基本的部分,也是最重要的部分之一,其目的是检验软件基本组成单位的正确性。
因为单元测试需要知道内部程序设计和编码的细节知识,一般应由程序员而非测试员来完成,往往需要开发测试驱动模块和桩模块来辅助完成单元测试。因此应用系统有一个设计很好的体系结构就显得尤为重要。
一个软件单元的正确性是相对于该单元的规约而言的。因此,单元测试以被测试单位的规约为基准。
单元测试的主要方法有控制流测试、数据流测试、排错测试、分域测试等等。 2 集成测试 集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。
它根据集成测试计划,一边将模块或其他软件单位组合成越来越大的系统,一边运行该系统,以分析所组成的系统是否正确,各组成部分是否合拍。集成测试的策略主要有自顶向下和自底向上两种。
3 系统测试 系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的“先知者问题”。因此,系统测试应该按照测试计划进行,其输入、输出和其他动态运行行为应该与软件规约进行对比。
软件系统测试方法很多,主要有功能测试、性能测试、随机测试等等。 4 验收测试 验收测试旨在向软件的购买者展示该软件系统满足其用户的需求。
它的测试数据通常是系统测试的测试数据的子集。所不同的是,验收测试常常有软件系统的购买者代表在现场,甚至是在软件安装使用的现场。
这是软件在投入使用之前的最后测试。 5 回归测试 回归测试是在软件维护阶段,对软件进行修改之后进行的测试。
其目的是检验对软件进行的修改是否正确。这里,修改的正确性有两重含义:一是所作的修改达到了预定目的,如错误得到改正,能够适应新的运行环境等等;二是不影响软件的其他功能的正确性。
6 Alpha 测试:在系统开发接近完成时对应用系统的测试;测试后,仍然会有少量的设计变更。这种测试一般由最终用户或其他人员员完成,不能由程序员或测试员完成。
7 Beta 测试:当开发和测试根本完成时所做的测试,而最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其他人员员完成,不能由程序员或测试员完成。
3、按测试方法划分: 1 白盒测试 白盒测试也称结构测试或逻辑驱动测试,是指基于一个应用代码的内部逻辑知识,即基于覆盖全部代码、分支、路径、条件的测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。
第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。
第三,穷举路径测试可能发现不了一些与数据相关的错误。 白盒测试可以借助一些工具来完成如Junit Framework,Jtest等。
2 黑盒测试 黑盒测试是指不基于内部设计和代码的任何知识,而基于需求和功能性的测试,黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。
“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。
实际上测试情况有无穷多个,人们不仅要测试所有。
1、从是否关心内部结构来看 (1)白盒测试:又称为结构测试或逻辑驱动测试,是一种按照程序内部逻辑结构和编码结构,设计测试数据并完成测试的一种测试方法。
(2)黑盒测试:又称为数据驱动测试,把测试对象当做看不见的黑盒,在完全不考虑程序内部结构和处理过程的情况下,测试者仅依据程序功能的需求规范考虑,确定测试用例和推断测试结果的正确性,它是站在使用软件或程序的角度,从输入数据与输出数据的对应关系出发进行的测试。(3)灰盒测试:是一种综合测试法,它将“黑盒”测试与“白盒”测试结合在一起,是基于程序运行时的外部表现又结合内部逻辑结构来设计用例,执行程序并采集路径执行信息和外部用户接口结果的测试技术。
2、从是否执行代码看 (1)静态测试:指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。(2)动态测试:是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能指标。
3、从开发过程级别看 (1)单元测试:又称模块测试,是针对软件设计的最小单位----程序模块或功能模块,进行正确性检验的测试工作。其目的在于检验程序各模块是否存在各种差错,是否能正确地实现了其功能,满足其性能和接口要求。
(2)集成测试:又叫组装测试或联合,是单元测试的多级扩展,是在单元测试的基础上进行的一种有序测试。旨在检验软件单元之间的接口关系,以期望通过测试发现各软件单元接口之间存在的问题,最终把经过测试的单元组成符合设计要求的软件。
(3)系统测试:是为判断系统是否符合要求而对集成的软、硬件系统进行的测试活动、它是将已经集成好的软件系统,作为基于整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、人员、数据等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。在系统测试中,对于具体的测试类型有:(1)功能测试:对软件需求规格说明书中的功能需求逐项进行的测试,以验证功能是否满足要求。
(2)性能测试:对软件需求规格说明书的功能需求逐项进行的测试,以验证功能是否满足要求。(3)接口测试:对软件需求规格说明中的接口需求逐项进行的测试。
(4)人机交互界面测试:对所有人机交互界面提供的操作和显示界面进行的测试,以检验是否满足用户的需求。(5)强度测试:强制软件运行在异常乃至发生故障的情况下(设计的极限状态到超出极限),验证软件可以运行到何种程序的测试。
(6)余量测试:对软件是否达到规格说明中要求的余量的测试。(7)安全性测试:检验软件中已存在的安全性、安全保密性措施是否有效的测试,(8)可靠性测试:在真实的或仿真的环境中,为做出软件可靠性估计而对软件进行的功能(其输入覆盖和环境覆盖一般大于普通的功能测试) (9)恢复性测试:对有恢复或重置功能的软件的每一类导致恢复或重置的情况,逐一进行的测试。
(10)边界测试:对软件处在边界或端点情况下运行状态的测试。(11)数据处理测试:对完成专门数据处理功能所进行的测试。
(12)安装性测试:对安装过程是否符合安装规程的测试,以发现安装过程中的错误。(13)容量测试:检验软件的能力最高能达到什么程度的测试。
(14)互操作性测试:为验证不同软件之间的互操作能力而进行的测试。(15)敏感性测试:为发现在有效输入类中可能引起某种不稳定性或不正常处理的某些数据的组合而进行的测试。
(16)标准符合性测试:验证软件与相关国家标准或规范(如军用标准、国家标准、行业标准及国际标准)一致性的测试。(17)兼容性测试:验证软件在规定条件下与若干个实体共同使用或实现数据格式转换时能满足有关要求能力的测试。
(18)中文本地化测试:验证软件在不降低原有能力的条件下,处理中文能力的测试。4、从执行过程是否需要人工干预来看 (1)手工测试:就是测试人员按照事先为覆盖被测软件需求而编写的测试用例,根据测试大纲中所描述的测试步骤和方法,手工地一个一个地输 入执行,包括与被测软件进行交互(如输入测试数据、记录测试结果等),然后观察测试结果,看被测程序是否存在问题,或在执行过程中是否会有一场发生,属于比较原始但是必须执行的一个步骤。
(2)自动化测试:实际上是将大量的重复性的测试工作交给计算机去完成,通常是使用自动化测试工具来模拟手动测试步骤,执行用某种程序设计语言编写的过程(全自动测试就是指在自动测试过程中,不需要人工干预,由程序自动完成测试的全过程;半自动测试就是指在自动测试过程中,需要手动输入测试用例或选择测试路径,再由自动测试程序按照人工指定的要求完成自动测试)5、从测试实施组织看 (1)开发测试:开发人员进行的测试 (2)用户测试:用户方进行的测试 (3)第三方测试:有别于开发人员或用户进行的测试,由专业的第三方承担的测试,目的是为了保证测试工作的客观性6、从测试所处的环境看 (1)阿尔法测试:是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试 (2)。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:2.875秒