软件测试学习打卡交流←←←
从零开始学自动化
1.自动化测试是什么
维基百科对自动化测试的定义-—自动化测试就是使用软件来控制测试案例的执行。它将实际测试结果与预期结果进行比较,并提供测试预置条件设定、测试逻辑控制以及测试报告等重要功能。通常,自动化测试都是基于已经存在,并拥有成熟测试流程的人工测试来实现的。
尽管人工测试可以发现大量的软件系统缺陷,但它无疑会耗费大量人力及时间,并且不容易发现某些特定类型的缺陷(例如数个下拉菜单的逻辑组合查询测试)。对测试进行自动化的过程,就是写一段程序来代替人工测试。一旦测试被成功自动化后,它们就可以在任何需要的时候快速执行。对于软件维护周期很长的应用系统而言,这无疑是最高效的方式。因为在漫长的软件维护周期中,一个很小的改动,都可能导致原本正常的软件功能失效。
2.自动化测试有两种常见的方式:
1.代码驱动测试:
通过大量不同的输入参数和对应的返回结果,来验证类、模块或者库文件的公共接口是否正确。
“代码驱动测试自动化”是敏捷开发的一个关键特性,同时它又被很多人称为测试驱动开发(TDD)。单元测试的逻辑在代码编写之前就应该确定下来,只有当代码通过了所有测试,代码编写工作才能结束。支持这一看法的业界专家认为,
2.图形用户接口测试
测试框架产生用户接口事件(例如键盘敲击、鼠标单击等),并捕获事件导致的图形用户接口改变,以便验证可见的程序响应是否正确。很多自动化测试工具都支持录制/回放特性,它们允许用户交互性地录制自己的操作,在需要的时候进行回放,并将回放的实际结果与期望结果进行比较。
自动化测试工具通常都是很昂贵的,并经常与手工测试结合起来使用。如果在较长的时间周期内考察,那么自动化测试是有价值的,它特别适合于定期的回归测试。
在开始自动化测试工作前,您必须先决定自动化什么,什么时间自动化,甚至于是否需要自动化。选择待测软件系统的哪些功能特性进行自动化测试,在很大程度上决定了自动化工作的成败。对不稳定的功能特性,或者即将改变的功能特性,进行自动化测试,必定得不偿失,绝对不要这么做。
3.是否需要对测试进行自动化?
自动化总是有利可图的吗?什么时候我们会决定对测试案例进行自动化?
自动化并非总是有利可图的,有时候人工测试更适合。举个例子,如果系统的用户界面会在最近发生改变,那么自动化测试案例就不得不面临重构。而有时候并没有足够的时间去设计自动化测试,对于工期较短的项目,人工测试也许更有效率。如果一个项目有严格的截至时间点,并且当前没有可用的自动化测试案例,那么人工测试是你最好的解决方案。
不过自动化测试在一个长周期的迭代测试中,拥有许多优点:
- 能够支持频繁的回归测试;
- 能够在软件开发过程中尽早发现缺陷;
- 能够无限地循环执行测试案例;
- 零成本实现Web自动化测试——基于Selenium和 Bromine