实施自动化测试的意义 | 周末送书

K8s已经成为一线大厂分布式平台的标配技术。你是不是还在惆怅怎么掌握它?来这里,大型互联网公司一线工程师亲授,不来虚的,直接上手实战,3天时间带你搭建K8s平台,快速学会K8s,点击下方图片可了解培训详情。

本文从自动化测试现状、自动化测试的定义、自动化测试流程及自动化测试用例编写 4 个方面来阐述在开展自动化测试任务前,需要我们了解的自动化测试理论知识。

自动化测试现状

随着互联网行业的不断发展,互联网产品同质化现象越来越严重,用户对产品的使用更加追求细腻,用户体验也变得越来越重要。这就不得不强调在实际开发过程中软件质量的重要性。近年来,自动化测试技术一直不断被热捧,好像随便去一家公司面试都会被问到会不会自动化测试,到了企业是否真正运用另当别论。不难发现,自动化测试技术已经成为软件测试从业者必须掌握的一项技能。

可能很多人会认为测试思维比较重要,而测试工具或测试框架只是辅助提升效率。随着互联网产品的竞争日益激烈,企业要做更好的产品来服务用户,必须以技术来驱动创新。就像自动化测试技术的出现一样,其帮助人类从手工测试的重复且机械性的工作中解脱出来,从而把更多精力放在更有意义的事情上面。

这个社会唯一不会改变的事情就是一直在变。对于测试人员来说,技术需要不断更新,在实际工作中,要不断地提升自身技能,学习新的测试技术,这样才可以保证自身价值,不会被社会淘汰。

对于大多数进入软件测试领域的测试工程师而言,每日的测试任务基本都是重复且机械性的。长此以往,测试人员自身技能会怎么样?未来的职业发展又会是怎样?

软件测试技术是一个比较综合且复杂的技术学科,它涉及的知识面和涵盖的领域众多。绝大多数的测试工程师有很长一段时间几乎都停留在功能测试阶段。在这种情况下,对于一些刚入行不久的测试工程师来说,从功能测试转型到自动化测试或许是一个不错的选择。

同样地,自动化测试技术也是互联网行业发展的一种必然趋势,如果你想走得更远,可以向测试开发方向去努力。笔者相信,只要努力,就可以走得更远。

自动化测试的定义

自动化测试可以理解为通过测试脚本来替代手工测试(功能测试)的过程,它可以自动执行那些在正式的测试过程中已经存在的、重复但必需的任务,或者执行一些通过手工难以执行的附加测试。自动化测试对于持续交付和持续测试非常关键。自动化测试实际上涵盖多种类型,如功能(黑盒)自动化测试(常见工具包括 Selenium、Robot Framework 等)、功能(白盒)自动化测试(如 Python 语言中的 Pyunit、Pytest 单元测试框架或 Java 语言中的 TestNG、Junit 单元测试框架等)。此外,还包括性能测试(LoadRunner、Jmeter、AB)和安全测试等。

自动化测试流程

在开展自动化测试任务前,必须要了解并掌握实施自动化测试的流程。如果连自动化测试流程都无法掌握,那么也就无法顺利开展自动化测试任务。自动化测试流程和功能测试的测试流程大同小异。本节内容结合笔者自身多年自动化测试工作经验总结得出,可能并不一定就是标准的自动化测试流程,但具备一定的参考价值。

需求分析

拿到一个项目以后,首先要分析系统哪些模块适合做自动化测试,而且要了解清楚这部分自动化测试实施的意义是什么,能够为我们带来什么样的好处和价值。如果上来就盲目地开展自动化测试,那么结果一定是没有意义的。结合笔者自身多年测试工作经验,一般来说,在评估一个项目是否满足做自动化测试的条件时,可以从以下但不局限于这几个方面考虑:需求不会频繁变更、界面稳定、手工测试稳定、回归测试验证使用较为频繁的功能。

测试方案选择

测试方案选择可以理解为测试工具的选择。在开展自动化测试任务时,一般会考虑选择什么样的方式来实现。最常用的就是采用工具录制或编码的方式来进行,笔者更推荐后者。通过编码可以实现更多开发者自定义的功能,尤其是当测试案例比较多时,要考虑维护、测试数据管理等问题。目前比较主流的自动化测试框架有 Selenium、Robot Framework、Appium、Roboium 和 MonkeyRunner 等,在本书中分别会有 Selenium、Robot Frameowork 和 Appium 等测试框架的案例介绍。此外,测试方案的选择还要结合项目团队所使用的开发语言、项目架构和项目环境等方面考虑。

测试环境准备

开展自动化测试前,测试环境的准备是必需的。测试环境一般包括工具安装环境和自动化测试环境,如果使用 Selenium、Appium 开展自动化测试,就必须要安装语言环境,如安装 Python、Java,还要配置 IDE、JDK 等。不仅如此,还要考虑持续集成环境和版本管理等。

测试框架设计

当编写了大量的自动化测试案例后,测试案例的维护会变得困难。对于测试案例中使用到的公共部分,如测试数据、配置文件和日志文件等都需要存放在不同的文件夹以便管理。因为在实际开发中,测试项目往往是由一个团队来完成的,不同的人会负责不同的测试模块,在后期还会涉及模块和模块间的相互调用等。

测试用例执行

在自动化测试案例执行结束后,可以通过测试报告得知:本次测试执行了多少用例、通过数是多少、失败数是多少及失败原因是什么。还可以通过 Jenkins 定时构建自动化任务,如果涉及代码提交或更新,就会触发自动构建自动化任务,生成测试结果,最后将测试结果发送给相关负责人。

自动化测试用例编写

自动化测试用例和功能测试用例的区别不是很大,包含用例 ID、模块、前提条件、操作步骤、预期结果和实际结果等。下面来看一个登录功能的自动化测试用例,如图所示。

实施自动化测试的意义 | 周末送书_第1张图片

登录功能的自动化测试用例

通过上图,对比手工(功能)测试用例不难发现,自动化测试用例对测试步骤要求更加细致、准确,对测试数据的要求也更加完备、可靠。因为自动化测试本质是模拟用户的手工测试过程。

当然,自动化测试用例的编写还有其他方式,上述用例只是笔者在过往的工作中的一些经验分享。可能很多公司设计自动化测试用例和转换自动化测试用例的并非同一个人,所以要保证编写的自动化测试用例一定要方便其他人来编码自动化测试脚本。

福利时间

本次联合北京大学出版社为大家带来5本《Python自动化测试实战》作为福利。《Python自动化测试实战》从自动化测试理论入手,全面地阐述自动化测试的意义及实施过程,通过学习本书,读者可以快速掌握主流自动化测试技术,并帮助读者丰富测试思维,提高Python编码能力。在文末留言中写下学习Python的体会与心得,截止8月10日12点前,评论点赞数前5名的读者将获取图书1本。

实施自动化测试的意义 | 周末送书_第2张图片

基于Kubernetes的DevOps实战培训

基于Kubernetes的DevOps实战培训将于2020年8月14日在上海开课,3天时间带你系统掌握Kubernetes,学习效果不好可以继续学习。本次培训包括:容器特性、镜像、网络;Kubernetes架构、核心组件、基本功能;Kubernetes设计理念、架构设计、基本功能、常用对象、设计原则;Kubernetes的数据库、运行时、网络、插件已经落地经验;微服务架构、组件、监控方案等,点击下方图片或者阅读原文链接查看详情。

你可能感兴趣的:(实施自动化测试的意义 | 周末送书)