概述
想写这本书很久了,从2022年元旦开始规划,断断续续持续了近两年时间,中间因为众所周知的原因而中断了小半年,直至2023年下半年心绪稍微平复后方再续前章,预计2024年过年前能基本结束编写工作。草草的估算了一下书的内容,整体章节超过了600页,不自吹的说,它是目前国内最详细介绍pytest
基础功能的一本书,我将陆续发布此系列文章。整本书结合了笔者分布式存储项目实践,完整的构建了一套基于Jenkins Pipline 的 CI/CD。
以下内容,为《pytest测试指南》一书的前言。
前言 PREFACE
自动化是什么
自动化指的是利用技术手段,尤其是计算机和机械化的设备,来替代人类执行各种任务和过程。这个概念主要关涉到制造、控制系统(如自动控制)、通信、计算机技术、以及信息技术在内的广泛领域。
自动化的主要目标是提高效率、准确性和持续性。通过减少需要人力参与的工作量,自动化可以降低成本、提高产出、减少错误,并让人力资源得以从事更需要创造性和解决问题能力的工作。在某些场景下,自动化还可以提高安全性,特别是在执行危险或重复性较高的任务时。
在软件领域,自动化可能指:
-
测试自动化:自动执行软件测试任务,包括但不限于单元测试、集成测试、系统测试和验收测试。
-
部署自动化:自动化地将软件部署到生产环境或其他测试环境。
-
业务流程自动化(BPA):用软件自动执行重复的业务过程,以提高效率和减少错误。
-
办公自动化:使用计算机和软件工具来创建、收集、存储、操纵和传递办公室信息需要的数据和信息。
在制造业和其他工业领域,自动化可能包括:
-
机械化生产线:使用机器自动进行产品的组装。
-
工业控制系统:使用传感器、控制器等自动化工具监控和控制机械或化工过程。
-
机器人应用:在生产、搬运、检测、包装等领域使用机器人技术。
自动化在社会各领域的应用日趋广泛,它正成为推动现代工业、提升生产力和创新能力的关键力量。
为什么要做自动化测试
-
减少手工测试占比
自动化测试可以替代大量的手工机械重复性操作,测试工程师可以把更多的时间和精力放在更重要的工作上。需要注意一点:自动化测试无法代替手工测试,二者相辅相成。
-
降低人为错误
在进行软件测试的过程中,由于长时间、高强度或者大负荷的测试工作,导致测试效率和准确性下降,甚至出现错误的情况,这是典型的测试疲劳症状,而自动化测试具有一致性和重复性的特点,测试结果更客观,降低人为错误率,提高了软件测试的准确度、精确度和可信任度。
-
提升回归效率
自动化测试可以大幅提升回归测试的效率,测试人员不用花费大量时间去校验原有功能的正确性,最大的优点是非常适合敏捷开发过程中,也就是加入到CI/CD中。
-
持续测试系统的稳定
自动化测试可以高效实现某些手工测试无法完成或者代价巨大的测试类型,克服手工的局限性,比如关键核心业务需要7*24小时持续运行的稳定性测试。
-
增加竞争力
随着测试行业的发展,测试人员的发展方向越来越广,技术方向也越来越多样化,更多的测试人员开始倾向于往高技术攀爬。而拥有自动化测试开发能力在以后很有可能是我们选择工作的敲门砖。虽然不少人都对这种变化感到惶恐不安,但是更多的人选择站在狂风处,迎接挑战,增加自身的竞业价值。
什么项目适合自动化测试
-
需求稳定,不频繁变更
测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本,而脚本的维护本身就是一个代码开发的过程,需要修改,调试,必要的时候还要修改自动化框架,如果花费的成本高于其节省的成本,那么自动化测试是失败的。我们可以优先对项目中核心模块,相对稳定的模块进行自动化,而变动较大的仍是用手工测试。
-
研发和维护周期长
由于自动化测试需求的确定,自动化测试框架的设计,测试脚本的编写与调试均需要相当长的时间来完成。这样的过程本身就是一个测试软件地开发过程,需要较长的时间来完成。如果项目周期比较短,没有足够的时间去支持这样一个过程,那么自动化测试便毫无意义。
-
项目资源足够
自动化测试从需求范围的确定,到自动化测试框架的设计,以及脚本的编写与调试,均需要相当长的时间来完成。这样的过程本身就是一个测试软件的开发过程。因此有足够的人力,物力非常重要。
本书介绍了什么
本书介绍python开源测试框架pytest,分两大章节,以pytest为核心,对每项实用技术进行详细阐述:
-
第一章介绍pytest基础知识;
-
第二章介绍接口自动化实践。
第一章节分11个子章节,每个章节重点介绍pytest的特有特性,并给出完整的代码示例;第二章节为笔者所在公司项目的自动化测试框架设计与开发的介绍,并结合Jenkins实现了每日自动构建。
建议读者先将第一章基础技能夯实,牢牢掌握,再通过后续章节的内容来自己动手编写代码,在工作中实践,在实践中验证学习效果。在工作中可先进行接口测试自动化,再结合Jenkins部署执行,实现公司层面持续集成(CI)和持续部署交付(CD)的落地。
本书所涉及的非测试专业技术,例如Cobbler所涉及的网络方面的知识、Jenkins pipeline所涉及的技能、python语言编程技能知识等,读者可自行学习。
笔者相信,pytest框架在未来一定会大放异彩。
由于笔者水平有限,书中难免存在不妥之处,请读者见谅,并提宝贵意见。
本书适用于哪些人群
本书适用于以下人群:
-
自动化测试初学者
对于刚刚接触自动化测试的从业者或爱好者,这本书将是一个很好的起点。它提供了对pytest的基本介绍和指导,帮助读者了解如何使用pytest进行自动化测试。
-
经验丰富的自动化测试人员即使是有经验的自动化测试人员,也可能需要回顾某些概念或深入了解某些高级特性。这本书提供了足够的详细信息,以满足这些需求。
-
希望提高测试效率的开发者对于那些希望提高软件测试效率的开发者来说,这本书将提供有关如何使用pytest进行高效测试的实用建议。
阅读这本书的基本要求包括:
-
对基本的软件测试概念有一定的了解。
-
熟悉Python编程语言,已具备Python编程的基础知识。
-
对自动化测试有一定的兴趣和热情。这本书旨在帮助读者在实际项目中应用pytest,因此对自动化测试的兴趣和热情是必不可少的。