当前位置:主页 > 高防服务器 >

海外高防ip_高防御服务器排名_优惠券

时间:2021-06-12 00:09来源:E度网络 作者:E度网络 点击:

海外高防ip_高防御服务器排名_优惠券

单元测试是软件开发的一个重要方面。为您的项目拥有一个合适的测试套件可以帮助您及早发现错误并防止倒退。如果我们能够自动生成单元测试用例,那不是很好吗?当然,高防cdn排名,这是可能的,我将在本文中解释如何为Java实现这一点。最近,我有机会了解Java的单元测试用例生成。我开发了一个旧的跨平台序列化库wox,它没有附带测试套件。我不得不对库进行一些更改并修复一些bug,以使它能够与当前版本的Java平台一起工作。我想确保我所做的更改不会破坏任何现有的功能。由于wox库没有自己的测试用例集,所以很难检查是否引入了回归错误。在网上搜索之后,我发现了一个Java-EvoSuite的自动测试套件生成框架。EvoSuite框架根据最大化覆盖标准(如分支覆盖)自动为Java类生成测试用例。我使用他们的独立jar向wox库添加了一个测试套件。它非常容易安装和使用。为了生成测试套件,我们使用以下命令:java-jarevosuite.jar-generateTests[选项]\可以是jar文件,也可以是包含类文件的文件夹。如果未指定\,则该命令将在当前目录中名为"evosuite tests"的文件夹中生成测试用例。生成的测试用例使用JUnit,并且可以与IDE分开运行。[选项]控制包括覆盖率条件在内的各种参数,默认条件是分支覆盖率。因此,生成的测试覆盖了方法中的所有分支。如果您正在使用某个外部库,请确保它在类路径中可用,否则EvoSuite将无法使用在该库中定义的对象创建测试用例。EvoSuite需要这些外部库,以便在生成过程中为这些对象调用适当的构造函数。对于测试用例生成,EvoSuite有一系列不同的策略,包括基于搜索的算法和基于约束的算法。基于搜索的测试生成:使用遗传算法来进化满足特定适应度函数的候选测试用例的总体。基于约束的测试生成:使用符号执行来生成约束,并解决这些约束来探索程序中的不同路径。他们的ASE2011论文解释了上述两种技术,以及如何将它们结合起来使用。就自动生成的测试用例的质量而言,它似乎在捕获方法的当前行为方面做得很好,ddos云防御平台,同时提供了良好的分支覆盖率。作为一个示例,请考虑以下来自wox.serial.Util文件班级:/***如果名称作为参数传递的类是stringable,则返回trueif。*换句话说,返回trueif类的对象可以很容易地转到字符串*代表性。*@param name要测试的类的名称。*@returntrue如果类是可字符串的。否则为假。*/public static boolean stringable(字符串名称){试试看{类realDataType=(类)类型映射.mapWOXToJava.get(名称);//如果数据类型是在mapWOXToJava中找到的,那么它是"stringable"if(realDataType!=空){returntrue;}其他{returnfalse;}}捕获(异常e){returnfalse;}}stringable方法有两个分支,分别对应于mapWOXToJava.get方法。EvoSuite为此方法生成以下两个测试用例。test02覆盖条件为true的分支整个test03覆盖else分支。还请注意,DDOS防御发展现状,它可以自动为name参数创建输入,从而驱动对不同分支的执行。//测试用例编号:2/**1覆盖目标:*1wox.serial.Util文件.stringable(Ljava/lang/String;)Z:I10分支21 IFNULL L125-false*/@Testpublicvoidtest02()抛出可抛出的{布尔布尔0=实用字符串("charWrapper");assertEquals(true,boolean0);}//测试用例编号:3/**1覆盖目标:*1wox.serial.Util文件.stringable(Ljava/lang/String;)Z:I10分支21 IFNULL L125-true*/@Testpublicvoidtest03()抛出可抛出的{布尔布尔0=实用字符串("2p8f2V@rzS");assertEquals(false,布尔0);}您可以在GitHub repo查看为wox库生成的整个测试套件。为了为没有回归测试套件的库创建回归测试套件,它似乎非常有效。现在,ddoscc攻击防御,如果我在wox库中做了一些更改,我可以再次运行测试并检查它是否导致任何测试失败。在使用自动测试生成时,高防御ddos系统,需要记住两个注意事项。首先,一般来说,自动化测试用例可能不如手写测试用例好。另一个潜在的问题是测试套件的演变。使用EvoSuite为每个新的EvoSuite版本生成新的测试可能不是正确的做法。然而,自动化测试套件可以作为编写您自己更全面的测试用例的基础,这也是我计划用wox库来做的。还有几个其他的Java工具(正在积极开发中)也可以生成自动化的单元测试用例。我还没有机会使用它们,但我在这里列出它们以供参考-CATG、Randoop和Symbolic Pathfinder。在第二届单元测试工具竞赛中,一份名为EvoSuite的体验报告提供了更多关于使用EvoSuite的详细信息,以及它与其他类似工具的比较。

推荐文章
最近更新