资深聊测试—自动化测试工具之道
一、自动化测试适用于什么场景?
1、产品化的项目,功能模块相对比较稳定,不会有频繁地改变;
2、重复性工作比较密集的区域,比如产品的回归测试;
二、什么是自动化测试?
是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。
三、设计自动化测试框架时应该考虑哪些因素?
1、稳定性:
处于自动化测试的应用场景,主要是用于产品的回归测试,所以对于稳定性要求应该很高,意思就是自动化脚本执行100次,至少有90次以上的结果是正确且相同的。而不应该是每次执行都能出现各种各样的问题,得出各种各样的结果。
一是需要耗费很大的排查成本,二也就失去了自动化测试脚本对于回归测试的可靠性,因为使用者无法准确地通过运行后的结果得知,这个问题到底是产品的,还是脚本本身的。
所以我认为自动化测试框架的运行稳定性比运行效率的优先级要高,因为从回归测试的自动化脚本或者持续集成的角度来说,脚本本身的运行并不是7*24小时连轴转的,因此只要不是慢到非常离谱的速度,应该都是可以接受的。
2、易用性:
不管你的后台设计有多复杂,你的代码实现有多难,自动化测试框架从使用者角度来看,就应该是要易用,这里的易用包含了:低学习成本和轻量级使用。
2.1 低学习成本:
我们姑且先不细分自动化测试工具的类型,只从使用者角度来说,有用来写自动化测试脚本的测试人员,有直接用来做现网巡检的运维人员,也有用来做数据校验或配置检查的运营人员,不管你的工具功能有多强大,执行效率有多快,他们都有一个共同的需求:就是学习成本低。
他们不需要懂得太多你这个框架或者工具的技术,不需要懂得你这个框架用什么语言去开发的,他们只需要能很容易地上手使用它。他们有的需要很容易地编写他需要的关键字脚本、他们有的需要很简单地配置时间频度和巡检对象地址,他们有的甚至只需要选择工具,点开始按钮,然后就可以去做其他事情,等检查执行结束后,会通知他结果即可。。
2.2 轻量级应用:
无论是什么样的用户,都不喜欢在自己的机器上安装一大堆必需的工具和组件,他们只想在自己需要的时候,就可以登录到你的平台上,去选择工具执行,或者直接在你的平台上开始新建项目,开始编写他需要的脚本。而无需事先就要在自己的机器上配置一大堆有可能只是用一次或者几次的东西。
3、可维护性:
首先尽量减少第三方库的依赖性,避免第三方库升级或其他问题而导致已有脚本不能正常运行。另一方面就是减少自动化脚本模块的耦合性,避免出现那种强依赖关系,这样在某些模块做调整时,不需要涉及到太多的模块,降低维护成本。
四、理想中的自动化测试工具是什么样的?
自动化测试工具虽说是服务于产品测试或项目测试的,一般都是为内部人员所使用的,但是,在做自动化测试工具设计的时候,应该要从它的商业化价值去考虑,因为对于设计开发自动化测试框架的人来说,使用这个框架的测试人员、运维人员和运营人员,他们都是你的客户,或者说用户,所以你和他们之间可以理解成一种商业模式。 如果对软件测试、接口测试、自动化测试、面试经验交流。感兴趣可以加测试交流群:829792258,还会有同行一起技术交流。
所以自动化测试工具应该是这样的:
1、商业化
基于上述的稳定性、易用性和可维护性等几个方面去设计的一个产品,用户需求之上的一个商业化的产品,最终目的是要帮助用户解决实际问题,提高工作效率,而不是一个 Demo,一个预研,或者说一个为了炫技术的华而不实的载体。
2、混合云服务
为了同时满足用户的轻量级应用和数据安全的要求,自动化测试工具本身及运行环境位于云端,用户无论何时何地都可以访问使用,而运行所需的数据输入和结果输出,都会保存在用户本地。
3、智能自动化
自动化测试工具在运行时会收集被测对象的基本数据、用户的使用习惯和常见问题,然后会基于这些数据做大数据分析,基于被测对象数量的增多,类型的多样化,元素库的补充,持续学习和练习,然后对于一个新的产品进行基于没有预期结果的扫描测试,试图找出产品的问题。