如何进行白盒测试
测试人员的白盒测试技巧与方法

测试人员的白盒测试技巧与方法白盒测试是软件测试中常用的一种方法,通过对软件内部结构和代码的分析来进行测试。
相对于黑盒测试而言,白盒测试更注重内部的逻辑测试和代码覆盖率,可以更全面地检查软件的质量。
在软件开发的过程中,如何进行高效和准确的白盒测试成为了测试人员关注的重点。
本文将介绍一些测试人员在进行白盒测试时的技巧和方法。
一、静态代码分析静态代码分析是白盒测试的重要手段之一,通过对软件源代码进行分析,找出可能的潜在缺陷和问题。
在进行静态代码分析时,测试人员需要仔细阅读代码,查找常见的编码错误、逻辑错误和安全隐患等。
同时,可以利用专门的静态代码分析工具来辅助检查代码的质量,如Coverity、Lint等。
通过静态代码分析,可以及早发现并解决潜在的问题,提高软件的稳定性和安全性。
二、单元测试单元测试是白盒测试中的一个重要环节,通过对软件的每个模块进行独立测试,检查其功能是否符合设计和需求。
在进行单元测试时,测试人员需要编写具体的测试用例,并针对每个测试用例执行相应的测试。
通过单元测试,可以尽早地发现代码中的问题,减少后期修复的成本。
同时,单元测试还可以为代码的重构和优化提供支持,保证软件的质量和可维护性。
三、路径覆盖路径覆盖是白盒测试中的一项关键任务,通过测试用例执行程序中各个路径,确保软件的每条路径都得到覆盖。
在进行路径覆盖测试时,测试人员需要分析程序的结构,找出可能的路径和分支,设计相应的测试用例。
通过路径覆盖测试,可以增加测试的覆盖率,提高测试的准确性和全面性。
四、决策覆盖决策覆盖是白盒测试中的一种技巧,通过设计测试用例,确保程序中的每个逻辑决策都至少执行一次。
在进行决策覆盖测试时,测试人员需要仔细分析程序中的逻辑,找出所有可能的决策点,并设计相应的测试用例。
通过决策覆盖测试,可以验证程序在不同的逻辑决策下的行为,减少潜在的错误和风险。
五、边界值分析边界值分析是白盒测试中常用的一种技巧,通过选取各个边界条件进行测试,检查程序在边界值附近的行为。
白盒测试的异常输入测试如何测试代码对异常输入的处理

白盒测试的异常输入测试如何测试代码对异常输入的处理异常输入测试是白盒测试中的一个重要部分,用于测试代码对各种异常输入的处理能力。
异常输入的测试是为了模拟和验证代码在处理非预期输入时的表现和响应机制。
本文将介绍异常输入测试的基本概念、测试技巧和步骤。
一、异常输入测试的概念异常输入测试是指对代码系统的输入进行非预期的输入数据,以验证代码对异常情况的处理能力。
通过异常输入测试,可以发现代码在面对非预期输入时是否能够产生正确的输出,是否能够有效地防止因异常输入而引发的系统崩溃、漏洞等问题。
二、异常输入测试的技巧1. 边界值测试:通过输入数据的边界情况进行测试,例如最小值、最大值、临界值等,以验证代码在处理边界情况时的准确性和鲁棒性。
2. 错误输入测试:通过输入一些错误、非法的数据进行测试,例如输入特殊字符、非数字等,以验证代码在处理错误输入时的反应。
3. 异常情况测试:通过输入一些异常情况下的数据进行测试,例如输入空值、NULL值等,以验证代码在处理异常情况时的处理能力。
4. 异常组合测试:通过组合多种异常情况下的数据进行测试,例如同时输入非法字符和空值等,以验证代码在处理多种异常情况时的鲁棒性。
三、异常输入测试的步骤1. 确定异常输入:首先,根据需求和预期的异常情况,确定测试所需的异常输入数据。
2. 设计测试用例:根据异常输入数据,设计针对每种异常情况的测试用例。
3. 执行测试用例:按照设计的测试用例,执行测试过程,并记录测试结果。
4. 分析测试结果:根据测试结果,分析代码在处理异常输入时的表现和反应。
5. 修改和优化代码:根据测试结果的分析,对代码进行修改和优化,以提高代码的异常输入处理能力。
四、案例分析以某手机应用输入密码为例,测试代码对异常输入的处理。
假设密码长度应该在6到12位之间。
在异常输入测试中,可以设计以下测试用例:1. 输入密码长度小于6位的情况。
期望结果:系统应该提示密码长度过短。
执行结果:系统正确提示密码长度过短。
(完整版)黑盒测试和白盒测试

白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作.这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
采用什么方法对软件进行测试呢?常用的软件测试方法有两大类:静态测试方法和动态测试方法。
其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。
白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、Z路径覆盖、程序变异.白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试.其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。
语句覆盖每条语句至少执行一次。
判定覆盖每个判定的每个分支至少执行一次。
条件覆盖每个判定的每个条件应取到各种可能的值.判定/条件覆盖同时满足判定覆盖条件覆盖。
条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
路径覆盖使程序中每一条可能的路径至少执行一次。
”白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
”白盒”法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据.贯穿程序的独立路径数是天文数字.但即使每条路径都测试了仍然可能有错误。
第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。
如何进行白盒测试一步步教你实践

如何进行白盒测试一步步教你实践白盒测试(White Box Testing),也被称为结构化测试、透明盒测试或逻辑驱动测试,是软件测试中常用的一种测试方法。
相对于黑盒测试而言,白盒测试主要关注软件内部的结构、逻辑和代码覆盖率,以验证程序的正确性和可靠性。
本文将详细介绍如何进行白盒测试,以及一些实践的经验和技巧。
一、确定测试目标在进行白盒测试之前,首先需要明确测试的目标。
根据具体的软件项目,确定需要测试的功能模块、代码段或者算法等。
分析需求文档或者源代码,理解软件的内部逻辑和结构。
二、分析源代码为了进行有效的白盒测试,需要深入了解软件的源代码。
首先,阅读并理解源代码的结构和逻辑。
通过代码注释、函数名和变量名等,了解每个函数或者模块的功能。
然后,分析代码的覆盖率和关键路径,找出可能存在的逻辑错误或者漏洞。
三、制定测试用例在了解源代码的基础上,制定合适的测试用例进行白盒测试。
测试用例应该包括正常情况下的输入和预期输出,以及常见的异常情况和边界条件。
测试用例需要覆盖代码的不同分支和路径,以最大限度地提高代码覆盖率。
四、编写测试代码根据制定的测试用例,编写相应的测试代码。
测试代码可以使用编程语言编写,根据测试用例的输入数据和预期输出,调用相应的函数或者模块进行测试。
测试代码的编写需要遵循良好的编码规范,保证测试的准确性和可维护性。
五、执行白盒测试在编写好测试代码之后,就可以执行白盒测试了。
通过运行测试代码,检查实际输出是否与预期输出一致。
同时,还可以通过调试工具和日志分析工具,辅助进行错误定位和问题跟踪。
在执行白盒测试的过程中,需要记录测试结果和日志,以便分析和总结。
六、分析测试结果分析白盒测试的结果,找出测试中发现的问题和潜在的风险。
对于出现的错误或者异常,进行详细的排查和调试。
同时,还可以根据测试结果,优化代码的结构和逻辑,提高软件的质量和性能。
七、修复问题和重新测试根据白盒测试的分析结果,对发现的问题进行修复。
白盒测试的主要有以下哪些步骤

白盒测试的主要步骤白盒测试是软件开发过程中的一种测试方法,通过查看和分析软件的内部结构和代码来评估其质量。
在进行白盒测试时,测试人员需要按照一系列步骤来完成这个过程,以确保软件系统的功能和性能符合预期。
下面是白盒测试的主要步骤:1. 确定测试的目标和范围在进行白盒测试之前,首先需要明确测试的目标和范围。
测试人员需要了解要测试的软件系统的功能和特性,并确定需要覆盖的代码范围和测试重点。
2. 分析需求和设计文档测试人员需要仔细分析软件系统的需求和设计文档,以了解系统的架构和功能。
这有助于测试人员确定哪些部分需要进行测试以及如何设计测试用例。
3. 编写测试用例根据需求和设计文档,测试人员编写白盒测试用例。
测试用例应涵盖不同的代码路径和边界条件,以确保软件系统的每个功能都得到充分测试。
4. 执行测试用例测试人员执行编写的测试用例,同时记录测试结果。
在执行测试用例的过程中,需要验证软件系统的功能是否按照需求文档的规范工作,同时检查是否存在潜在的缺陷和问题。
5. 分析测试结果一旦测试完成,测试人员需要分析测试结果并检查是否存在失败的测试用例。
通过分析测试结果,可以确定软件系统的稳定性和质量,并识别需要改进的地方。
6. 跟踪和修复缺陷测试人员应该跟踪所有发现的缺陷,并确保这些缺陷得到及时修复。
跟踪缺陷的过程可以协助开发团队更好地理解和解决问题,提高软件系统的质量。
结语白盒测试是软件开发过程中必不可少的一环,通过深入了解和分析软件系统的内部结构来确保其质量和可靠性。
遵循上述步骤可以帮助测试人员高效地完成白盒测试,并为软件系统的发布提供有力的支持。
如何编写有效的白盒测试用例

如何编写有效的白盒测试用例编写有效的白盒测试用例是软件开发过程中至关重要的一部分。
白盒测试是一种测试方法,旨在检查软件的内部结构和功能。
通过设计和执行有效的白盒测试用例,可以发现潜在的缺陷,并提高软件的质量和可靠性。
本文将介绍如何编写有效的白盒测试用例,以帮助开发人员和测试人员提高测试效率和测试覆盖率。
一、了解被测软件的内部结构在编写白盒测试用例之前,首先需要深入了解被测软件的内部结构。
这包括了解软件的架构、模块和数据流等相关信息。
通过分析软件的内部结构,可以帮助我们确定需要重点测试的区域和功能,并指导我们在设计测试用例时的思路。
二、确定测试目标和测试策略在编写白盒测试用例之前,需要明确测试的目标和测试策略。
测试目标是指我们希望达到的测试效果,例如发现软件的缺陷、验证特定功能的正确性等。
测试策略是指我们选择的测试方法和技巧,以及测试用例设计的原则和规范。
确定清晰的测试目标和测试策略可以帮助我们编写更加有针对性和有效性的测试用例。
三、设计测试用例在设计白盒测试用例时,需要考虑以下几个方面:1.路径覆盖:白盒测试的一个重要目标是覆盖软件内部代码的不同执行路径。
根据软件的控制流图,设计测试用例,以确保每个代码分支和判断都能够被测试到。
2.边界条件:边界条件测试是一种有效的测试方法,可以发现输入值在边界值附近的错误。
在设计测试用例时,需要重点关注边界条件,并设计相应的测试用例来覆盖这些边界值。
3.异常处理:在设计测试用例时,需要测试软件对异常情况的处理能力。
这包括输入无效值、超出范围的值或错误的格式等。
通过设计异常情况的测试用例,可以发现软件在异常情况下的行为和响应是否符合预期。
4.数据流测试:数据流测试是一种有效的测试方法,可以检查软件在数据传输和转换过程中是否存在错误。
在设计测试用例时,需要关注数据流的输入、输出和变化,测试数据的准确性和一致性。
四、执行测试用例并记录测试结果设计和编写完测试用例后,需要执行这些测试用例,并记录测试结果。
如何进行白盒测试技巧和步骤解析
如何进行白盒测试技巧和步骤解析白盒测试是软件测试中的一种重要测试方法,用于测试软件内部的结构、逻辑和代码。
通过白盒测试,测试人员可以深入了解软件的内部机制和实现细节,并通过技巧和步骤进行测试,以保证软件的质量和稳定性。
下面将介绍如何进行白盒测试的技巧和步骤解析。
一、了解软件结构和代码在进行白盒测试之前,首先需要对软件的结构和代码进行深入了解。
这包括阅读和分析软件设计文档、源代码和相关文档,熟悉软件的功能、模块和算法等。
通过深入了解软件的内部机制,可以有针对性地进行测试,提高测试的效果和覆盖率。
二、确定测试覆盖范围在进行白盒测试时,需要确定测试的覆盖范围。
根据软件的结构和代码,确定需要测试的模块、函数和代码段等。
可以通过结构化测试方法,如基本路径测试、控制流测试和数据流测试等,来确定测试的覆盖范围。
通过确定测试的覆盖范围,可以提高测试的有效性和效率。
三、设计测试用例在进行白盒测试时,需要设计合适的测试用例。
根据软件的结构和代码,设计测试用例,覆盖各种情况和路径。
可以使用黑盒测试的思想,设计输入数据和预期输出,同时结合软件的内部机制,设计特殊测试用例。
可以使用边界值测试、错误处理测试和异常测试等技巧,设计全面有效的测试用例。
四、编写测试代码在进行白盒测试时,需要编写测试代码。
根据设计的测试用例,编写测试代码,检查软件的运行结果和输出是否符合预期。
可以使用各种编程语言和工具,编写测试代码并执行测试。
通过编写测试代码,可以自动化执行测试,提高测试的效率和一致性。
五、执行测试并记录结果在进行白盒测试时,需要执行测试并记录测试结果。
根据设计的测试用例,执行测试代码,记录测试的运行结果和输出。
可以使用测试工具和框架,帮助执行和管理测试,并生成测试报告和日志。
通过执行测试并记录结果,可以对软件的质量和稳定性进行评估和改进。
六、分析测试结果和修复缺陷在进行白盒测试之后,需要分析测试结果并修复缺陷。
根据测试的运行结果和输出,分析软件存在的问题和缺陷,并进行修复。
如何编写单元测试用例(白盒测试)
如何编写单元测试用例(白盒测试)。
一、 单元测试的概念单元通俗的说就是指一个实现简单功能的函数。
单元测试就是只用一组特定的输入(测试用例)测试函数是否功能正常,并且返回了正确的输出。
测试的覆盖种类1.语句覆盖:语句覆盖就是设计若干个测试用例,运行被测试程序,使得每一条可执行语句至少执行一次。
2.判定覆盖(也叫分支覆盖):设计若干个测试用例,运行所测程序,使程序中每个判断的取真分支和取假分支至少执行一次。
3.条件覆盖:设计足够的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次。
4.判定——条件覆盖:设计足够的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次,并且每个可能的判断结果也至少执行一次。
5.条件组合测试:设计足够的测试用例,运行所测程序,使程序中每个判断的所有条件取值组合至少执行一次。
6.路径测试:设计足够的测试用例,运行所测程序,要覆盖程序中所有可能的路径。
用例的设计方案主要的有下面几种:条件测试,基本路径测试,循环测试。
通过上面的方法可以实现测试用例对程序的逻辑覆盖,和路径覆盖。
二、开始测试前的准备在开始测试时,要先声明一下,无论你设计多少测试用例,无论你的测试方案多么完美,都不可能完全100%的发现所有BUG,我们所需要做的是用最少的资源,做最多测试检查,寻找一个平衡点保证程序的正确性。
穷举测试是不可能的。
所以现在进行单元测试我选用的是现在一般用的比较多的基本路径测试法。
三、开始测试基本路径测试法:设计出的测试用例要保证每一个基本独立路径至少要执行一次。
函数说明 :当i_flag=0;返回 i_count+100当i_flag=1;返回 i_count *10否则返回 i_count *20输入参数:int i_count ,int i_flag输出参数: int i_return;代码:int i_flag)i_count, int1 int Test(int i_count,2 {3 intint i_temp = 1;while (i_count>0)4 while5 {6 if if (0 == i_flag)7 {8 i_temp = i_count + 100;break;9 break10 }11 elseelse12 {13 if if (1 == i_flag)14 {15 i_temp = i_temp * 10;16 }else17 else18 {19 i_temp = i_temp * 20;20 }21 }22 i_count--;23 }return i_temp;24 return25 }1.画出程序控制流程图图例:事例程序流程图:圈中的数字代表的是语句的行号,也许有人问为什么选4,6,13,8......作为结点,第2行,第3行为什么不是结点,因为选择结点是有规律的。
白盒测试主要采用什么方法
白盒测试主要采用的方法
在软件测试领域中,白盒测试是一种对系统内部结构和逻辑进行检查的测试方法,它旨在验证软件代码的正确性和完整性。
为了有效地进行白盒测试,测试人员通常会采用以下几种主要方法:
1. 代码覆盖测试
代码覆盖测试是通过执行测试用例来测量被执行的代码行的比例。
常见的代码
覆盖测试包括语句覆盖、分支覆盖、路径覆盖等。
通过对代码进行全面的覆盖测试,可以确保每个代码路径都经过测试,提高代码的稳定性和可靠性。
2. 数据流分析
数据流分析是一种静态分析技术,用于检测代码中的数据流动。
通过分析程序
中变量的定义和使用情况,可以发现潜在的数据流问题,如未初始化变量、数据依赖关系等。
数据流分析能够帮助测试人员找出潜在的程序错误,提高代码质量。
3. 控制流分析
控制流分析是一种静态分析方法,用于分析程序执行过程中的控制流转移关系。
通过对程序的控制流图进行分析,可以找出潜在的控制流问题,如死循环、逻辑错误等。
控制流分析有助于提高代码的可读性和可维护性。
4. 静态代码分析
静态代码分析是一种通过审查源代码来发现潜在问题的方法。
通过分析代码的
结构、语法和语义,可以提前发现代码中的错误和不规范之处。
静态代码分析可以帮助测试人员在代码编写阶段就发现问题,提高代码的质量和稳定性。
结论
综上所述,白盒测试主要采用代码覆盖测试、数据流分析、控制流分析和静态
代码分析等方法来验证软件代码的正确性和完整性。
通过使用这些方法,测试人员可以全面而有效地测试软件系统,提高软件的质量和可靠性。
白盒测试基本方法有哪些
白盒测试基本方法有哪些白盒测试是软件测试的一种,其目的是验证软件系统的内部代码结构和逻辑是否正确。
在进行白盒测试时,测试人员需要了解软件系统的内部工作原理和代码实现细节。
下面将介绍一些常用的白盒测试方法:1. 代码覆盖率测试代码覆盖率测试是一种常用的白盒测试方法,通过分析测试用例对代码执行路径的覆盖情况来评估测试的完整性。
常见的代码覆盖率包括语句覆盖、分支覆盖、条件覆盖和路径覆盖等。
2. 数据流分析数据流分析是一种检查程序中数据传递和处理路径的方法。
通过对程序中每一个变量的定义、赋值、使用等情况进行分析,可以发现潜在的数据流问题,如未初始化变量、数据依赖关系等。
3. 控制流分析控制流分析是一种检查程序中控制流程的方法。
通过分析程序中的条件语句、循环结构等,可以发现潜在的逻辑错误和边界条件问题。
4. 静态代码分析静态代码分析是一种在不运行程序的情况下对代码进行审查的方法。
通过静态代码分析工具,可以检测代码中的潜在问题,如死代码、内存泄漏、资源泄漏等。
5. 单元测试单元测试是一种对程序中最小单元进行测试的方法。
通过编写单元测试用例,可以验证每个模块的功能是否正确,提高代码的质量和可维护性。
6. 集成测试集成测试是一种对不同模块之间集成和交互进行测试的方法。
通过集成测试,可以验证整个系统的功能是否正确,发现模块之间的接口问题和数据传递问题。
通过以上介绍,可以看出白盒测试方法多样且全面,测试人员可以根据具体项目需求和情况选择合适的方法来确保软件质量。
在进行白盒测试时,需要结合不同方法以获取更全面的测试覆盖和更准确的测试结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要:单元测试是软件测试的基础,本文详细的论述了单元测试的两个步骤人工静态检查法与动态执行跟踪法,所需执行的工作项目及相关的策略和方法。
通过对这两个步骤的描述作者将多年的单元测试经验及测试理论注入于全文。
关键词:单元测试、人工检查、白盒测试、测试用例、跟踪调试1 概述单元测试是针对软件设计的最小单位——程序模块,进行正确性检验的测试工作。
其目的在于发现每个程序模块内部可能存在的差错。
单元测试也是程序员的一项基本职责,程序员必须对自己所编写的代码保持认真负责的态度,这是也程序员的基本职业素质之一。
同时单元测试能力也是程序员的一项基本能力,能力的高低直接影响到程序员的工作效率与软件的质量。
在编码的过程中作单元测试,其花费是最小的,而回报却特别优厚的。
在编码的过程中考虑测试问题,得到的将是更优质的代码,因为在这时您对代码应该做些什么了解得最清楚。
如果不这样做,而是一直等到某个模块崩溃了,到那时您可能已经忘记了代码是怎样工作的。
即使是在强大的工作压力下,您也还必须重新把它弄清楚,这又要花费许多时间。
进一步说,这样做出的更正往往不会那么彻底,可能更脆弱,因为您唤回的理解可能不那么完全。
通常合格的代码应该具备以下性质:正确性、清晰性、规范性、一致性、高效性等(根据优先级别排序)。
1. 正确性是指代码逻辑必须正确,能够实现预期的功能。
2. 清晰性是指代码必须简明、易懂,注释准确没有歧义。
3. 规范性是指代码必须符合企业或部门所定义的共同规范包括命名规则,代码风格等等。
4. 一致性是指代码必须在命名上(如:相同功能的变量尽量采用相同的标示符)、风格上都保持统一。
5. 高效性是指代码不但要满足以上性质,而且需要尽可能降低代码的执行时间。
2 单元测试步骤在代码编写完成后的单元测试工作主要分为两个步骤人工静态检查和动态执行跟踪。
人工静态检查是测试的第一步,这个阶段工作主要是保证代码算法的逻辑正确性(尽量通过人工检查发现代码的逻辑错误)、清晰性、规范性、一致性、算法高效性。
并尽可能的发现程序中没有发现的错误。
第二步是通过设计测试用例,执行待测程序来跟踪比较实际结果与预期结果来发现错误。
经验表明,使用人工静态检查法能够有效的发现30%到70%的逻辑设计和编码错误。
但是代码中仍会有大量的隐性错误无法通过视觉检查发现,必须通过跟踪调试法细心分析才能够捕捉到。
所以,动态跟踪调试方法也成了单元测试的重点与难点。
3 人工检查通常在人工检查阶段必须执行以下项目的活动:第一、检查算法的逻辑正确性;确定所编写的代码算法、数据结构定义(如:队列、堆栈等)是否实现了模块或方法所要求的功能。
第二、模块接口的正确性检查;确定形式参数个数、数据类型、顺序是否正确;确定返回值类型及返回值的正确性。
第三、输入参数有没有作正确性检查;如果没有作正确性检查,确定该参数是否的确无需做参数正确性检查,否则请添加上参数的正确性检查。
经验表明,缺少参数正确性检查的代码是造成软件系统不稳定的主要原因之一。
第四、调用其他方法接口的正确性;检查实参类型正确与否、传入的参数值正确与否、个数正确与否,特别是具有多态的方法。
返回值正确与否,有没有误解返回值所表示的意思。
最好对每个被调用的方法的返回值用显湿代码作正确性检查,如果被调用方法出现异常或错误程序应该给予反馈,并添加适当的出错处理代码。
第五、出错处理;模块代码要求能预见出错的条件,并设置适当的出错处理,以便在一旦程序出错时,能对出错程序重做安排,保证其逻辑的正确性,这种出错处理应当是模块功能的一部分。
若出现下列情况之一,则表明模块的错误处理功能包含有错误或缺陷:出错的描述难以理解;出错的描述不足以对错误定位,不足以确定出错的原因;显示的错误信息与实际的错误原因不符;对错误条件的处理不正确;在对错误进行处理之前,错误条件已经引起系统的干预等。
第六、保证表达式、SQL语句的正确性;检查所编写的SQL语句的语法、逻辑的正确性。
对表达式应该保证不含二义性,对于容易产生歧义的表达式或运算符优先级(如:《、=、》、&&、||、++、--等)可以采用扩号“()”运算符避免二义性,这样一方面能够保证代码的正确可靠,同时也能够提高代码的可读性。
第七、检查常量或全局变量使用的正确性;确定所使用的常量或全局变量的取值和数值、数据类型;保证常量每次引用同它的取值、数值和类型的一致性。
第八、表示符定义的规范一致性;保证变量命名能够见名知意,并且简洁但不宜过长或过短、规范、容易记忆、最好能够拼读。
并尽量保证用相同的表示符代表相同功能,不要将不同的功能用相同的表示符表示;更不要用相同的表示符代表不同的功能意义。
第九、程序风格的一致性、规范性;代码必须能保证符合企业规范,保证所有成员的代码风格一致、规范、工整。
例如对数组做循环,不要一会儿采用下标变量从下到上的方式(如:for(I=0;I++;I<10)),一会儿又采用从上到下的方式(如:for(I=10;I--;I>0));应该尽量采用统一的方式,或则统一从下到上,或则统一从上到下。
建议采用for循环和While循环,不要采用do{}while循环等。
第十、检查程序中使用到的神秘数字是否采用了表示符定义。
神秘的数字包括各种常数、数组的大小、字符位置、变换因子以及程序中出现的其他以文字形式写出的数值。
在程序源代码里,一个具有原本形式的数对其本身的重要性或作用没提供任何指示性信息,它们也导致程序难以理解和修改。
对于这类神秘数字必须采用相应的标量来表示;如果该数字在整个系统中都可能使用到务必将它定义为全局常量;如果该神秘数字在一个类中使用可将其定义为类的属性(Attribute),如果该神秘数字只在一个方法中出现务必将其定义为局部变量或常量。
第十一、检查代码是否可以优化、算法效率是否最高。
如:SQL语句是否可以优化,是否可以用1条SQL语句代替程序中的多条SQL语句的功能,循环是否必要,循环中的语句是否可以抽出到循环之外等。
第十二、检查您的程序是否清晰简洁容易理解。
注意:冗长的程序并不一定不是清晰的。
第十三、检查方法内部注释是否完整;是否清晰简洁;是否正确的反映了代码的功能,错误的注释比没有注释更糟;是否做了多余的注释;对于简单的一看就懂的代码没有必要注释。
第十四、检查注释文档是否完整;对包、类、属性、方法功能、参数、返回值的注释是否正确且容易理解;是否会落了或多了某个参数的注释,参数类型是否正确,参数的限定值是否正确。
特别是对于形式参数与返回值中关于神秘数值的注释,如:类型参数应该指出1.代表什么,2.代表什么,3.代表什么等。
对于返回结果集(Result Set)的注释,应该注释结果集中包含那些字段及字段类型、字段顺序等。
4 动态执行跟踪动态执行测试通常分为黑盒测试与白盒测试。
黑盒测试指已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
白盒测试指已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格的要求,所有内部成分是否已经经过检查。
对于单元测试来说主要应该采用白盒测试法对每个模块的内部作跟踪检查测试。
对于单元白盒测试,应该对程序模块进行如下检查:1. 对模块内所有独立的执行路径至少测试一次;2. 对所有的逻辑判定,取“真”与“假”的两种情况都至少执行一次;3. 在循环的边界和运行界限内执行循环体;4. 测试内部数据的有效性等等。
单元白盒跟踪测试,通常需要做如下三项工作:1. 设计测试用例;2. 设计测试类模块;3. 跟踪调试。
4.1 测试用例设计通常动态执行跟踪调试是在编码阶段进行的。
在对源程序作静态人工检查之后就可以开始进行单元测试的测试用例设计。
利用设计文档,设计可以验证程序功能、找出程序错误的多个测试用例。
4.1.1 测试用例的设计基本原则设计测试用例基本的原则是:1. 一个好的测试用例在于能够发现至今没有发现的错误;2. 测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成;3. 在测试用例设计时,应当包含合理的输入条件和不合理的输入条件。
4.1.2 白盒测试的测试用例设计白盒测试测试用例一般采用逻辑覆盖法和基本路径法进行设计。
一、逻辑覆盖法逻辑覆盖是以程序内部的逻辑结构为基础的测试用例设计技术,这一方法要求测试人员对程序的逻辑结构有清楚的了解。
逻辑覆盖可分为:语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖与路径覆盖。
1. 语句覆盖就是设计若干个测试用例,运行所测程序,使得每一可执行语句至少执行一次。
2. 判定覆盖就是设计若干个测试用例,运行所测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。
3. 条件覆盖就是设计若干个测试用例,运行所测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。
4. 判定--条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果也至少执行一次。
5. 条件组合覆盖就是设计足够的测试用例,运行所测程序,使得每个判断的所有可能的条件取值组合至少执行一次。
6. 路径测试就是设计足够的测试用例,覆盖程序中所有可能的路径。
每一种覆盖方法都有其优缺点,这6种覆盖方法关系,如图1:图1通常在设计测试用例时应该根据代码模块的复杂度,选择覆盖方法。
一般的代码的复杂度与测试用例设计的复杂度成正比。
因此,设计人员必须做到模块或方法功能的单一性、高内聚性,使得方法或函数代码尽可能的简单;这样将可大大提高测试用例设计的容易度,提高测试用例的覆盖程度。
二、基本路径法基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。
基本路径测试法包括以下5个方面:1. 程序的控制流图:描述程序控制流的一种图示方法。
2. 程序环境复杂性:McCabe复杂性度量;从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行依次所必须的测试用例数目的上界。
3. 导出测试用例。
4. 准备测试用例,确保基本路径集中的每一条路径的执行。
5. 图形矩阵:是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个基本路径集。
另外,对于测试用例的选择除了满足所选择的覆盖程度(或覆盖标准)外还需要尽可能的采用边界值分析法、错误推测法等常用地设计方法。
采用边界值分析法设计合理的输入条件与不合理的输入条件;条件边界测试用例应该包括输入参数的边界与条件边界(if,while,for,switch ,SQL Where子句等)。
错误推测法,列举出程序中所有可能的错误和容易发生错误的特殊情况,根据它们选择测试用例;在编码、单元测试阶段可以发现很多常见的错误和疑似错误,对于这些错误应该作重点测试,并设计相应的测试用例。