哪些策略可以用于自动化单元测试用例的创建?您需要在每个类中查看哪些方面才能至少生成一个体面的测试用例框架?
我意识到一个全面的自动解决方案并不实用,但我希望至少通过创建一个框架来加快测试创建的速度。我并不是在寻找代码示例,也许是一些关于从哪里开始的建议,或者是这样的例子,这样我就可以看到他们是如何处理的,以及可能发生的事情。
我特别感兴趣的是在PHP中创建单元测试框架的方法,它没有提供其他语言提供的所有工具,比如完整的类型暗示。
发布于 2011-09-18 03:20:07
您的策略和框架在很大程度上取决于您想要生成的测试类型、您要寻找的覆盖范围以及您正在工作的语言/环境。
直接编写一个测试生成器,对于C或Java这样的语言,它读取类签名并自动生成标准角情况下的测试(传入0、2个随机值、MAX_INT、MIN_INT、整数参数、空值等)。然后,您可以运行生成的测试,记录每个测试的结果,并对它们进行手动筛选以删除不相关的测试,对通过的测试批准可接受的结果(这样它们就可以从那时起自动通过),并将失败的结果标记为无效的结果。
您可以通过类的标记/注释/重构来增强这一点,以帮助生成器获得额外的提示。您可能有一个标记,它列出了方法调用允许引发的所有可能的异常,或者为整数参数提供了一个有效整数的缩小范围。把这些看作是短小精悍的,因为你必须自己写测试。
因此,下面是一些您想要查看的组件:
有很多测试框架,其中已经包含了针对不同语言和平台的部分功能。虽然自己开始做这项工作并在内部有机地发展这种框架是相当容易的,但它也是一个没完没了的长期项目,很可能会重复现有的工作。我建议先花大量的时间看看什么是可用的,然后决定是否值得花时间深入研究。
发布于 2011-09-18 02:12:08
我还没有机会在一个有意义或复杂的应用程序上使用它,但是有一些工具,包括AnalytiX代码谷歌的,即自动生成Java应用程序的单元测试。我还发现了一种商业产品Parasoft's C++Test,它似乎允许生成C++单元测试。
这些应用程序使用启发式方法生成测试用例。我不确定是否有一个框架可以用来生成一个框架,但是您可以查找一些构造。我倾向于关注循环、条件语句(if块、switch/case语句)和异常,并创建强制执行不同执行路径的测试用例。
我不会专注于通过创建框架或模板来加速测试的编写,而是通过改进规范的分析和/或实现以及编写高质量的测试。能够尽早识别哪些测试增加了最大的价值,编写这些测试,然后在以后补上漏洞,将对生产率和质量产生更大的影响。
为了提供更多的宣传,猎鹰在一个项目和写了一篇关于他的经历的短文上试用了CodePro。
发布于 2011-10-16 12:17:47
几年前,我编写了一个生成器来加速.NET项目的单元测试。有一个没有单元测试的大型代码库,它的目标是快速增加基本覆盖率。以下是一些可能有帮助的注释:
data-driven testing非常有帮助。测试框架为每个单元测试创建了一个数据库表来存储测试数据,这样该表中的每一行都是一个单独的测试,并且不需要额外的代码(表示规则)。从这一点开始,实际的测试可以很容易地自动创建或手动输入。smoke tests的作用。对于风险较高的地区,还编写了额外的手工测试。总之,我同意一个通用的解决方案是不切实际的(如果可能的话)。我相信,如果代码库适合测试生成,并且测试框架可以利用它的结构,那么机会就会更大。
(顺便提一句,这里有佩克斯,但它是.NET的)
https://softwareengineering.stackexchange.com/questions/109056
复制相似问题