自动化测试技术笔记(二):准备工作的切入点

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介: 要做web的UI自动化测试,工具选择了selenium,我们常用的浏览器是chrome,用户使用环境是windows,自动化测试要求快速无感执行,就需要考虑Linux环境下基于chrome浏览器的case执行(chromium),还要考虑Linux操作系统对chrome的适配问题(centos和uhuntu,以及centos的版本选择6.5还是7.2),甚至还要考虑浏览器驱动的适配问题。

上篇整理的技术笔记,聊了自动化测试的前期调研工作如何开展,最后一部分也提到了工作的优先级区分。


这篇文章,接上篇文章的内容,来聊聊自动化测试前期的准备工作,需要考虑哪些方面。


测试环境选择和搭建


自动化测试运行环境,不外乎测试环境(SIT)、验收环境(UAT)、灰度环境(PRE)和生产环境(PROD)。在不同的环境运行的目的、效果、优势和不足也各不相同,下面是不同环境的区分对比结果。


环境名称 优势 不足
测试环境(SIT) 节省环境资源,代码版本比较新,可及时验证,复用性强 服务不稳定,测试数据容易混淆,测试结果准确性不高,需要人工二次校验
验收环境(UAT) 服务相对稳定,环境复用性强,代码版本相对较新 测试数据容易混淆
灰度环境(PRE) 环境稳定,服务齐全,可以更好的进行业务流程的自动化测试 测试数据容易混淆,需要单独的维护和管理测试数据
生产环境(PROD) 环境稳定,服务齐全,主要用来做线上主流程巡检,防资损 需要单独维护测试数据和账号,且需要配置白名单过滤,防止污染生产数据


不同环境对自动化测试开展的便利性和制约性不同,建议根据自动化测试的成熟度、要解决的问题来选择不同的环境。


当然,如果选择搭建单独的自动化测试环境,就要考虑环境资源申请、域名、代码仓库权限、维护成本等因素。


还有个很容易忽视的点就是服务器操作系统类型和版本,举个我当时遇到的例子:


要做web的UI自动化测试,工具选择了selenium,我们常用的浏览器是chrome,用户使用环境是windows,自动化测试要求快速无感执行,就需要考虑Linux环境下基于chrome浏览器的case执行(chromium),还要考虑Linux操作系统对chrome的适配问题(centos和uhuntu,以及centos的版本选择6.5还是7.2),甚至还要考虑浏览器驱动的适配问题。


测试框架选型和设计


近几年成熟稳定的开源自动化测试工具和框架可选择的比较多了,但具体问题具体分析,测试框架的选型和设计同样是很重要的事情。在选择测试框架或者工具时,一般需要考虑如下几方面:


  1. 自动化测试类型:UI/API/UNIT,UI自动化要考虑web和移动端的区别,单元测试要考虑被测系统的开发语言;
  2. 框架自身的生态:框架支持的编程语言、社区活跃度、文档是否齐全、业内落地案例、测试同学自身的技术栈;
  3. 框架的学习成本:不能只考虑选择个人熟悉的,还要考虑后续的多人协同,团队其他同学的学习上手难度;
  4. 框架的维护成本:后期case多了或业务场景变更后,case的维护成本以及框架本身是否提供了更好的封装模块;


测试脚本和数据管理


测试脚本和测试数据管理,需要结合自动化测试的执行环境一起来看。


一般来说,测试脚本为了便于统一管理和多人协作维护,现在都是采用Git+gitlab的方式,做好版本管理和分支规范即可。


而测试数据的管理,相对来说比较复杂,可选的方式也不同。下面是常见的几种测试数据管理方式对比:


测试数据管理方式 优势 不足
Excel参数文件形式 数据维护方便,简单快捷 不利于多人协作,数据量大了之后数据维护更新成本高
配置文件形式 适合热点数据/通用信息管理,如账号密码等 无法适用于复杂场景和大规模的数据管理
数据库统一管理 便于数据隔离,统一管理 一般是配合单独的自动化环境一起维护


测试范围和校验粒度


标题所述的两点,其实是同一种问题。


测试范围的筛选,需要结合投入的资源,项目紧急程度来综合评估,一般测试范围的覆盖优先级,可以遵循这个顺序:核心业务——高频业务——问题较多的业务。


覆盖率的考量,可以遵循这个顺序:核心场景——核心业务流程——异常场景,如此覆盖后,再考虑逆向流程。


测试用例的粒度,可以参照功能测试用例的区分,从 P0 &冒烟case到 P1 再到 P2,以此类推。


当然,如果遇到比较复杂和亢长的流程,可以考虑拆分为多个测试用例,在同一个任务里按上下游关系去执行。粒度的设定和拆分,在不同阶段有不同的划分。刚开始落地时,可以由粗到细,先实现再考虑不断优化。


持续集成和测试报告


自动化测试,如果无法做到持续集成快速验证,那就不能称之为自动化。要做到将自动化测试,我个人认为有如下几个标识来判断:


  1. 执行的频次和效率:比如1天可以执行100个功能case,那自动化最起码要在10分钟甚至1分钟内完成;
  2. 执行结果自动校验:功能测试可以人工来判断测试是否通过,自动化测试的通过率&成功率需要达到一定的成功率(比如90%以上),且失败的case可以重试验证,或者失败的结果和日志及时通知给相关人员;
  3. 无人值守自动运行:这点其实很多方法可以实现,比如定时任务,条件触发。当然做到这点还算不上自动化,必须考虑到如果出现重大问题还需要及时的发现和告警通知;
  4. 是否融入交付流水线:交付流水线即我们今天常说的CICD或者devops流水线,常见的场景有服务打包编译后的自动化单元测试,服务自动发布后的接口自动化和UI自动化测试,以及服务上线前和上线后的自动化冒烟和回归测试,甚至还可以加入线上的日常自动化巡检。


外部调用和多人协作


以电商业务为例,支付需要调用三方,短信通知需要调用短信服务商,发货物流需要调用三方,但实际工作中三方提供的环境往往不满足我们的测试需要,这个时候就需要一定的手段来解决这个问题。常见的手段如下:


  1. 挡板&mock(最常用的手段);
  2. 流量染色+影子库(实现成本较大,技术复杂性较高);
  3. 和三方协商一致后配置专门的白名单或者渠道(很难协商);


至于多人协作问题,其实涉及很多方面,比如:


  1. 测试数据专人统一维护,还是按需维护,提供专门的工具或者流程规范约束;
  2. 测试用例和测试脚本的维护,各管各的还是提供统一的规范demo,专人检查或者定时review;
  3. 测试范围的边界如何界定,重合部分如何区分职责;


以上就是自动化测试落地前的准备工作,内容来源于我之前做自动化测试工作时的一些笔记内容,稍加提炼和修改。


下一篇我会聊聊自动化测试落地方案以及落地过程中常见的问题以及解决思路。

相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
相关文章
|
17天前
|
前端开发 JavaScript 测试技术
前端测试技术中,如何提高集成测试的效率?
前端测试技术中,如何提高集成测试的效率?
|
17天前
|
运维 监控 安全
运维自动化:提升效率与可靠性的关键技术
在信息技术飞速发展的今天,企业对IT系统的稳定性和高效性要求越来越高。运维自动化作为实现这一目标的重要手段,通过软件工具来模拟、执行和管理IT运维任务,不仅大幅提高了工作效率,还显著增强了系统的可靠性。本文将探讨运维自动化的概念、实施步骤以及面临的挑战,旨在为读者提供一份关于如何有效实施运维自动化的指南。
|
17天前
|
数据采集 前端开发 安全
前端测试技术
前端测试是确保前端应用程序质量和性能的重要环节,涵盖了多种技术和方法
|
2月前
|
存储 监控 网络协议
服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
【10月更文挑战第11天】服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
122 32
|
24天前
|
前端开发 JavaScript 测试技术
前端小白逆袭之路:如何快速掌握前端测试技术,确保代码质量无忧!
【10月更文挑战第30天】前端开发技术迭代迅速,新手如何快速掌握前端测试以确保代码质量?本文将介绍前端测试的基础知识,包括单元测试、集成测试和端到端测试,以及常用的测试工具如Jest、Mocha、Cypress等。通过实践和学习,你也能成为前端测试高手。
40 4
|
2月前
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
555 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
2月前
|
测试技术
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
本文是关于自动化测试项目实战笔记,主要介绍了如何测试用户注册功能,包括验证码错误、注册成功以及弹框处理的测试步骤和代码实现。
96 2
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
|
29天前
|
编解码 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(10-2):保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali——Liinux-Debian:就怕你学成黑客啦!)作者——LJS
保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali以及常见的报错及对应解决方案、常用Kali功能简便化以及详解如何具体实现
|
2月前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
|
2月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
68 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)