软件测试基础知识(5)——自动化测试(上)
软件测试是如何定义的呢?有句经典的话叫:程序测试是为了发现错误而执行的过程。而这个执行的过程主要包括两部,一是运行被测试的软件,执行软件的功能,另一部分是运行其他工具,去检查软件的内部和外部。
这里描绘一个手工测试的场景:测试主管让测试工程师去把软件的所有功能遍历一遍,
该测试工程师运行被测软件,然后通过鼠标、键盘等,把软件所有的功能,全部检查了一遍,这个就是传说中的“人肉测试”。
结合上面的说法,自动化测试就是让被测试的软件自己运行起来,执行软件的功能;或者就是让其他的工具自己运行起来,去检查软件的内部和外部。
既然测试是一个过程,那么自动化测试,就是自动的执行的过程。
可是人类直接的沟通,远比人机沟通容易啊。
首先,机器听不懂“人话”,无论中文,英文……
其次,机器默认会的“汇编语言”,应该是绝大部分的童鞋不会,并且短期掌握不来吧。
机器学习一个编程语言,轻松和简单到令人发指的地步:安装上去,机器就学会了。好在人类学习编程语言也不是特别难的事情。看来这个可行。
有了编程语言,就有了人机交流的桥梁,剩下的事情,是帮机器挑选工具。做对应的测试,就需要找到对应的工具,这样自动化就自动起来了。
主流的自动化测试方案,无一例外,都有人机沟通的编程语言,加上机器操作的工具来组成。
软件测试基础知识(6)——自动化测试(中)
为什么用自动化的软件测试?
-
减少软件测试时间与成本改进软件质量
-
通过扩大测试覆盖率加强手动测试工作
-
进行手动测试难以完成的、需要更高的成本、更长的计划、更高的质量的任务
软件测试自动化的主要应用有哪些?
-
冒烟测试
-
回归测试
-
多平台兼容性测试和配置测试改善日常测试的执行
-
完成手动测试无法完成的工作下班后无人值守测试
-
性能测试
什么样的项目适合自动化测试?
实施自动化测试之前需要对软件开发过程进行分析,以观察其是否适合使用自动化测试。通常需要同时满足以下条件:
-
软件需求变动不频繁:
自动化脚本变化的大小、频率决定自动化维护成本,变化大,测试人员要进行扩展、修改、调试
-
项目周期较长:
需求确定,框架有好的设计,脚本开发调试时间较长
-
自动化测试脚本可重复使用:
测试项目之间是否存在很强的差异性,如:
c/s、b/s之间的架构所展示的功能差不多,对脚本可重复使用,选用的技术、工具是否适应这种差异,测试人员是否有能力设计出满足条件的差异
软件测试自动化的过程?
-
需求收集
-
测计用例设计与开发
-
开发自动化测试软件框架和测试脚本
-
自动化测试脚本的执行和结果报告
-
程序审查与评估
软件测试基础知识(7)——自动化测试(下)
自动化测试框架类型?
第一种,基于模块的测试框架
这种框架将整个“测试中的应用程序”分为许多逻辑和独立的模块。对每个模块,创建一个独立的测试脚本,这些脚本结合在一起时,会构建成更大的测试脚本,代表多个模块,这些模块被抽象层隔开,这样在应用程序的各个部分所做的更改不会对该模块产生影响。
缺点:在为每个模块实现测试脚本的同时,测试数据已经嵌入到测试脚本中,这导致使用不同的测试数据进行测试时需要在测试脚本中进行操作。
第二种,库体系结构测试框架
是建立在基于模块的测试框架之上,但比后者有一些额外的优势。它没有将测试的应用程序划分为测试脚本,而是划分为函数。因此,为测试中的应用程序创建一个由公共函数组成的公共库,当需要时,可以从测试脚本中调用这些库。
它的基本原理就是确定通用的步骤,并将这些步骤分组到公共库下的函数中,在需要的时候在测试脚本中调用这些函数。
缺点:像基于模块的框架一样,测试数据嵌入测试脚本中,改变数据需要修改脚本;随着越来越多的库的引入,可能会使框架越来越复杂。
第三种,数据驱动测试框架
将测试脚本逻辑和测试数据彼此分离。可以把测试数据单独存储起来,存储数据的可以是 xml文件、excel文件、文本文件、csv文件、ODBC数据库等。一般都是以 key-value 格式存储,方便获取使用。
缺点:
过程比较复杂,可能需要定制测试数据源格式和读取机制
只有具有相同执行步骤集的相似测试用例才能组合成多组数据。不同的执行步骤集需要不同的测试用例
第四种,关键字驱动测试框架
是对数据驱动测试框架的扩展,从某种意义上说,它不仅将测试数据从脚本中分离出来,它还将数据测试脚本的特定代码集保存到外部数据文件中。这些代码集被称为关键字,每个关键字都一种操作。关键字和测试数据都是独立于该框架。
缺点:
需要懂得关键字的创建机制,从而可以自己开发关键字
随着越来越多的关键字引入,可能会使框架逐渐变得复杂
测试用例变得更长且复杂,从而影响测试用例的可维护性
第五种,混合测试框架
就是上述(模块化,数据驱动和关键字驱动)多种类型框架的组合。就是利用各种类型框架的优点,组合起来的混合型测试框架。
在这种框架中,通过将测试用例结合到模块化测试框架中,从模块化脚本中开发测试用例。每个测试用例都使用一个驱动程序脚本,该脚本使用数据驱动框架中的数据文件和关键字驱动框架中的操作文件。
缺点:会比其他类型的测试框架更为复杂一些,例如阅读、维护等
持续分享工业领域相关知识:
易择扣得EasyCode专注于工业领域智能化、自动化研发。