大家好,又见面了,我是你们的朋友全栈君。
一、概述
1.自动化测试是把人为驱动的测试行为转化为机器执行的一种过程,模拟手工测试步骤,通过由程序语言编制的测试脚本,自动地完成软件的测试设计、单元测试、功能测试、性能测试等工作,包括测试活动的自动化和测试过程管理的自动化
第一代-以工具为中心的自动化,典型:以捕捉/回放工具为典型
第二代-以脚本为中心的自动化,已经认识到统一脚本语言的重要性,测试自动化主要依靠测试工程师的主观能动性,测试脚本大量产生,增加了检查点的功能,可以对软件做验证
第三代-以平台为中心的自动化,称为测试框架,把脚本抽象化,让非技术人员在不懂测试脚本,不会使用程序的情况下,也可以使用自动化测试工具建立自动化测试案例
第四代-以业务为中心的自动化,赚注与业务需求的自动化测试,用通用的业务描述语言来描述业务,即测试用例,然后利用自动化测试用例,可以自动切换测试点和进行重复测试,容易适应测试内容复杂,工作量大的要求
第五代-以测试设计为中心的自动化,专注于执行的测试自动化转变到了测试设计的自动化上,其特点是利用已经发展成熟的测试设计技术,或搜索算法自动地生成测试用例和脚本
2.自动化测试执行技术:执行测试用例或脚本,自动操作被测对象及测试环境中周边设备来完成测试步骤和结果检查,自动判断出测试用例的执行结果的相关技术
3.自动化测试设计技术:通过某些信息由生产算法自动地生成测试用例和测试脚本的相关技术
4.自动化测试设计两个方向:基于模型的测试技术,基于搜索的测试技术
基于模型:通过模型描述软件的需求和期待的行为,自动地生成测试用例和脚本,测试建模仍然需要人工实施,而测试生成则由生成算法来自动完成
基于搜索:吧测试数据生成问题转化成为搜索问题,即从软件运行的输入域中搜索所需的值以满足测试需求,经典的基于遗传算法的测试生成
5.从测试目的角度看自动化测试可分为:功能自动化测试与非功能自动化测试,非功能自动化测试包括性能自动化测试和信息安全自动化测试
功能自动化测试:通过录制回放或编码的方式来测试一个软件的功能实现,可进行自动化回归测试
性能自动化测试:通过测试工具模拟多种正常、峰值以及异常负载条件磊对系统的各项性能指标进行测试,性能测试重在结果分析,能够通过数据分析到系统的瓶颈
负载测试:确定在各种工作负载下系统的性能
压力测试:通过确定一个系统的处理能力瓶颈或业务性能随系统压力下降到不能接受程度的点,来获得系统提供的最大服务级别的测试
信息安全测试:在软件产品生存周期中,特别是产品开发基本完成到发布阶段,对产品进行检验产品符合需求定义和产品质量标准的过程
6.按照测试目的划分,可将自动化测试工具分为:功能自动化测试工具、性能自动化测试工具、信息安全自动化测试工具
7.按照访问和控制的接口划分:用户界面自动化测试工具、接口自动化测试工具
8.按照所对应的测试阶段划分:单元自动化测试工具、集成自动化测试工具、系统自动化测试工具
9.按照测试对象所在操作系统平台划分:web应用测试、安卓移动应用测试、IOS移动应用测试、Linux桌面应用测试、Window桌面应用测试
10.自动化测试系统的通用架构
测试生成层:由层面的模块来产生测试用例
测试定义层:在此层面上定义测试用例和测试例程
测试执行程:此层面的模块提供测试执行所必需的功能
测试适配层:每个模块的主要任务是与被测试对象或测试环境中的各个设备直接接口交互,并为测试定义的测试用例提供一致的接口
测试框架:仅在通用自动化测试框架中的提供任何自动化测试系统都应支持通用功能的模块
二、自动化测试的实践策略
1.测试金字塔中,自动化测试投入越早,层级越低,投入产出比越高
2.单元层:单元测试,最有价值的测试,应使用相应的单元测试框架来规范地实施单元测试
3.服务和接口层:集成、接口自动化测试,它的价值居中
4.用户界面层:用户界面自动化测试,可看出它的价值最小,大部分测试人员都是对用户界面层的功能进行测试
5.适合使用自动化测试工具情况:
被测系统具备足够的易测试性;需求稳定,不会频繁变更;每日构建后的测试验证;研发和维护周期长,需要频繁执行回归测试;用户界面稳定,变动少;需要在多平台上运行相同测试案例;项目进度压力不太大;测试人员具有较强的编程能力
6.业界普遍经验,表中四个条件为项目中开展自动化测试的必要条件
7.基于模型的测试技术
软件测试设计的初始步骤就是在理解被测系统的的功能基础上,用一定的模型结构类描述被测试系统的功能和质量属性,然后根据测试模型获取要覆盖的测试覆盖项,在获取具体明确的测试覆盖项后,可设计测试步骤来完成测试用例的设计,在实践中,这样的模型常常被称为测试模型
对于在项目中引入和应用基于模型的测试(自动化测试设计),应考虑包括测试策略的选择,测试工具的选取,建模流程的规定、建模质量的度量、基于模型的测试工具与自动化测试执行系统集成的方法
基于模型的测试技术主要优点:
测试设计的自动化能改善工作效率和减少人为错误
尽早建立测试模型能改善沟通,提前发现需求中的缺陷
使得不了解测试设计技术的业务分析人员也能实施测试设计
提高测试覆盖,从而改进软件产品的质量
缩短测试设计的周期,加速测试活动
缺点:
从模型生成测试用例数量可能过多
建模需要一定的投入
模型也可能描述错误
模型的抽象可能带来理解上的困难,所有建模都有一定程度的抽象,当抽象的逻辑原则未达成共识时,可能导致评审者无法理解测试模型
基于模型测试工具:Spec Explorer 、Graph Walker、Stoat、MBT On Cloud
8.基于搜索的测试技术
9.基于遗传算法的测试流程
1)先随机遍历用户界面生成一组随机的测试用例集
2)对每个随机测试用例进行优势信息评估
3)在测试用例生成的过程中,遗传算法从一组候选的个体测试用例集开始,然后利用三种不同的搜索操作生成下一组更优的测试用例集,这里,选择操作时从每一轮生成的测试用例集中选择更优的个体测试用例进行重组(交叉和变异),交叉操作时将两个独立的个体测试用例产生进行交叉重组,从而共享部分来源于父辈测试用例的优势信息,而变异操作时对一部分的个体测试用例进行随机修改,注入额外信息
4)基于搜索的测试技术通过不断地迭代上述三个搜索操作,对给定的一组测试用例集进行优化,在优化过程中不断执行测试用例并检测是否有软件错误发生
优缺点:基于搜索的测试技术的优势在于把测试用例生成问题灵活转化为为了在特定软件对象的输入域中搜索更优解的问题;局限性在于变异操作可能产生大量输入时间序列无效的测试用例
10.自动化测试工具
三、测试 执行的自动化技术
1.制定测试计划:此过程需要明确自动化测试范围、测试目的、测试内容、测试方法、测试进度要求
2.分析测试需求:将软件需求转换成测试需求的过程,是建立在测试计划中的测试内容的基础之上,进行细化明确测试点
3.设计测试用例:自动化测试用例是针对自动化测试框架、应用脚本技术进行用例解析
原则:
一个脚本是一个完整的场景;一个脚本只验证一个功能点;重点测试功能中的正向逻辑;测试用例对应的测试脚本尽可能互相独立;整个脚本中只对验证点进行验证
4.搭建自动化测试框架:在用例设计工作开展的同时可着手搭建测试环境,典型要素:公用的对象;公共用的环境,公共的方法,测试数据
5.编写测试脚本,是具体的测试用例的脚本转化,包括:准备、执行、断言和清理
6.一个完整的自动化测试通常包含:验证功能是否正确、覆盖边界条件、验证异常和错误的处理
7.执行测试:脚本调试结束后,便可以再检验模式下测试被测试软件
8.测试输出结果的收集和分析
1)测试结果:每次测试结束,测试工具都会把测试情况显示在测试结果报告中,测试结果报告会详细描述测试执行过程中发生的所有主要事件,如检查点、错误信息、系统信息或用户信息
2)跟踪测试缺陷:测试记录的缺陷要记录到缺陷管理工具中去,以便定期跟踪处理,开发人员修复后,需要对此问题执行回归测试
3)持续集成和自动化测试:持续集成是频繁地将代码集成到主干,持续集成强调开发人员提交了新代码之后,立刻进行构建,单元测试,根据测试结果,可以确定新代码和原有代码能否正确地集成在一起
持续集成好吃:快速发现错误,防止分支大幅度偏离主干
持续集成目的:让产品可以快速迭代,同时还能保持高质量
一个完整的持续集成系统包括:一个自动构建过程,自动编译、分发、部署和测试
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154607.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...