大项目,缺乏测试覆盖率,你会如何处理?

时间:2015-11-12 08:42:21

标签: unit-testing symfony functional-testing behat mink

所以我有这个庞大的SF2项目,幸运的是很漂亮'好的'书面。服务在那里,背景工作在那里,没有上课,它是可测试的 - 但是,我从来没有得到任何进一步的单元测试的东西,所以问题基本上,我从哪里开始进一步。 / p>

该项目由SF2和所有yada yada,Doctrine2,Beanstalkd,Gaufrette以及其他一些抽象组成 - 很好。 它存在的一个问题是控制器中的一些胶合代码在这里和那里,但我不认为它是一个大问题,因为功能测试是我的主要焦点。 基础设施设置也很好,它由docker覆盖,因此CI也能很好地运作。

但它已基本上变得太大而无法再进行手动测试,因此我希望在短时间内完全覆盖功能,并让单元测试随着时间的推移而增长。 (要深入研究孤立的物体,因为它们需要在未来进行调整,并在适当的时候为它们进行测试)

所以我接受了单元测试,这需要随着时间的推移而增长,但我想在功能测试方面采取一些措施,以便在测试平台上获得快速收益。昨天

我现在的计划是使用Behat和Mink,测试将是巨大的,所以我不妨想把它设置为故事而不是代码。 Behat似乎也延伸了Symfony' BrowserKit。 有很多服务和外部事情发生,但它们都是由服务隔离的,所以我可以通过测试环境服务配置来模拟它们。 如果有更好的方法,请在此处提出一些建议

我还需要固定装置,我到目前为止使用Alice制作了一些装置,看起来很好,加上学说扩展,不要认为有更好的"更好&# 34;这个选项。

我应该如何测试外部服务?我嘲笑作为Facebook服务的东西,但我也想真正测试它到一些测试帐户,这是可取的吗?我知道这超出了它的范围,必须以各种可能的方式对服务进行嘲弄和测试,以确保其工作和#34;根据纯粹主义者的说法。但是在一天结束时它仍然因为某些API密钥或连接中的其他问题而中断,我真的无法承受。 所以请在此处提出建议

您对使用其他工具的所有建议都是受欢迎的,特别是如果有一本好书可以涵盖我的故事。

1 个答案:

答案 0 :(得分:0)

我很高兴你长大了,我会建议同样的事情。

我会考虑从你最关键的业务开始;单元测试极其重要的业务逻辑并使用其余部分。

在大多数情况下,我会为您的服务创建存根,这些存根具有预期输入的预期输出。这样您就可以根据特定输入创建失败。您可以在测试配置中覆盖您的服务。

另一种方法是进行非常精简的功能测试,您可以向所有端点发出GET请求并查找200。这是确保您的页面至少加载的一种非常快速的方法。从那里开始,您可以开始为POST端点编写测试,并通过更详细的测试用例进一步扩展您的套件。