• 全网超细,自动化测试-数据管理/实施落地问题,跟着直接上高速...



    前言

    自动化测试——测试数据如何管理

    自动化测试过程中,现在大多都默认测试脚本与测试数据分离的设计,这样做的好处是:降低维护成本,迁移成本以及提高效率。

    测试数据放在哪里?
    如何管理,不能一概而论。应该从以下几方面来考虑:

    1、业务场景

    ①比如在UI自动化测试中,需要测试某个电商网站的各个业务模块,但前提是要用户登录。

    这个用来执行登录的测试账号数据往往是固定的,那么专门将一组username和password放在一个测试数据文件或者测试数据库中,这样就显得太笨重,耗时费力。

    将其写入测试脚本或者写入配置文件,直接引用效率会更高。

    ②同样,测试电商网站,账号体系分为普通账号,会员账号,会员还分很多等级,有时候为了测试会员中心不同的账号展示的信息是否不同,就需要使用不同的等级的账号登录。

    这种场景下,可以将测试数据放在测试文件里(比如excel、csv),通过参数化的方式来循环读取,执行后续操作。

    ③在API自动化测试中,比如针对restful风格的接口,它的域名相对来说都是固定的,只是不同接口的path不同,那么也可以将域名写入配置文件。

    测试过程中只需要将实例化的域名和path进行拼接即可,这样也省却了在测试数据文件中维护的成本,一定程度上提升了测试效率。

    2、数据类型

    测试数据也分不同类型,大概分为以下几种类型:

    base-data:即基础数据,比如电商网站的商品信息、SKU,比如物流公司的仓储管理等,这类数据往往基数比较大,可以视为持久层,储存在DB中;

    test-data:测试数据,根据业务场景不同,数据无论量级还是变更频次也不同,基于测试脚本与数据分离的概念,可放在专门的测试文件中,比如excel、csv;

    ephemeral-data:临时数据,即使用一次的数据,这种类型的数据可以用临时文件存储(比如dat、csv等)格式,然后进行参数化读取,或者直接写入脚本中;

    3、数据量级

    ①还是电商网站的某个场景,需要先执行登录,登录的账号比如是专门配置的一个测试账号,相对固定,那么将测试账号写入测试脚本也无可厚非。

    不过我本人不喜欢将测试数据直接写入脚本,这种情况我会写入配置文件,然后实例化调用,这种情况就需要根据个人习惯来设计,没有固定的套路;

    ②数据量级在几十——几百上千之间,这种时候,可以写入excel文件进行存储管理,但是excel的局限在于其本身目前最大支持65500+行的数据存储,

    而且只支持单事务,如果需要多线程读取,就会变成瓶颈。

    ③csv文件,结构简单、通用,可以和excel进行转换,可以减少存储文件size,且具备简单的安全性,可以在一定程度上替代excel成为数据存储文件。

    本人目前在大多数场景下也是使用csv类型的文件进行测试数据存储管理;

    ④当测试数据超过一定量级,比如性能测试中,如果要执行并发测试或者稳定性测试,那么所需测试数据量级就很大,这时使用excel或者csv就会变得很不方便。

    无论是从维护的成本还是便捷性考虑,都应该选择利用DB或其他高效的管理方式来存储和管理测试数据;

    4、使用频次

    测试数据的重用频次不同,也需要选择不同的存储方式,比如:

    ①once:只使用一次的测试数据,那么只需要写入临时文件,用完作废或者删除即可;

    ②often:即经常使用的测试数据,应根据数据量级,使用场景,数据类型选择合适的存储管理方式;

    ③alway:可以理解为base-data或者持久数据,这种类型的数据因为其本身更新频次很低,或者数据量级较大,一般存储在DB中是比较好的一种管理方案。

    自动化测试——实施落地

    1、当前面临的痛点是什么?

    引入自动化测试是为了解决工作过程中遇到的问题或痛点,所以在引入之前第一个要考虑的是当前面临的痛点是什么。

    比如:线上功能bug频发,人力资源时间不足导致团队加班太多,版本迭代快/多版本并行等,且这些痛点都已经严重影响到了团队的日常工作效率和氛围。

    先将面临的问题和痛点列出来,按照影响范围和优先级排序,然后分析背后的原因。

    2、痛点背后的原因有哪些?

    线上功能bug频发,可能的原因有漏测/case覆盖率不足/需求变更快/发布流程不规范等原因。

    人力或者时间不足,背后的原因可能有团队同学能力不足/团队效率不高/管理混乱/缺乏提效手段和工具。

    版本迭代快多版本并行的情况,背后的原因就更复杂了,涉及到流程/管理/业务成熟度/企业所处阶段等多种因素。

    3、有什么可以解决问题的方案?

    分析出团队面临的痛点以及背后的原因,我的建议是将原因列出来进行归类,比如:

    资源问题:人手不足/工时评估不合理;
    流程问题:研发交付流程混乱,发布不可控;
    管理问题:团队效率不高,管理混乱,职责不清;

    技术建设问题:缺乏CI/CD工具&需求/代码/case/bug管理工具,团队同学缺乏相关经验;

    4、自动化是不是最合适的解决方案?

    问题分类和排优先级之后,就是case by case的分析有哪些解决方案了。假设某部分问题可以通过自动化测试来解决或者改善,那就可以着手进行下一步分析。

    5、当前的情况是否适合开展自动化测试?

    “自动化测试适用于重复度较高的工作,且不是一蹴而就即插即用就能解决问题的。需要相对稳定的业务需求迭代、比较成熟稳定的研发团队和一定的技术基础设施建设,以及较为规范的流程才能更好的落地,达到提效的目的”。

    举个例子:
    某创业公司,当前处于产品初创和快速迭代期,追求的是快速推出MVP产品推向市场,业务不稳定,人力资源紧张,技术基础设施很差,那这个时候是不适合做开展自动化测试的。

    下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

    一、Python编程入门到精通

    请添加图片描述

    二、接口自动化项目实战

    请添加图片描述

    三、Web自动化项目实战

    请添加图片描述

    四、App自动化项目实战

    请添加图片描述

    五、一线大厂简历

    请添加图片描述

    六、测试开发DevOps体系

    请添加图片描述

    七、常用自动化测试工具

    请添加图片描述

    八、JMeter性能测试

    请添加图片描述

    九、总结(尾部小惊喜)

    生命中最伟大的胜利,不是战胜别人,而是战胜自己。用汗水和努力书写辉煌,坚持奋斗,超越自我,成就那个无法想象的更好的自己!

    无论风雨多么艰难,永远不要放弃追求梦想的勇气。奋斗是人生的底色,努力是成功的密码。坚定信念,坚持前行,你一定能够创造出辉煌的人生!

    成功需要勇气、耐心和恒心,但最重要的是你的毅力。保持信心,坚持追求梦想的道路,哪怕前方有无数困难,你一定能够收获属于自己的美好未来!

  • 相关阅读:
    一些 Conda 的常用命令
    Linux上安装jdk Tomcat mysql redis等
    《DevOps 精要:业务视角》- 读书笔记(三)
    Facebook Messenger链接分享:如何创建链接并设置自动化内容
    算法3-杆围水(contianer with most water)问题
    双11倒计时3天!凯诘、华扬、多准:“三波段脉冲式促收”策略解读
    spring boot集成MockMvc进行集成测试小案例
    security异常处理机制
    BM23 二叉树的前序遍历
    【机器学习数据集制作】视频转图片(代码注释,思路推导)
  • 原文地址:https://blog.csdn.net/csdnchengxi/article/details/133973803