白盒测试也称结构测试或逻辑驱动测试
- 格式:doc
- 大小:34.00 KB
- 文档页数:5
黑盒测试黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。
“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。
“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。
实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。
白盒测试白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
“白盒”法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
但即使每条路径都测试了仍然可能有错误。
第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。
第二,穷举路径测试不可能查出程序中因遗漏路径而出错。
第三,穷举路径测试可能发现不了一些与数据相关的错误。
还有一个灰盒测试灰盒测试灰盒测试,确实是介于二者之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。
⽩盒测试语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖(转)转⾃:⽩盒作为测试⼈员常⽤的⼀种测试,越来越受到测试⼯程师的重视。
⽩盒测试并不是简单的按照⽤例,⽽是需要根据不同的测试,结合不同的测试对象,适合的⽅法进⾏测试。
因为对于不同复杂度的代码逻辑,可以衍⽣出许多种执⾏路径,只有适当的测试⽅法,才能帮助我们从代码的迷雾森林中找到正确的⽅向。
本⽂介绍六种⽩盒⼦测试⽅法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
⽩盒测试的概述 由于逻辑错误和不正确假设与⼀条路径被运⾏的可能性成反⽐。
由于我们经常相信某逻辑路径不可能被执⾏, ⽽事实上,它可能在正常的情况下被执⾏。
由于代码笔误是随机且⽆法杜绝的,因此我们要进⾏⽩盒测试。
⽩盒测试⼜称结构测试,透明盒测试、逻辑驱动测试或代码的测试。
⽩盒测试是⼀种测试⽤例设计⽅法,盒⼦指的是被测试的,⽩盒指的是盒⼦是可视的,你清楚盒⼦内部的东西以及⾥⾯是运作的。
⽩盒的测试⽤例需要做到: ·保证⼀个模块中的所有独⽴路径⾄少被使⽤⼀次 ·对所有逻辑值均需测试 true 和 false ·在上下边界及可操作范围内运⾏所有循环 ·检查内部结构以确保其有效性 ⽩盒测试的⽬的:通过检查软件内部的逻辑结构,对软件中的逻辑路径进⾏覆盖测试;在程序不同地⽅设⽴检查点,检查程序的状态,以确定实际运⾏状态与预期状态是否⼀致。
⽩盒测试的特点:依据软件设计说明书进⾏测试、对程序内部细节的严密检验、针对特定条件设计测试⽤例、对软件的逻辑路径进⾏覆盖测试。
⽩盒测试的步骤: 1.测试计划阶段:根据需求说明书,制定测试进度。
2.测试设计阶段:依据程序设计说明书,按照⼀定规范化的⽅法进⾏软件结构划分和设计测试⽤例。
3.测试执⾏阶段:输⼊测试⽤例,得到测试结果。
4.测试总结阶段:对⽐测试的结果和代码的预期结果,错误原因,找到并解决错误。
回归测试、白盒测试、黑盒测试等概念回归测试回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
自动回归测试将大幅降低系统测试、维护升级等阶段的成本。
回归测试包括两部分:函数本身的测试、其他代码的测试。
在对被修改的函数重新测试。
如果函数的设计功能没有变化,直接运行函数测试就可以了。
如果修改了设计功能,则要根据增减的功能点,增加或删除测试用例。
另外,还要完成白盒覆盖。
函数代码的修改可能导致调用该函数的代码产生错误,所以需要测试其他代码。
如果函数是私有函数并且未涉及到全局变量,应运行类测试,否则应运行工程测试。
在函数列表中选择类测试或工程测试,编译运行测试工程,即可执行对其他代码的回归测试。
白盒测试白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
“白盒”法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
但即使每条路径都测试了仍然可能有错误。
第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。
第二,穷举路径测试不可能查出程序中因遗漏路径而出错。
第三,穷举路径测试可能发现不了一些与数据相关的错误。
黑盒测试黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
软件测试题(一)第一大题:单选题1. 测试工程师一般分为两类:测试开发工程师和(A )A. 软件测试工程师B. 软件开发工程师C. 通信开发工程师D. 黑盒测试工程师2. 一个完整的测试部门,一般不包含以下角色(D )A.测试主管B.测试工程师C.测试设计人员D.培训师3. 测试工程师由不包含以下哪一类(B)A. 白盒测试技术人员B. 前台美工技术人员C. 黑盒测试技术人员D. 自动化测试技术人员4. OSI7层模型不包括下面哪一层(C)A. 物理层B. 数据链路层C. 控制层D. 网络层5. 测试工程师的能力不包括(D)A. 能够熟练应用测试方法B. 能够独立编写测试计划C. 能够独立编写测试总结分析报告D. 能够编写入侵脚本攻击软件6. 软件测试的目的是(B )A 避免软件开发中出现的错误B 发现软件开发中出现的错误C 尽可能发现并排除软件中潜藏的错误,提高软件的可靠性D 修改软件中出现的错误7. 坚持在软件的各个阶段实施下列哪种质量保障措施,才能在开发过程中尽早发现和预防错误,把出现的错误克服在早期(A )。
A 技术评审B 程序测试C 改正程序错误D 管理评审8. 为了提高测试的效率,正确的做法是( A )。
A 选择发现错误可能性大的数据作为测试用例B 在完成程序的编码之后再制定软件的测试计划C 随机选取测试用例D 使用测试用例测试是为了检查程序是否做了应该做的事9. 以下那一种选项不属于软件缺陷(D )。
A 软件没有实现产品规格说明所要求的功能B 软件中出现了产品规格说明不应该出现的功能C 软件实现了产品规格没有提到的功能D 软件实现了产品规格说明所要求的功能但因受性能限制而未考虑可移植性问题10. 单元测试中设计测试用例的依据是( D )。
A 概要设计规格说明书B 用户需求规格说明书C 项目计划说明书D 详细设计规格说明书11. 下面有关软件缺陷的说法中错误的是(C)。
A 缺陷就是软件产品在开发中存在的错误B 缺陷就是软件维护过程中存在的错误、毛病等各种问题C 缺陷就是导致系统程序崩溃的错误D 缺陷就是系统所需要实现某种功能的实效和违背12. 下面有关测试原则的说法正确的是( A )。
一、判断分析题1.软件测试的目的是尽可能多的找出软件的缺陷。
(Y)2.软件测试的目的是证明软件没有错误。
(N)3.测试组负责软件质量。
(N )4.程序的效率与程序的复杂性相关。
(N )5.软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。
(Y )6.测试程序仅仅按预期方式运行就行了。
(N )7.好的测试员不懈追求完美。
( Y)8.不存在质量很高但可靠性很差的产品。
(N )9.测试是为了验证该软件已正确地实现了用户的要求。
( N)10.发现错误多的程序模块,残留在模块中的错误也多。
(Y )11.程序效率的提高主要应通过选择高效的算法来实现。
( Y)12.测试人员要坚持原则,缺陷未修复完坚决不予通过。
(N)13.项目立项前测试人员不需要提交任何工件。
(Y)14.缺陷跟踪系统只针对对测试人员来使用。
(N )15.从用户软件开发者的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。
(N )16.软件项目在进入需求分析阶段,测试人员应该开始介入其中。
( Y)17.测试是提高产品质量根本手段。
()18.代码评审员一般由测试员担任。
(N)19.代码评审是检查源代码是否达到模块设计的要求。
(N)20.软件测试员可以对产品说明书进行白盒测试。
(N )21.静态白盒测试可以找出遗漏之处的问题。
(Y )22.总是首先设计白盒测试用例。
(N)23.用黑盒法测试时,测试用例是根据程序内部逻辑设计的。
(N)24.黑盒测试方法中最有效的是因果图法。
(Y )25.软件测试按照测试过程分类为黑盒、白盒测试。
(N)26.白盒测试又称结构测试、逻辑驱动测试或基于程序的测试。
(Y)27.白盒测试时一般由开发人员兼任测试人员的角色。
(Y)28.黑盒测试是从用户观点出发的测试。
(Y)29.白盒测试是从用户观点出发的测试。
(N)30.白盒测试根据程序外部特征进行测试,黑盒测试根据程序内部逻辑结构进行测试。
白盒测试用于哪个测试阶段
白盒测试,也称为结构化测试或透明盒测试,是一种软件测试方法,旨在评估软件系统内部代码的质量和执行效果。
相比黑盒测试只关注功能,白盒测试还考虑代码本身的逻辑和结构。
白盒测试通常在软件开发的不同阶段中进行,旨在帮助识别和修复潜在的问题,确保软件程序的质量和稳定性。
白盒测试的主要测试阶段包括:
1.单元测试:在软件开发的初期阶段进行,测试单个代码单元或模块
的功能和逻辑正确性。
白盒测试可以通过检查代码是否符合规范、是否有逻辑错误等来验证单元测试的质量。
2.集成测试:将单元测试通过的代码模块组合在一起,测试它们在集
成后的行为和功能。
白盒测试可以帮助识别单元之间的接口问题和集成逻辑错误,确保软件整体运行的稳定性。
3.系统测试:在软件开发的中后期阶段进行,测试整个软件系统的功
能和性能。
白盒测试可以验证系统的内部逻辑是否正确并评估系统的整体结构设计是否完整。
4.验收测试:在软件项目接近完成阶段进行,测试软件系统是否满足
用户需求和规格要求。
白盒测试可以帮助评估软件系统的可靠性和稳定性,确保交付给用户的软件是高质量的。
总之,白盒测试在软件开发的不同阶段中都扮演着重要的角色,帮助开发团队发现和解决潜在问题,提高软件系统的质量和可靠性。
通过针对软件内部代码的测试,白盒测试可以有效地检测和纠正各种错误,确保软件程序能够顺利地运行并达到预期的功能目标。
白盒测试白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。
这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
1概述白盒测试[1]又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。
白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
"白盒"法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
采用什么方法对软件进行测试呢?常用的软件测试方法有两大类:静态测试方法和动态测试方法。
其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。
在动态分析技术中,最重要的技术是路径和分支测试。
下面要介绍的六种覆盖测试方法属于动态分析方法。
测试方法白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。
语句覆盖每条语句至少执行一次。
什么是白盒测试和黑盒测试,有什么区别白盒测试和黑盒测试是软件测试的两种不同方法,任何工程产品(注意是任何工程产品)都可以使用二者之一进行测试。
什么是白盒测试白盒测试:是通过程序的源代码进行测试而不使用用户界面。
这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正。
什么是黑盒测试黑盒测试:是通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。
测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作。
在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收和正确的输出。
白盒测试与黑盒测试的区别白盒测试是对软件的过程性细节做细致的检查。
这种方法是把测试对象看作一个打开的盒子,他允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。
因此白盒测试又称为”结构测试“或”逻辑驱动测试“。
白盒测试是按照程序内部的结构来测试程序,通过测试检验产品内部动作是否按照设计规格说明书的要求正常进行,检验程序中的每条通道是否都按照规定正常工作。
白盒测试主要是想对程序模块进行以下检查:(1)对程序模块的所有独立的执行路径至少测试一遍;(2)对所有的逻辑判定,取”真“与”假“的两种情况都能至少测一遍;(3)在循环的边界和运行的界限内执行循环体;(4)测试内部数据结构的有效性,等等;(5)静态白盒测试:即代码审查,正式审查和检验设计和程序代码;(6)动态白盒测试利用查看代码功能和实现方式得到的信息来设计和执行测试,也叫结构测试;黑盒测试把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,针对“软件界面”和”软件功能“进行测试,只检查功能是否符合需求规格说明书能正常使用。
黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。
软件的黑盒测试意味着测试要在软件的接口处进行。
这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
因此黑盒测试又叫功能测试或数据驱动测试。
黑盒测试主要是为了发现以下几类错误:1、是否有不正确或遗漏的功能?2、在接口上,输入是否能正确的接受?能否输出正确的结果?3、是否有数据结构错误或外部信息(例如数据文件)访问错误?4、性能上是否能够满足要求?5、是否有初始化或终止性错误?软件的白盒测试是对软件的过程性细节做细致的检查。
这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。
因此白盒测试又称为结构测试或逻辑驱动测试。
白盒测试主要是想对程序模块进行如下检查:1、对程序模块的所有独立的执行路径至少测试一遍。
2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
3、在循环的边界和运行的界限内执行循环体。
4、测试内部数据结构的有效性,等等。
单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。
通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。
单元测试是由程序员自己来完成,最终受益的也是程序员自己。
可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。
执行单元测试,就是为了证明这段代码的行为和我们期望的一致。
集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。
程序员所做的测试工作并非真正意义上的软件测试,从本质上来说,应该称作“调试“.调试就是,在已知错误的情况下,对软件程序代码作出一系列检查,校正的过程.而软件测试则是在未知错误的情况下,检查程序代码是否有问题的过程.软件测试的定义a. 软件是一个集合,包括三部分:程序代码,文档,数据.b. 软件测试就是为了发现错误而审查软件文档、检查软件数据和执行程序代码的过程,其目的在于在软件交付使用前充分发现缺陷并协助相关部门定位、解决缺陷,最后交付一个高质量的软件给用户.c. 从广义上讲,软件测试是指软件产品生存周期内的所有检查、评审和确认活动.如设计评审、文档审查、单元测试、集成测试、系统测试、验收测试等.d. 软件测试中称找缺陷的过程为找Bug.Bug表示电脑系统或程序中隐藏的错误、缺陷和问题.一切不完美的地方,我们都可以认为其实一个Bug.软件测试分类1一般的,我们将软件测试活动分为以下几类:黑盒测试、白盒测试、灰盒测试、静态测试、动态测试、手动测试、自动测试等.1黑盒测试黑盒测试又叫做功能测试、数据驱动测试或基于需求规格说明书的功能测试.该测试类型注重于测试软件的功能性需求.测试工程师无需了解程序代码内部结构,完全模拟软件产品的最终用户使用该软件,检查软件产品是否达到了用户的需求.2白盒测试白盒测试又称为结构测试、逻辑驱动测试或基于程序代码内部构成的测试.测试工程师将深入考察程序代码的内部结构,逻辑设计等. 3灰盒测试灰盒测试是前两种测试的集合,一方面考虑程序代码的功能性表现,另一方面又要考虑程序代码内部结构.像我们的功能测试,自动化功能测试就采用了灰盒测试的方法.4静态测试静态测试,顾名思义,就是静态的、不执行被测对象程序代码而寻找缺陷的过程.通俗的讲,静态测试就是用眼睛看,阅读程序代码、文档资料等,与需求规格说明书中的客户需求进行比较,找出程序代码中设计不合理以及文档资料有错误的地方.一般在企业、公司里召开正规的评审会,通过评审的方式,找出文档资料、程序代码中存在缺陷的地方,并加以修改.在进行代码静态测试时,可以使用代码走查工具,如QA C++、C++Test等.5动态测试动态测试即为实际的执行被测试对象代码,输入事先设计好的测试用例,检查程序代码运行的结果与测试用例中设计的预期结果之间是否有差异,判定实际结果与预期结果是否一致,从而检查程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能状况.动态测试由四部分组成:设计测试用例、执行测试用例、分析比较输出结果、输出测试报告.6手动测试手动测试是最传统的测试方法.它是测试人员设计测试用例并且执行测试用例,然后根据实际的结果去和预期的结果相比较并记录测试结果,最终输出测试报告的测试活动.7自动化测试随着测试技术的不断更新,出现了很多自动化测试工具,如HP的QuickTest Professional、LoadRunner,微软的WAS,IBM的Rational等.所谓的自动化测试就是利用一些测试工具,模拟用户的业务使用流程,让它们自动运行来查找缺陷.也可以编写一些代码,设定特定的测试场景,来自动寻找缺陷.自动化测试的优点是能够很快、很广泛的查找缺陷,同时可以做很多重复性的工作,在回归测试阶段,可以利用QuickTest Professional自动化功能测试工具进行.有时候我们常常需要做一种压力测试,需要几万甚至几十万个用户同时访问某个站点,以保证网站的服务器不回出现死机或者崩溃的现象.一般来说,找几万人同时打开网页是不现实的,就算能够找到那么多的测试者,成本也很高.但是,利用测试工具,比如LoadRunner,就可以非常容易得做到,并且测试工具还可以自动判断浏览结果是否正确.软件测试流程测试计划的编写从分析和设计阶段就开始了.在实际工作中,测试环节可分为明显的、同等重要的几个阶段:需求测试、单元测试、集成测试又称组装测试和系统测试.第六阶段是验收测试阶段,验收测试无论是在规模上或性质上都和系统测试很相似,它们的根本区别在于:前者是内部的,而后者是手“客户“控制的.软件测试流程图单元测试:是对软件中的基本组成单位进行的测试,如一个模块、一个过程等等.她是软件动态测试的最基本部分,也是最重要部分,其目的是检验软件基本组成单位的正确性.8、既可以用于黑盒测试,也可以用于白盒测试的方法的是A.逻辑覆盖法B. 边界值法C. 基本路径法D.正交试验设计法逻辑覆盖法和基本路径测试是白盒测试的大分类;正交实验设计法:也是不涉及代码内部结构的典型的黑盒测试方法;边界值法在黑盒测试中,我们可以不涉及代码来取边界值;但是也可以在设计代码时,比如在条件覆盖等白盒测试方法中取到边界值,因为往往边界值的位置容易出错...所以是两种测试都可以用9、验收测试是由最终用户来实施的.请判断这句话的正确与否.A. TB. FAcceptance testing验收测试,系统开发生命周期方法论的一个阶段,这时相关的用户和/或独立测试人员根据测试计划和结果对系统进行测试和接收.它让系统用户决定是否接收系统.它是一项确定产品是否能够满足合同或用户所规定需求的测试.这是管理性和防御性控制.验收测试有alpha和beta两种,且都由用户来实施,区别在于是否为最终用户alpha测试是由一个用户在开发环境下进行的测试,也可以是公司内部用户在模拟实际操作环境进行的受控测试beta测试是由软件的多个用户在一个或多个实际使用环境下进行的测试验收测试有alpha和beta两种,且都由用户来实施,区别在于是否为最终用户alpha测试是由一个用户在开发环境下进行的测试,也可以是公司内部用户在模拟实际操作环境进行的受控测试beta测试是由软件的多个用户在一个或多个实际使用环境下进行的测试10、如果某测试用例集实现了某软件的路径覆盖,那么它一定同时实现了该软件的判定覆盖11、在下面说列举的逻辑测试覆盖中,测试覆盖最强的是A.条件覆盖B.条件组合覆盖C.语句覆盖D.判定/条件覆盖条件覆盖CCCondition Coverage,设计足够多的测试用例,运行被测程序,使得每一判定语句中每个逻辑条件的可能取值至少满足一次.条件覆盖率的公式:条件覆盖率=被评价到的条件取值的数量/条件取值的总数X100%1 条件覆盖的缺点:只考虑到每个判定语句中的每个表达式,没有考虑到各个条件分支或者涉及不到全部分支,即不能够满足判定覆盖.条件组合覆盖,也称多条件覆盖MCC Multiple Condition Coverage,设计足够多的测试用例,使得每个判定中条件的各种可能组合都至少出现一次以数轴形式划分区域,提取交集,建立最少的测试用例.这种方法包含了“分支覆盖”和“条件覆盖”的各种要求.满足条件组合覆盖一定满足判定覆盖、条件覆盖、判定条件覆盖.条件组合覆盖率的公式:条件组合覆盖率=被评价到的条件取值组合的数量/条件取值组合的总数条件组合覆盖的缺点:判定语句较多时,条件组合值比较多.语句覆盖 SCStatement Coverage,就是设计若干个测试用例,运行被测程序,使得程序中每一可执行语句至少执行一次.这里的“若干个”,意味着使用测试用例越少越好.语句覆盖在测试中主要发现缺陷或错误语句.判定条件覆盖CDCCondition/ Decision Coverage,设计足够多的测试用例,使得判定中的每个条件的所有可能真/假至少出现一次,并且每个判定本身的判定结果也至少出现一次.1 判定条件覆盖率的公式:条件判定覆盖率=被评价到的条件取值和判定分支的数量/条件取值总数+判定分支总数.判定条件覆盖的缺点:没有考虑单个判定对整体结果的影响,无法发现逻辑错误.正确答案:B解析:逻辑测试覆盖是白盒测试法常用的技术.主要的覆盖标准有6种,强度由弱到强依次是:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖12、不定项选择题有关"测试驱动开发",下列说法正确的有A.TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码B.TDD的基本思路就是通过测试来推动整个开发得进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程.C.TDD的重要目的不仅仅是测试软件,测试工作保证代码质量仅仅是其中一部分,而且是在开发过程中帮助客户和程序员去除模棱两可的需求.D.TDD首先考虑使用需求对象、功能、过程、接口等,主要是编写测试用例框架对功能的过程和接口进行设计,而测试框架可以持续进行验证.测试驱动开发,英文全称Test-Driven Development,简称,是一种不同于传统的新型的开发方法.它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行.这有助于编写简洁可用和高质量的代码,并加速开发过程.测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论.TDD得原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码.TDD 虽是敏捷方法的核心实践,但不只适用于XPExtreme Programming,同样可以适用于敏感词开发方法和过程.TDD 得基本思路就是通过测试来推动整个开发得进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程.TDD的重要目的不仅仅是测试软件,测试工作保证代码质量仅仅是其中一部分,而且是在开发过程中帮助客户和程序员去除模棱两可的需求.TDD首先考虑使用需求对象、功能、过程、接口等,主要是编写测试用例框架对功能的过程和接口进行设计,而测试框架可以持续进行验证.优点:在任意一个开发节点都可以拿出一个可以使用,含少量bug并具一定功能的产品.缺点:增加代码量.测试代码是系统代码的两倍或更多13、测试方法可以分成哪几种A个人复查B抽查和会审C黑盒测试D白盒测试人工测试:个人复查、抽查和会审,机器测试:黑盒测试和白盒测试85、项目立项前测试人员不需要提交任何工件.请判断这句话的正确与否.正确答案: A 你的答案: B错误工件是加工过程中的生产对象.项目立项前,测试人员是不需要提供任何工件的.所以该说法正确,故选A.86、测试的关键问题是正确答案: D 你的答案: D正确A.如何组织对软件的评审B.如何验证程序的正确性C.如何采用综合策略D.如何选择测试用例测试用例是测试程序正确性与否的关键.一个覆盖完全的测试用例可以测试出程序是否正确运行,是否有bug等等,是最重要的.87、单元测试能发现约80%的软件缺陷.请判断这句话的正确与否.正确答案: A 你的答案: A正确因为缺陷放大理论,在单元测试阶段发现的bug会在系统测试阶段被放大,放大倍数完全符合80/20理论单元测试unit testing,是指对软件中的最小可测试单元进行检查和验证.对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等.总的来说,单元就是人为规定的最小的被测功能模块.单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试.88、自底向上集成需要测试员编写驱动程序.请判断这句话的正确与否.正确答案: A 你的答案: A正确自底向上测试是从“原子”模块即软件结构最低层的模块开始组装测试,因测试到较高层模块时,所需的下层模块功能均已具备,所以不再需要桩模块.自底向上集成方法不用桩模块,测试用例的设计亦相对简单,但缺点是程序最后一个模块加入时才具有整体形象,需要开发驱动模块.自底向上集成是从最低层的模块开始集成,因测试到较高层模块时,所需求的下层模块功能均已具备,所以不再需要桩模块,测试用例的设计也相对简单,缺点是程序最后一个查勘块加入时才具有整体形象.自底向上集成测试的步骤为:1.把低层模块组织成实现某个子功能的模块群;2.开发一个测试驱动模块,控制测试数据的输入和测试结果的输出;3.对每个模块群进行测试;4.删除测试使用的驱动模块,用较高层模块把模块群组织成为完成更大功能的新模块群.89、下面属于白盒测试方法的是正确答案: B 你的答案: A错误A.等价划分方法B.逻辑覆盖C.边界值分析D.错误推测法解析白盒测试法主要有逻辑覆盖、基本路径测试等.逻辑覆盖测试包括语句覆盖、路径覆盖、判定覆盖、判断-条件覆盖,选择B.其余为黑盒测试法.白盒测试并不是简单的按照代码设计用例,而是需要根据不同的测试需求,结合不同的测试对象,使用适合的方法进行测试.因为对于不同复杂度的代码逻辑,可以衍生出许多种执行路径,只有适当的测试方法,才能帮助我们从代码的迷雾森林中找到正确的方向.白盒子测试方法:强度由低到高语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖.90、软件测试类型按开发阶段划分是正确答案: B 你的答案: B正确A.需求测试、单元测试、集成测试、验证测试B.单元测试、集成测试、确认测试、系统测试、验收测试C.单元测试、集成测试、验证测试、确认测试、验收测试D.调试、单元测试、集成测试、用户测试1单元测试:单元测试又称为模块测试,是针对软件设计的最小单位程序模块进行正确性检查的测试工作,单元测试需要从程序内部结构出发设计测试用例,多个模块可以平行地独立进行单元测试.2集成测试又称为组装测试或联合测试,在单元测试的基础上,需要将所有模块按照概要设计说明书和详细设计说明书的要求进行组装.3确认测试确认测试的目标是验证软件的功能和性能以及其他特性是否与用户的要求一致.确认测试一般包括有效性测试和软件配置复查.一般有第三方测试机构进行.4系统测试软件作为计算机系统的一部分,与硬件、网络、外设、支撑软件、数据以及人员结合在一起,在实际或模拟环境下,对计算机系统进行测试,目的在于与系统需求比较,发现问题5验收测试以用户为主的测试,软件开发人员和质量保证人员参加,由用户设计测试用例.不是对系统进行全覆盖测试,而是对核心业务流程进行测试.所以软件测试类型按开发阶段分为单元测试,集成测试,确认测试,系统测试,验收测试.91、软件验收测试的合格通过准则是:正确答案: A B C D 你的答案: A B C D正确A.软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求.B.所有测试项没有残余一级、二级和三级错误.C.立项审批表、需求分析文档、设计文档和编码实现一致.D.验收测试工件齐全测试计划,测试用例,测试日志,测试通知单,测试分析报告.92、做好文档测试需要注意的点有哪些正确答案: A B C D 你的答案: A B C D正确A.仔细阅读,跟随每个步骤,检查每个图形,尝试每个示例B.检查文档的编写是否满足文档编写的目的C.内容是否齐全,正确,完善D.标记是否正确93、下列关于alpha 测试的描述中正确的是哪些正确答案: A D 你的答案: A D正确测试需要用户代表参加测试不需要用户代表参加测试是系统测试的一种测试是验收测试的一种α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,α测试不能由程序员或测试员完成.α测试发现的错误,可以在测α测试性能测试试现场立刻反馈给开发人员,由开发人员及时分析和处理.目的是评价软件产品的功能、可使用性、可靠性、性能和支持.尤其注重产品的界面和特色.Alpha测试可以从软件产品编码结束之后开始,或在模块子系统测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始.所以选AD.94、软件测试的对象包括正确答案: B 你的答案: C错误A.目标程序和相关文档B.源程序、目标程序、数据及相关文档C.目标程序、操作系统和平台软件D.源程序和目标程序软件测试的对象包括:程序、数据、文档.目标程序和源程序都属于程序.95、判断对错.系统测试计划属于项目阶段性关键文档,因此需要同行评审.正确答案: A 你的答案: A正确A.正确B.错误同行评审目的:发现小规模工作产品的错误,系统测试计划属于项目阶段性关键文档,同行评审是必须的96、对于软件的β测试,下列描述正确的是 .正确答案: D 你的答案: D正确A.β测试就是在软件公司内部展开的测试,由公司专业的测试人员执行的测试B.β测试就是在软件公司内部展开的测试,由公司的非专业测试人员执行的测试C.β测试就是在软件公司外部展开的测试,由专业的测试人员执行的测试D.β测试就是在软件公司外部展开的测试,可以由非专业的测试人员执行的测试α、β、λ常用来表示软件测试过程中的三个阶段,α是第一阶段,一般只供内部测试使用;β是第二个阶段,已经消除了软件中大部分的不完善之处,但仍有可能还存在缺陷和漏洞,一般只提供给特定的用户群来测试使用;λ是第三个阶段,此时产品已经相当成熟,只需在个别地方再做进一步的优化处理即可上市发行.Beta测试是一种验收测试.所谓验收测试是软件产品完成了功能测试和系统测试之后,在产品发布之前所进行的软件测试活动,它是技术测试的最后一个阶段,通过了验收测试,产品就会进入发布阶段.验收测试一般根据产品规格说明书严格检查产品,逐行逐字地对照说明书上对软件产品所做出的各方面要求, 确保所开发的软件产品符合用户的各项要求. 通过综合测试之后,软件已完全组装起来,接口方面的错误也已排除,软件测试的最后一步——验收测试即可开始.验收测试应检查软件能否按合同要求进行工作,即是否满足软件需求说明书中的确认标准.Beta测试由软件的最终用户们在一个或多个客房场所进行.与Alpha测试不同,开发者通常不在Beta测试的现场,因Beta测试是软件在开发者不能控制的环境中的“真实”应用.用户Beta测试过程中遇到的一切问题真实在或想像的,并且定期把这些问题报告给开发者.接收到在Beta测试期间报告的问题之后,开发者对软件产品进行必要的修改,并准备向全体客户发布最终的软件产品.97、代码评审员一般由测试员担任.请判断这句话的正确与否.正确答案: B 你的答案: B正确一般都是开发人员评审代码评审的内容:编码规范问题:命名不规范、magic number、……代码结构问题:重复代码、巨大的方法和类、分层不当、紧耦合工具、框架使用不当:Spring、Hibernate、AJAX实现问题:错误验证、异常处理、事务划分、线程、性能、安全、实现过于复杂、代码可读性不佳、扩展性不好测试问题:测试覆盖度不够、可测试性不好代码评审不负责检查功能、逻辑是否正确,这些要靠单元测试和QA工作来解决98、对手机软件的压力测试通常可以包括多选正确答案: A B C 你的答案: A B C D错误A.存储压力B.响应能力压力C.网络流量压力D.并发压力针对手机应用软件的系统测试,我们通常从如下几个角度开展:功能模块测试,交叉事件测试,压力测试,容量测试,兼容性测试,易用性/用户体验测试等.对手机可以施加的压力测试类型主要有:存储压力、边界压力、响应能力压力、网络流量压力99、下面属于白盒测试方法的有哪些正确答案: A D 你的答案: A C D错误A.语句覆盖B.等价类划分C.边界值分析D.判定条件覆盖黑盒测试方法、白盒测试方法:具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景法等.白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异白盒测试法的覆盖标准有、循环覆盖和基本.其中逻辑覆盖包括、、、判定/条件覆盖、和.100、软件验收测试分为三类:正式验收测试;非正式验收测试:其中包括α测试由用户、测试人员、开发人员共同参与的内部测试.和β测试内测后的公测,即完全交给最终用户测试. 101、软件测试计划评审会需要哪些人员参加正确答案: A B C D 你的答案: A B C D正确A.项目经理负责人C.配置负责人D.测试组软件测试计划评审会需要有项目经理、客户可选、配置管理员、测试经理、开发组长等人的参加.所以ABCD都需要参加.所以选ABCD.软件质量保证SQA-Software Quality Assurance是建立一套有计划,有系统的方法,来向管理层保证拟定出的标准、步骤、实践和方法能够正确地被所有项目所采用.软件质量保证的目的是使软件过程对于管理人员来说是可见的.它通过对软件产品和活动进行评审和审计来验证软件是合乎标准的.软件质量保证组在项目开始时就一起参与建立计划、标准和过程.这些将使软件项目满足机构方针的要求.目标 1: 软件质量保证1 工作是有计划进行的.目标 2: 客观地验证软件项目产品和工作是否遵循恰当的标准、步骤和需求.目标 3: 将软件质量保证工作及结果通知给相关组别和个人.目标 4: 高级管理层接触到在项目内部不能解决的不符合类问题.目标 5: 软件质量需要全面的测试工作来保证. 102、下面描述测试工具的功能正确的有正确答案: A B C D 你的答案: A B C D正确: 基于JAVA的压力测试工具,Badboy用来进行脚本的录制: 白盒测试工具:针对代码测试:负载压力测试: 用例管理工具LoadRunner-负载压力测试:预测系统性能.JMeter+Badboy:基于JAVA的压力测试工具,Badboy用来进行脚本的录制功能测试:通过自动录制、检测和回放用户的应用操作.将输出记录同预先给定的记录比较.。
什么是黑盒测试和白盒测试?任何工程产品(注意是任何工程产品)都可以使用以下两种方法之一进行测试。
黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。
软件的黑盒测试意味着测试要在软件的接口处进行。
这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
因此黑盒测试又叫功能测试或数据驱动测试。
黑盒测试主要是为了发现以下几类错误:1、是否有不正确或遗漏的功能?2、在接口上,输入是否能正确的接受?能否输出正确的结果?3、是否有数据结构错误或外部信息(例如数据文件)访问错误?4、性能上是否能够满足要求?5、是否有初始化或终止性错误?软件的白盒测试是对软件的过程性细节做细致的检查。
这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。
因此白盒测试又称为结构测试或逻辑驱动测试。
白盒测试主要是想对程序模块进行如下检查:1、对程序模块的所有独立的执行路径至少测试一遍。
2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
3、在循环的边界和运行的界限内执行循环体。
4、测试内部数据结构的有效性,等等。
以上事实说明,软件测试有一个致命的缺陷,即测试的不完全、不彻底性。
由于任何程序只能进行少量(相对于穷举的巨大数量而言)的有限的测试,在未发现错误时,不能说明程序中没有错误。
白盒测试白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。
一、软件测试的定义软件测试是一个过程或一系列过程,用来确认计算机代码完成了其应该完成的功能,不执行其不该有的操作。
1.软件测试与调试的区别?(1)测试是为了发现软件中存在的错误;调试是为证明软件开发的正确性。
(2)测试以已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序是否通过测试;调试一般是以不可知的内部条件开始,除统计性调试外,结果是不可预见的。
(3)测试是有计划的,需要进行测试设计;调试是不受时间约束的。
(4)测试经历发现错误、改正错误、重新测试的过程;调试是一个推理过程。
(5)测试的执行是有规程的;调试的执行往往要求开发人员进行必要推理以至知觉的"飞跃"。
(6)测试经常是由独立的测试组在不了解软件设计的条件下完成的;调试必须由了解详细设计的开发人员完成。
(7)大多数测试的执行和设计可以由工具支持;调式时,开发人员能利用的工具主要是调试器。
2.对软件测试的理解?软件测试就是说要去根据客户的要求完善它.即要把这个软件还没有符合的或者是和客户要求不一样的,或者是客户要求还没有完全达到要求的部分找出来。
(1)首先要锻炼自己软件测试能力,包括需求的分析能力,提取能力,逻辑化思想能力,即就是给你一个系统的时候,能够把整个业务流程很清晰的理出。
(2)学习测试理论知识并与你锻炼的能力相结合。
(3)想和做。
想就是说你看到任何的系统都要有习惯性的思考;做就是把实际去做练习,然后提取经验。
总结测试用例,测试计划固然重要,但能力和思想一旦到位了,才能成为一名合格的软件测试工程师。
二、软件测试的分类1.按照测试技术划分(1)白盒测试:通过对程序内部结构的分析、检测来寻找问题。
检查是否所有的结构及逻辑都是正确的,检查软件内部动作是否按照设计说明的规定正常进行。
--结构测试(2)黑盒测试:通过软件的外部表现来发现错误,是在程序界面处进行测试,只是检查是否按照需求规格说明书的规定正常实现。
详解黑盒、白盒、灰盒测试1. 黑盒测试黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。
“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。
“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。
实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。
2. 白盒测试白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
“白盒”法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
但即使每条路径都测试了仍然可能有错误。
第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。
第二,穷举路径测试不可能查出程序中因遗漏路径而出错。
第三,穷举路径测试可能发现不了一些与数据相关的错误。
3. 灰盒测试灰盒测试,确实是介于二者之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。
实验六白盒测试技术1 实验要求与目的●了解白盒测试技术的原理;●熟悉常用的白盒测试技术;●掌握逻辑覆盖的不同标准及原理,能够设计测试用例;2 实验原理与背景知识2.1 白盒测试白盒测试也称结构测试或逻辑驱动测试,它按照程Array序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。
它关注软件产品的内部细节和逻辑结构,即把被测的程序看成是一个透明的盒子,如图1所示白盒测试通常可分为静态测试和动态测试两类方法,其中静态测试不要求实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而动态测试是通过输入一组预先按照一定的测试准则构造的实例图1 白盒测试示意图数据来动态运行程序,从而达到发现程序错误的过程。
白盒测试的测试方法有代码检查法、静态结构分析法、逻辑覆盖法、基本路径测试法、域测试法、符号测试法、数据流测试法、Z路径覆盖法、程序变异法等等。
2.2 代码检查法代码检查是静态测试的主要方法,包括代码走查、桌面检查、流程图审查等。
代码检查主要检查代码和设计意图的一致性、代码结构的合理性、代码编写的标准性和可读性、代码逻辑表达的正确性等方面,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。
代码检查应该在编译和动态测试之前进行,在检查前,应该准备好需求文档、程序设计文档、程序的源代码清单、代码编写标准和代码缺陷(错误)检查表。
在实际使用中,代码检查法能够快速找到缺陷,发现30%到70%的逻辑设计和编码缺陷,而且代码检查法看到的是问题本身而非征兆。
但是代码检查法非常耗费时间,并且需要经验和知识的积累。
代码检查法可以使用人工测试,也可以使用测试软件进行自动化测试。
2.3 静态结构分析法静态结构分析是指测试者通过使用测试工具分析程序源代码的系统结构、数据结构、数据结构、内部控制逻辑等内部结构,生成函数调用关系图、模块控制流图、内部文件调用关系图等各种图形和图表,清晰得标识整个软件的组成结构,通过分析这些图表,检查软件是否存在缺陷或错误。
白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。 概述 采用什么方法对软件进行测试呢?常用的软件测试方法有两大类:静态测试方法和动态测试方法。其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。 白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、Z路径覆盖、程序变异。 白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。 六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。语句覆盖每条语句至少执行一次。判定覆盖每个判定的每个分支至少执行一次。条件覆盖每个判定的每个条件应取到各种可能的值。判定/条件覆盖同时满足判定覆盖条件覆盖。条件组合覆盖每个判定中各条件的每一种组合至少出现一次。路径覆盖使程序中每一条可能的路径至少执行一次。 "白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。 白盒测试,有时称为玻璃盒测试,是一种测试用例设计方法,它使用程序设计的控制结构导出测试用例。使用白盒测试方法,软件工程师能够产生 测试用例 (1)保证一个模块中的所有独立路径至少被使用一次; (2)对所有逻辑值均需测试true和false; (3)在上下边界及可操作范围内运行所有循环; (4)检查内部数据结构以确保其有效性。 如何挑选工具 白盒测试 白盒测试目前主要用在具有高可靠性要求的软件领域,例如:军工软件、航天航空软件、工业控制软件等等。白盒测试工具在选购时应当主要是对开发语言的支持、代码覆盖的深度、嵌入式软件的测试、测试的可视化等。 对开发语言的支持 白盒测试工具是对源代码进行的测试,测试的主要内容包括词法分析与语法分析、静态错误分析、动态检测等。但是对于不同的开发语言,测试工具实现的方式和内容差别是较大的。目前测试工具主要支持的开发语言包括:标准C、C++、VisualC++、Java、VisualJ++等。 代码的覆盖深度 从覆盖源程序语句的详尽程度分析,逻辑覆盖标准包括以下不同的覆盖标准:语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖和修正判定条件覆盖。 语句覆盖为了暴露程序中的错误,程序中的每条语句至少应该执行一次。因此语句覆盖(StatementCoverage)的含义是:选择足够多的测试数据,使被测程序中每条语句至少执行一次。语句覆盖是很弱的逻辑覆盖。 ·判定覆盖比语句覆盖稍强的覆盖标准是判定覆盖(DecisionCoverage)。判定覆盖的含义是:设计足够的测试用例,使得程序中的每个判定至少都获得一次―真值‖或―假值‖,或者说使得程序中的每一个取―真‖分支和取―假‖分支至少经历一次,因此判定覆盖又称为分支覆盖。 ·条件覆盖在设计程序中,一个判定语句是由多个条件组合而成的复合判定。为了更彻底地实现逻辑覆盖,可以采用条件覆盖(ConditionCoverage)的标准。条件覆盖的含义是:构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次。 ·多条件覆盖多条件覆盖也称条件组合覆盖,它的含义是:设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。显然满足多条件覆盖的测试用例是一定满足判定覆盖、条件覆盖和条件判定组合覆盖的。 ·修正条件判定覆盖修正条件判定覆盖是由欧美的航空/航天制造厂商和使用单位联合制定的―航空运输和装备系统软件认证标准‖,目前在国外的国防、航空航天领域应用广泛。这个覆盖度量需要足够的测试用例来确定各个条件能够影响到包含的判定的结果。它要求满足两个条件:首先,每一个程序模块的入口和出口点都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次;其次,程序的判定被分解为通过逻辑操作符(and、or)连接的布尔条件,每个条件对于判定的结果值是独立的。 不同的测试工具对于代码的覆盖能力也是不同的,通常能够支持修正条件判定覆盖的测试工具价格是极其昂贵的。 嵌入式软件的测试 对于嵌入式软件的测试,我们还需要一方面进一步考虑测试工具对于嵌入式操作系统的支持能力,例如DOS、Vxworks、Neculeus、Linux和WindowsCE等;另一方面还需要考虑测试工具对于硬件平台的支持能力,包括是否支持所有64/32/16位CPU和MCU,是否可以支持PCI/VME/CPCI总线。 测试的可视化 白盒测试是工作量巨大并且枯燥的工作,可视化的设计对于测试来说是十分重要的。在选购白盒测试工具时,应当考虑该款测试工具的可视化是否良好,例如:测试过程中是否可以显示覆盖率的函数分布图和上升趋势图,是否使用不同的颜色区分已执行和未执行的代码段显示分配内存情况实时图表等,这些对于测试效率和测试质量的提高是具有很大的作用的。 基本路径测试法 白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、Z路径覆盖、程序变异。 其中运用最为广泛的是基本路径测试法。 简介 基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。 设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。 在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。包括以下4个步骤和一个工具方法: 1.程序的控制流图:描述程序控制流的一种图示方法。 2.程序圈复杂度:McCabe复杂性度量。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。 3.导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果。 4.准备测试用例:确保基本路径集中的每一条路径的执行。 工具方法 图形矩阵:是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个基本路径集。 程序的控制流图:描述程序控制流的一种图示方法。 圆圈称为控制流图的一个结点,表示一个或多个无分支的语句或源程序语句流图只有二种图形符号: 图中的每一个圆称为流图的结点,代表一条或多条语句。 流图中的箭头称为边或连接,代表控制流 任何过程设计都要被翻译成控制流图。 如何根据程序流程图画出控制流程图? 在将程序流程图简化成控制流图时,应注意:在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。 边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。 步骤 基本路径测试法的步骤: 第一步:画出控制流图流程图用来描述程序控制结构。可将流程图映射到一个相应的流图(假设流程图的菱形决定框中不包含复合条件)。在流图中,每一个圆,称为流图的结点,代表一个或多个语句。一个处理方框序列和一个菱形决测框可被映射为一个结点,流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。一条边必须终止于一个结点,即使该结点并不代表任何语句(例如:if-else-then结构)。由边和结点限定的范围称为区域。计算区域时应包括图外部的范围。 第二步:计算圈复杂度圈复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为确保所有语句至少执行一次的测试数量的上界。独立路径必须包含一条在定义之前不曾用到的边。有以下三种方法计算圈复杂度:流图中区域的数量对应于环型的复杂性; 给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。 第三步:导出测试用例 根据上面的计算方法,可得出四个独立的路径。(一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。V(G)值正好等于该程序的独立路径的条数。) 路径1:4-14 路径2:4-6-7-14 路径3:4-6-8-10-13-4-14 路径4:4-6-8-11-13-4-14根据上面的独立路径,去设计输入数据,使程序分别执行到上面四条路径。 三步法 1)根据代码的功能,人工设计测试用例进行基本功能测试; 2)统计白盒覆盖率,为未覆盖的白盒单位设计测试用例,实现完整的白盒覆盖,比较理想的覆盖率是实现100%语句、条件、分支、路径覆盖; 3)自动生成大量的测试用例,捕捉"程序员未处理某些特殊输入"形成的错误。 第1步的测试用例通常是现成的,因为详细设计文档会规定程序的基本功能,没有文档的,程序员在编程时也要想清楚程序的功能,这些基本功能就是基本测试用例; 第2步是在第1步的基础上,检查未覆盖的白盒单位,由于未覆盖的逻辑单位通常对应未测试的等价类,因此第2步可以找出第1步所遗漏的测试用例; 第3步用自动动态测试弥补第2步的固有缺陷。"三步法"尽量避免重复工作,白盒方法和黑盒方法相结合,人工方法和自动方法相补充,如果第2步的覆盖率比较理想,那么基本上可以保证找出所有等价类。在开发过程允许的限度内,"三步法"已接近极限,当得起"彻