加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

测试 – 如何决定何时以及何时不创建集成测试

发布时间:2020-12-14 04:51:38 所属栏目:百科 来源:网络整理
导读:是否有明确的流程来决定您的代码库中应该为其创建集成测试套件的内容?我在说……“我的代码的这一部分符合A标准,因此应该创建测试.我的代码的这部分符合B标准,因此不应该创建测试.” 随着我的Rails应用程序的大小增加,我添加了一些小功能(与总体结构相比),
是否有明确的流程来决定您的代码库中应该为其创建集成测试套件的内容?我在说……“我的代码的这一部分符合A标准,因此应该创建测试.我的代码的这部分符合B标准,因此不应该创建测试.”

随着我的Rails应用程序的大小增加,我添加了一些小功能(与总体结构相比),就像用户帐户上的字段一样,该字段指示用户是否可以为自己或他或她创建约会要求父母这样做(我明白这种错误的含义可能很重要,但我只是想说明这个功能实现的细微之处).

集成测试是否应该是特定于现场的 – 如上所述?或者他们应该更全面和整合?对于集成测试创建的“是”或“否”的透明过程是我正在寻找的.它存在吗?

解决方法

没有办法决定是否编写可以不假思索地使用的集成测试.任何真实的应用程序都有细微差别和特殊情况,挑战任何规则.但是,除了在您发现它不合适的情况下,您可以遵循一种通用的方法:使用验收测试作为集成测试的方法.

旁注:我正在进行“集成测试”,这意味着测试会运行多个代码层,而不是特定于Rails的含义,而这些含义大部分都是由更好的方法和工具所包含的.但是,如果您使用Rails集成测试,我的答案适用.

验收测试捕获重要的用户流程.它也是一个集成测试,从UI一直到后端运行应用程序的所有层.行为驱动开发(BDD)和类似的方法通过编写所有重要用户流的验收测试来推动开发.验收测试编写起来很复杂并且运行缓慢,因此尝试编写可能的最小数量,这仍然定义了所有重要的用户流程.

选择验收测试是一门艺术,但经验法则是,如果两个场景涉及不同的演员和/或不同的主要系统组件(例如UI屏幕),他们应该有单独的验收测试,如果不是,他们就是具有细节的相同场景一次验收测试就足够了.

验收测试对于与利益相关者进行沟通(即记录要求)非常有用,因此无论您的其他测试策略如何,您都需要它们.但是,通常会发现一整套验收测试是您需要的所有集成测试.不值得验收测试的详细要求可以在单元测试中表达.

在您的示例中,我可能会为用户创建自己的约会的场景编写一个验收测试,而另一个用于父级必须帮助的场景,因为它们会完全不同.第一个是(使用Gherkin)

When I visit the new appointment page
And I create a new public appointment
And I visit my calendar
Then I see the public appointment

但第二个是完全不同的:

When there is an unrestricted user "Dad"
And there is a restricted user "Billy" supervised by "Dad"
And there is a user "Stalker"
When "Billy" visits the new appointment page
And "Billy" creates a new appointment
And "Billy" visits his calendar
Then "Billy" sees a pending appointment

When "Stalker" visits "Billy"'s calendar
Then "Stalker" does not see an appointment

When "Dad" visits "Billy"'s calendar
And "Dad" approves the pending appointment
Then "Dad" sees an appointment

When "Billy" visits his calendar
Then "Billy" sees an appointment

When "Stalker" visits "Billy"'s calendar
Then "Stalker" does not see an appointment

另一方面,对于有和没有位置的场景,我可能不会写两个不同的验收测试(假设位置只是一个可能填充或可能未填充的文本字段).单元测试可能就足够了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读