- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这几天我一直在研究自动化验收测试,学习了 BDD & JBehave、FitNesse & Slim、Selenium & WebDriver 等。
我刚刚看过this Robert C. Martin 的视频演示了如何使用 FitNesse 编写和维护此类测试。接近尾声时,有人问这些测试是否命中了 UI。 Martin 继续解释说,将验收测试与 UI 耦合可能会很昂贵,因为对 UI 的更改非常频繁。我还可以猜测,此类测试只能在 UI 开发完成后编写,这会使测试人员落后于计划。
我不得不问:有什么选择? Martin 似乎在暗示测试应该触及一个隐藏层,该隐藏层将操纵应用程序的业务层。我的理解是,这需要额外的工作,更不用说它会暴露一个新的 API,需要在生产环境中保护一次。
通过应用服务触及业务层就足够了吗?
你有什么经验吗?
感谢分享!
最佳答案
通过 UI 进行测试或者直接打到业务层,可以看作是两种不同类型的测试,各有优劣。
如果您直接测试 UI,那么您就是在测试用户所看到的内容,您无需更改代码即可对其进行测试。但是,测试极端情况或系统如何对异常情况(例如异常)使用react变得非常困难。正如罗伯特·马丁所说,它很脆弱。如果你的界面改变了,你需要改变你的测试。因此,通过 UI 进行测试取决于 UI 的成熟度。在项目的后期,UI 更加稳定,因此通过 UI 进行测试更有意义。此外,通过 UI 测试一些东西是困难的或复杂的。
如果您正在测试业务层,那么您可以更轻松地测试角落条件,并且您不太容易受到 UI 变化的影响。但是,正如您所说,软件必须以允许进行此类测试的方式编写。您甚至可能必须公开一个新接口(interface)以允许它,然后必须对其进行维护。根据我的经验,有时很难让开发人员支持这种接口(interface)。它被认为不如真正的界面重要。但这总是可能的。这种界面需要开发人员的支持,否则随着时间的推移,您可能会面临“不支持”的风险。
如果您没有外部接口(interface),请尝试询问它。你永远不知道,你也许可以说服他们这是个好主意。在项目开始时更容易。
如果您有外部接口(interface),则使用它来测试您的业务逻辑。
否则,您将不得不使用 UI 来测试这些东西。一种方法是使用 UI 进行冒烟测试,以回答以下问题:该软件是否可测试?想想每次从开发人员那里获得构建时必须测试的常见事物。我可以登录,我可以注销,主页是否出现,我可以做一个简单的订单吗?选择其中的 5 或 6 个,并构建一个自动化测试套件来测试这些东西。使用这些测试作为指南,了解您可以通过 UI 实际测试多少功能,以及它有多大用处。
然后,当您向开发人员询问外部接口(interface)时,您可以将其用作参数。
关于automated-tests - 自动化验收测试 - UI 还是 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6824928/
我正在尝试创建一个工作流程,使用 Instapaper 将 URL 列表转换为纯文本,然后将文本保存在我机器上的文本文档中。 到目前为止,我已经能够获取 URL 列表、转换它们并保存文本文档。问题是我
有没有办法自动执行这些步骤? 打开 LibreOffice ODT 更新 TOC 和其他字段(例如通过菜单工具|更新|全部更新) 保存并关闭文档 最佳答案 如果您使用的是 Windows,那么使用 A
在 Microsoft Power Automate 中,使用表达式 utcNow() 可以获得当前日期(和时间)。我正在尝试获取昨天的日期。我尝试了 dateadd(utcNow(), -1) 和类
我使用 Power Automate Desktop 创建了一个桌面流程。但我无法安排或让它自动运行。有什么办法吗? 我不希望使用云流和使用网关连接桌面流。我需要在我的台式机本身内自动运行桌面流程。有
列表开始为空。然后,如果满足特定条件,我想为循环中的每次迭代附加一个值。我在变量操作中没有看到附加选项。 最佳答案 您可以使用字符串分割来实现此目的,假设您知道一个永远不会出现在值列表中的分隔符。我使
我使用 Power Automate Desktop 创建了一个桌面流程。但我无法安排或让它自动运行。有什么办法吗? 我不希望使用云流和使用网关连接桌面流。我需要在我的台式机本身内自动运行桌面流程。有
我使用的是 Mac OS X 11.0.1 Big Sur 我使用 Automator 创建了一个“看我做”的 QuickAction。我已经保存了它(似乎默认保存在 ~/Library/Servic
我的问题的历史: 我正在研究 UI automator (2.1.3) 和 Espresso 测试 + 在简单的 Mac Air (2014) 上使用 android studio (3.0.1)。之
有人要求我将 Sharepoint 上的 Excel 在线电子表格中的数据提取到 Power BI 中以创建仪表板 - 没问题,对吧?好吧,“数据点”之一实际上是指示状态的单元格的填充颜色。我进行了一
在 Power Automate 中,我正在调用一个返回此 JSON 的 API: { "status":"200", "Suburbs":[ { "
更新到 Mojave 后,我无法再使用之前使用的 automator 服务,并出现以下警报。 在“安全与隐私”中,我已经选中了 AppleScript Editor。 您发现我的代码有任何问题吗?或者
我在 Windows 7 下使用 Powershell 4,并且我的 cmdlet 定义如下: Function Transfer-File { [CmdletBinding()]
我在 commands.js 中使用这个方法 Cypress.Commands.add( 'iframeLoaded', { prevSubject: 'element' }, ($iframe) =
我正在使用 UI Automation 插件来自动化和测试在 Java 窗口中包含 HTML 对象的应用程序。我已将 UIATable 识别并保存在我的对象存储库中,并且以下方法工作正常: MsgBo
在我的项目中,有一个叫做创建任务的东西。创建任务并关闭页面后,系统会提示我一个警报“您即将关闭此应用程序并保存所有更改......” 然后是 OK 和 Cancel。 使用 F12,我无法检测到警报和
我使用 Cmder 作为我的命令提示符/控制台。 我发现自己每天多次使用相同的命令。例如 git merge --no-ff my-long-branch-name 有什么方法可以将这些命令存储在快捷
我是 Applescript 的新手,目前无法访问提示窗口,要求输入密码。 我正在为我的日常使用应用程序创建一个启动器,我想自动化启动过程。 现在,我只启动了两个应用程序,VirtualHostX 和
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 5年前关闭。 Improve this qu
如何为具有常规安装程序的程序创建自动安装程序,其中包含以下问题: 安装目录, 接受许可, 在桌面上创建图标 等等... 假设我可以为每个我想单独安装的程序构建一个自动安装程序,或者我想将文件放在一个自
如何在预定时间运行我的苹果脚本。我希望它每 45 分钟运行一次,但我不知道该怎么做。我将我的苹果脚本保存为应用程序。我接下来该怎么做? 谢谢 (目前,我正在使用 on idle 函数,但有更好的方法吗
我是一名优秀的程序员,十分优秀!