大家好,我是阿萨。最近有个同事问:一个功能API自动化做了,UI自动化还需要做吗?
刚接到这个问题的时候我愣了一下。因为这两个自动化主要覆盖的场景完全不同。为啥是互斥的?一般情况下:这2个都是需要的。打个比方:过滤沙子的时候,不同颗粒度的沙子就需要不同类型的滤网去过滤。
首先我们看下UI自动化优点:
它主要覆盖场景就是用户使用场景。模拟用户操作来进行自动化。根据用户操作方法来使用脚本替代用户操作。一般是在功能测试后期代码稳定后实现。
UI自动化缺点:
UI自动化缺点也很明显,依赖开发UI界面的稳定性。所以UI自动化相对来说比较脆弱,维护成本比较高。运行时间长,质量反馈稍微有点慢。而且脚本需要添加等待时间来模拟页面操作后台响应时间。导致脚本鲁棒性不太好。UI自动化投入产出比相对低一些。
再说API自动化的优点:
API自动化运行速度快。质量反馈周期短,能快速给质量提供一个结果来评价质量好坏。而且API稳定后一般不太可能修改。在开发后期就可以开始写脚本。主要在校验前后台数据交换上优势明显。因为输入输出很明确。API自动化投入产出比相对高一些。
API自动化缺点:
API自动化的弊端也很明显。无法校验前端页面代码逻辑。对于复杂的输入和输出解析,穷举各个参数,参数数量超过一定级别后API自动化写作成本太高,耗时太长。
总结:
从上面分析可以看出来两个的侧重点和适用场景完全不同。所以这两个自动化都是需要的。两者并不是互斥的。就跟筛沙子的过程中,粗沙子和细沙子需要不同工具一样。
用人当用长,那么使用工具也是一样的道理。如果一个场景是用户界面经常操作的,那么它就有必要写UI自动化。同时前后台数据有交换的,就需要写API自动化了。
如果项目进度紧张,一定要优先保证数据是正确的,所以更适合API多做些。UI覆盖UAT。
如果前台界面校验逻辑多,UI自动化优势更明显一些,就UI自动化多做一些,API自动化只集中在几个验证数据交换的接口上。
以上仅代表个人观点,如果你有不同观点,欢迎私信交流。