【问题标题】:Can autotests reuse code of the application?自动测试可以重用应用程序的代码吗?
【发布时间】:2019-04-05 11:44:29
【问题描述】:

单元测试与开发人员编写的应用程序的现有代码紧密相连。但是 UI 和 API 自动化测试(集成测试)呢?有人认为,在单独的自动化解决方案中重用应用程序的代码是可以接受的吗?

【问题讨论】:

    标签: unit-testing automated-tests


    【解决方案1】:

    答案是否定的。 UI 测试跟随 UI,进入那个页面,在那个文本框中输入那个值,按下那个按钮,我应该看到这个文本。您不需要任何与此相关的代码。所有这些都应该根据一些接受标准来完成,因此您应该已经知道会发生什么,而无需查看任何代码。

    对于 API 集成测试,您可以调用端点,使用一些有效负载,然后检查结果。您不需要为此引用任何代码。 API 应该记录在案,并很好地解释哪些端点可用、有效负载是什么样的以及您可以期望得到什么。

    我不确定您为什么要考虑在自动化项目中重用应用程序代码。

    好的,在澄清之后,您只是在谈论重用模型,而不是实际代码。这不是一个坏主意,它实际上可以提供帮助,只要这些 nuget 包不引入任何其他依赖项。

    代码可重用性是一个很棒的概念,但在实践中很难做到正确。模型通常带有注释,这些注释需要自动化项目中当然不需要的其他包。因此,如果您可以在没有额外依赖项的情况下获得 nuget 包,那么实际上只有数据模型而不是其他任何东西,那么它确实有效。除此之外,它会产生问题,所以我会推迟

    【讨论】:

    • 其实我并不想重用应用程序代码。但是一些开发人员(他们可能无法理解自动化的要点,或者将自动化视为单元测试)迫使 QA 自动化工程师使用他们的代码(通过 nuget 添加到自动化解决方案中),因为“它减少了重复和 bla-bla-bla”。我认为,这部分代码可能包含一些错误,最后我们会得到误报测试,因为自动测试会以同样的方式错误地工作,就像他们的代码一样。你怎么看?
    • 我还是不明白你为什么需要自动化项目的应用程序代码。做一个 POC 并添加几个自动化测试,我敢打赌你找不到任何理由使用这些 nuget 包
    • 从开发者的角度来看是有原因的。例如,开发人员有一个类来描述将在 API 端点中作为 json 发送的模型。自动化解决方案中存在非常相似的类,响应(我们需要测试的)将解析为该类的实例,然后对其进行验证。开发人员的想法不是创建 2 个相似的类(在应用程序代码和自动化代码中),因为它是重复的。但我敢肯定,这样的优化是陷阱:如果应用程序代码有缺陷,自动测试也可能无法正常工作并给出误报结果。
    • 好的,根据其他说明在我的答案中添加了更多内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 2012-09-25
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    相关资源
    最近更新 更多