因此,与手动运行测试相比,如果创建测试的成本非常低,自动化测试会变得更有吸引力(例如,在您基本上创建电子表格的情况下进行适合性测试),或者如果测试的执行数量足够大抵消成本差异.
单元测试运行良好,因为有足够多的执行次数 – 每次轻微的更改或重构都要确保没有新的故障.
验收测试更为严格,因为重复执行的可能性因项目而异,业务需求会影响长期支持和维护问题.
如果项目一旦通过验收测试就交付,并且没有进一步的支持或更改,那么自动验收测试可能没有意义,除非生成自动化测试非常便宜.
另一方面,如果人们预计未来的发布(甚至是同一客户)或长期支持合同,那么初始投资可能会随着时间的推移而变得值得.
我们公司为各种客户生产交易系统和算法,新功能和产品建立在旧的基础之上.手动运行所有测试的成本非常高,我们正在努力为之前手动测试的许多场景添加自动验收测试.
跟进:
恕我直言,首先必须有非常清晰和完整的逐步测试计划(一个优秀的QA人员或团队在这里至关重要).在验收测试的情况下,客户可以提供他们自己或QA必须提供给他们的客户.我认为测试计划通常应该是合同的一部分.
一旦你拥有它,就可以更容易地估计人类运行它需要多长时间(你可以试验一个人来找出它).重要的是要注意哪些步骤需要“笨拙的工作”,以及哪些步骤需要真正的人为输入或自由裁量权.
这是一个重要的区别.例如,假设您正在构建绘图程序.如果你告诉人类在特定坐标中绘制线条,这可以很容易地自动化.但是,如果您的步骤说:“确认形状是一朵花”,人类可以轻松地完成它,但几乎不可能实现自动化.许多测试用例可以是半自动化的.您为用户输入留下“钩子”,让测试人员专注于这些.按钮启动一系列操作,并向用户显示“输出的输出是否正确?”.
我的经验是,自动化的成本非常直观.但是,通常需要修改现有程序以使其更易于测试.例如,在上面的示例中,如果您有一个允许您向画布添加行的API,那么事情就很棒了.如果你必须编写一个将逻辑坐标转换为屏幕的鼠标机器人,那就更长了.