Jtest使用独特的技术完全自动化白盒测试过程。Jtest分析每个被测类的内部结构,自动设计和执行能够完全测试类的结构的测试用例,然后确定每个测试输入是否会产生一个未捕获的运行时异常。对于检测到的每个异常报告一个错误信息并提供一个导致错误的栈轨迹和调用序列。
Jtest分析该类,然后生成大量的根据非预期输入设计的测试用例,并执行。Jtest自动生成的测试用例发现了下列没有捕获的运行时异常。
Jtest能够对任何Java类或部件进行白盒测试,包括那些引用外部资源(如外部文件、数据库、EJB和CORBA)的类。如果您正在测试一些引用外部资源的类,Jtest将自动生成必要的桩函数,或者您可以选择直接调用实际的外部方法或您自己的桩函数。对使用CORBA的类,Jtest提供ORB和其它引用对象的桩函数。对使用EJB的类,Jtest调用Bean初始化程序并提供一个模拟的容器,然后执行白盒测试,保证这些类能够恰当地执行。
您可以根据自己的需要剪裁Jtest的错误报告。如果您对代码中一些正当的异常情况使用了特定的@exception注释标记,Jtest将屏蔽它们。如果您使用了特定的@pre注释标记为有效的方法输入说明允许的范围,Jtest将屏蔽掉落在该范围之外的输入所发现的错误。您还可以使用快捷菜单或禁用配置面板屏蔽异常情况。
黑盒测试
使用Jtest进行黑盒测试比使用任何其它工具更简单(也更有效)。Jtest的专利技术通过分析类的字节码自动生成一组核心输入;这些输入经过精心设计能够达到尽可能高的代码覆盖。由于自动生成的输入的设计目标是覆盖类的方法,而非验证其定义,因此用户可能需要增加自己的测试用例。(这一点是可以理解的,自动技术是针对语法的,机器并不能理解人的真正意图。)
用户定义的输入可以直接添加到树形表示的测试用例中,其中节点代表方法的每个参数或者能够存贮在全局或局部存储库中的常量和方法;在这里,输入可以方便地加入到任何方法的参数中。当测试进行时,Jtest自动执行所有的输入并以简单的树形表示显示相应的输出。在以后的功能测试或回归测试测试中出现错误时,Jtest会自动通告用户。
由于Jtest自动生成了一组很棒的核心输入,大大减少了开发人员和测试人员需要建立的测试用例的数量,并且能够比手工设计覆盖程序中更多的代码--多快好省。
黑盒(功能性)测试检查一个类的行为是否符合其功能说明。为了执行黑盒测试,您需要建立一组输入/输出关系,它们能够测试是否准确实现了类的功能说明。对说明文档中的每一项至少需要有一个测试用例,最好这些测试用例还能测试每一项说明的各种边界条件。测试用例准备好后,您执行它们并验证是否产生了准确的结果。
如果您的类代码中含有按合同设计(DbC)格式的说明信息,Jtest能够完全自动化黑盒测试过程。如果没有,Jtest也能比手工做黑盒测试更容易更有效。
DbC是一种形式化方法,使用注解在代码中加入说明信息。基本上,使用一种描述软件合同的形式语言能够明确表达代码说明。这些合同说明了这样的需求:
在调用一个方法之前必须满足的条件(前置条件)。
在调用一个方法之后必须满足的条件(后置条件)。
在执行中的说明点必须满足的断言。
Jtest读取类代码中用DbC语言定义的说明信息,然后自动基于这些信息开发测试用例。Jtest设计按照下面的规则设计黑盒测试用例:
如果有后置条件,Jtest建立验证是否满足这些条件的测试用例。
如果有断言,Jtest建立试图使断言失败的测试用例。
如果有不变条件(即应用于类的所有方法),Jtest建立试图使不变条件失败的测试用例。
如果有前置条件,Jtest试图找到能够走通前置条件中所有路径的输入。
如果被测方法调用的其它方法中包含已说明的前置条件,Jtest确定被测方法是否能将不允许的值传递给其它方法。
如果发现非法的说明信息
关于Jtest如何自动建立和执行验证类功能性测试用例以及DbC说明如何帮助Jtest的黑盒测试的详细描述,参见"利用按合同设计方法自动化Java软件和部件测试"。
如果您没有使用DbC,Jtest也能帮助您建立黑盒测试用例。您可以使用Jtest自动生成一组测试用例作为黑盒测试用例集合的基础,然后通过加入自己的测试用例扩展它们。
可以有多种加入测试用例的方法。例如:
·直接在表示每个方法参数的树节点中键入方法的输入。
·设置全局或局部的常量和方法,然后加入到任何方法参数。
·JUnit格式的测试类作为测试用例。
如果一个类引用外部资源,您可以进入自己的桩函数或让Jtest调用实际的外部方法。
当测试运行时,Jtest使用任何可以得到的桩函数,自动执行输入,并以树形表示显示对应这些输入的输出结果。然后您可以观察输出结果并验证。当说明和回归测试错误出现时,Jtest能够自动通报。
2.3.3回归测试
执行准确的回归测试是保证软件质量和可靠性的另一必要步骤。回归测试即使用前面测试所用的同一组输入和测试参数测试修改过的代码,它是保证一个类在修改后不会引入新的错误或者检查是否成功地排除了错误的唯一途径。每次一个类被修改或用于一个新环境,都应该进行回归测试以保证类的完整性。
Jtest的回归测试使得您能够在类一级执行回归测试,这意味着您能够更早地运行测试用例以监测代码的完整性。Jtest完全自动执行回归测试有关的所有步骤。假使用户没有说明正确的输出,Jtest能够记忆前面的输出结果,并在每次测试时进行比较,当任何输出发生变化时报告一个错误。当然,如果用户指定正确的输出结果,在回归测试时Jtest使用这些值作为参考结果。为了使自动的回归测试尽可能快速准确,Jtest在测试一个或一组类时自动保存所有的测试输入和设置,然后将测试加入到Jtest的菜单选项中。其结果是,用户执行回归测试所需要的只是在测试菜单中选择一个合适的测试,然后按下开始按钮。您还可以将批处理模式的Jtest集成到夜间建立中,保证回归错误能够及时发现和纠正。
文章来源于领测软件测试网 https://www.ltesting.net/