在软件测试中,自动化测试指的是使用独立于待测软件的其他软件来自动执行测试、比较实际结果与预期并生成测试报告这一过程。
在测试流程已经确定后,测试自动化可以自动执行的一些重复但必要测试工作。
也可以完成手动测试几乎不可能完成的测试。对于持续交付和持续集成的开发方式而言,测试自动化是至关重要的。
随着软件系统规模的日益扩大,以及应用领域的不断拓展,对软件系统的测试也变得更加困难和复杂,传统的人工测试的局限性也越来越明显。
自动化软件测试技术可以克服传统测试技术的许多问题。自动化测试所依据的是一套严密的测试法则和评估标准,具有完整的自动测试过程。
因此,它可以避免测试人员惯性思维所导致的测试疏漏,也可减少由于手工测试中繁复的重复工作所导致的人为差错。
自动化测试(尤其是单元测试的自动化),是极限编程和敏捷软件开发的一个关键特征,这也被称为测试驱动开发(TDD)。
单元测试的用例可以在代码编写完成之前就设计好,并作为功能的一种定义形式存在。
随着新的代码不断完成编写,单元测试随之进行,缺陷被不断找出,因而代码也不断得到改进。由于开发人员能够及时发现缺陷然后立即作出改变,修复的代价大大减小,这种不断发展的开发方式被认为比瀑布模型这类开发结束再测试的方式更为可靠。
使用单元测试框架(如JUnit、NUnit等“xUnit”类型测试框架)执行自动化测试是目前软件开发行业的大趋势。
单元测试框架的应用使得各部分代码开发完成后立即进行相关单元测试来验证它们是否如预期在运行成为可能。
手工完成一些软件测试的工作(例如大量的低级接口的回归测试)十分艰苦耗时,而且寻找某些种类的缺陷时效率并不高,因而测试自动化,提供一种完成这类工作的有效方法。
一旦自动化测试方法开发完成,日后的测试工作将可以高效循环完成。很多时候这是针对软件产品进行长期回归测试的高效方法。毕竟,早期一个微小的补丁中引入的回归问题可能在日后导致巨大的损失。
尽管长期来看(尤其是针对回归问题的)自动化测试,可以带来开支上的节省,将所有测试短期内全部自动化还是可能产生巨大的开销,通常情况下业内采用手工测试和自动化测试相结合的方法完成测试工作。
尽管测试“自动化”了,但测试结果分析、测试脚本维护和编写仍然需要人力投入。
①.对于测试用例的要求
需要被自动化的测试用例大多是待测产品中每次修改代码都需要进行回归测试的重要部分。对这样的部分采取自动化测试手段后能大大减小手工测试消耗的人力物力。
②.对于测试人员的要求
由于在自动化测试中的测试用例和输出结果都由代码构成,测试工程师(或软件质量保证人员)必须具备软件编码的能力。不过某些测试自动化工具支持通过关键词指定测试步骤,因而免除了程序编写的过程,对测试人员而言也就不再要求他们掌握编程技术了。
测试自动化有许多途径,下面列出一些广泛应用的一般方法:
基于图形用户交互界面测试(GUI Based Testing)
基于用户界面(GUI)的测试使用能够产生图形用户界面操作(如鼠标点击、键盘输入等)的测试框架,模拟用户动作来以观察、验证程序是否正确的响应。
接口测试(又称基于API的测试,API Based Testing)
接口测试指的是通过调用接口(API)绕过GUI,以应用到验证的行为进行测试。通常API绕过测试的应用程序的用户界面。它也可以测试公共的接口,以各种各样的输入参数来验证返回的结果是正确的。
①.图形用户界面(GUI)测试
许多测试自动化工具提供记录与回放的功能,这允许用户记录他们在交互式用户界面上进行的鼠标点击、键盘输入等操作。这样在之后的测试当中,回放便可以自动测试这些交互,与正常情况下的交互反馈进行对比便可完成针对GUI的测试工作。
这种方法几乎不要求用户具有软件开发经验,并且可以应用于几乎任何具有GUI的应用程序。然而,这些特点也带来了一些可靠性和维护性问题:任何按钮的重命名或是移动都会让脚本出现错误,用户便需要重新录制脚本。
②.接口测试
接口测试是被广泛使用的软件测试方法之一,它使软件测试工程师能够忽略GUI的影响,对软件功能本身进行测试。它是程序逻辑测试中非常关键的一步。通常情况下在开发的早期阶段,接口测试就会开始执行来确保代码始终是准确无误的。
接口测试也作为集成测试的一部分,用于判断系统是否满足功能、可靠性、性能表现和安全性的要求。由于接口测试不使用GUI,它主要通过字符方式与测试者进行交互。
③.持续测试
持续测试指的是在软件开发过程中自动对即将发布的软件版本,通过软件输送管道,自动的执行测试并给出即时反馈,依次降低软件缺陷带来的业务风险。
测试自动化框架是一个为特定产品设置一系列特定自动化规则执行测试的集成系统。
这套系统的整合(测试用的)函数库、测试数据集、对象细节(元数据)和各种可重用模块。
将这些模块按照测试需求组合起来便可以得到一个完整的,针对特定功能或应用场景的测试用例。测试框架为自动化测试提供基础,并简化了自动化测试的工作流程。
1.软件测试基础入门知识
软件测试基础入门到项目实战(涵盖软件测试基础+黑马头条项目实战)
2.Linux系统2天快速入门
本视频包含Linux操作系统介绍、Linux的常用命令、vi编辑器。学习掌握本阶段内容,可具备Linux项目搭建能力。
Linux系统2天快速入门教程
3.软件测试MySQL数据库知识精讲+项目实战
本视频包含数据安装,数据表操作、数据操作-增删改查、条件查询、排序、聚合函数、分组、分页、连接查询、自关联、子查询、子查询演练。学习本课程内容,可具备数据库校验能力;还可以快速、规范的掌握数据库增删改查操作。
软件测试MySQL数据库教程
学前导读:学习本阶段内容,可掌握Python语法, 具备编程能力; 能建立编程思维以及面向对象程序设计思想; 能掌握UnitTest框架管理测试用例。
10天玩转Python软件测试
学习本阶段内容,可掌握Python语法, 具备编程能力; 能建立编程思维以及面向对象程序设计思想; 能掌握UnitTest框架管理测试用例。
10天玩转Python软件测试教程
学前导读:ui自动化大体分为web自动化和app自动化,在自动化测试领域中占比很大,经常使用。
1.零基础入门移动自动化——Appium框架
本课程会详细讲解Appium框架,Appium是一个开源的、跨平台的自动化测试框架,该框架适用于Native Application、Mobile Web Application或Hybrid Application的自动化测试。
Appium框架教程
2.轻松教你使用Appium进行IOS真机自动化测试
本套课程,将环境安装的步骤和注意事项呈现给学员,模拟器到真机实操,都进行演示讲解。内容丰富,生动形象,学完即可完成IOS端环境安装及实操。
轻松教你使用Appium进行IOS真机自动化测试教程
接口测试精讲+传智健康实战教程
接口测试是所有自动化测试中应用频率最高部分。黑马此阶段共分成14个部分进行详讲。涉及HTTP,Postman,Pymysql,requests库,集成UnitTes,Dubbo等诸多工具,最后用传智健康项目进行本阶段项目实战。
接口测试精讲+传智健康实战教程
学前导读:性能测试属于高级测试范畴,对于薪资的提升帮助很大,本阶段视频讲解性能测试环境搭建,JMeter工具的使用,性能测试监控、分析和调优方法。
4天快速入门性能测试
本视频通过性能测试基础理论及JMeter工具的学习;通过轻商城项目实战,带学员掌握性能测试需求分析、性能测试计划、测试用例设计、测试脚本开发、性能监控、性能分析和调优、性能测试报告总结。
4天快速入门性能测试