Tag: Bux

使您的UI测试再次变为绿色

加入BUX之前,我从未做过任何UI测试。 在我以前的公司中, 拥有事物总是一件好事,而且从来没有发生过当您可以执行非强制性的事情时我们能够达到目标的情况。 基本上,这通常发生在早期初创企业中的大多数工程师身上。 我真的很高兴在我们的BUX代码中看到UI测试,此外,他们设法在基本的Apple工具上构建了一些不错的抽象。 我很高兴接球并积极参与改善我们应用程序质量的过程。 我不会试图说服您编写测试。 您只需每天执行一次。 这是与“我们应该使用版本控制系统吗?”相同的问题。 答案是“是的,我们应该”。 如果您仍然需要一些启发,可以从我的一位同事撰写的文章开始。 除了要点之外,您还会发现一些很棒的历史见解。 UI测试的主要目的是快速运行最重要的方案。 我们应该能够从用户的角度跟踪是否破坏了某些内容。 当然,我们应该不时看到测试失败! 这就是测试如何帮助我们提高软件质量的方式。 但是,在某些情况下,我们可以进行红色测试,而背后的原因对我们而言似乎毫无意义,因为我们无法采取任何措施对其进行修复。 在第二部分中,我想讨论使您的测试变成红色的主要原因:网络。 烦恼网络的原因 想象一下,您刚刚为应用程序流程的新部分编写了全新的UI测试。 您击中Cmd-U时,看到Xcode的“测试成功”并提交时,微微一笑。 您觉得一切都完成了。 但是,当涉及到CI时,情况可能会发生变化。 您一定会看到红色测试的一天。 发生这种情况的原因可能很多: CI环境与开发环境不同步(例如,需要更新Xcode) 证书已过期 网络/后端失败(最常见的情况) 后端通常有多种原因完全不响应或以意外方式响应: 服务器维护 网络可达性问题(如果您使用真实设备进行测试,并且该框中的WiFi信号较弱) 与数据相关的问题。 我们不能总是知道要从后端接收什么数据 如果您的团队中有人要求您使用真实的服务器进行UI测试,请说“ 否” 。 如果他们想在不付出额外努力的情况下测试API,则应该使用一些适当的集成测试,而不是移动应用程序。 使用移动UI测试作为集成测试并不是最好的方法,因为我们引入了多个故障点,这使得测试对于移动端和后端均不稳定且无用。 即使一个应用程序可以一直访问其后端服务器(假设后端始终在运行),它仍然是一个巨大的依赖项,我们对它没有任何影响! 因此,每次在配置项上看到红色测试时,都应确保我们使用新的提交破坏了测试。 我们不会每次都检查后端/网络问题。 归根结底,每个人都可以习惯于“红色”测试,而这并不是我们想要的方式。 解决方法 我们该如何克服呢? 我们应该从不使用真正的UI测试后端开始。 我们决定从OHHTTPStubs开始,因为我们已经使用它进行了一些存根。 这件事太神奇了,它为我们节省了很多时间。 在BUX,我们决定走得更远,并包装此库以使事情更干净和可维护。 我们的目标是在决定“我是否有时间为该功能编写测试或……吗?”的情况下,轻松创建新的UI测试。 要求 我们对存根工具的主要要求是: 存根文件(很多,目前大约有300个)应该易于维护 系统应该有可能为同一端点返回不同的存根 我们应该能够以可预测和干净的方式对其进行修改以满足新的要求 单个测试流程应能够按特定顺序使用不同的存根 […]