浅谈自动化测试(一)

291次围观   0个点赞   0人评论

作者头像

zeal

1年前 发表于 技术专栏

浅谈自动化测试(一)

291次围观   0个点赞   0人评论

作者头像

zeal

1年前 发表于 技术专栏

前言

随着互联网的发展,人工智能和自动化是未来的一大趋势,目前随着敏捷开发模式的流行,持续集成和持续交付的开发过程,对于开发-测试-部署都是非常高的要求,近些年,伴随着 docker 容器技术的发展,目前市面上的自动化部署已经层出不穷,然而对于自动化测试这快,虽然也有很多框架或技术,但是却很难找到一款能够适合自己的,如何才能利用现有的这些技术,能够实现高效可靠的自动化测试呢?当然,这是一个过程,就像其他的 devops 一样,都是一个不断进步和完善的过程。


自动化测试

1、了解自动化测试

什么是自动化测试? 概念:把人为驱动的测试转化为机器执行的一种过程,重点在于持续集成这个概念。为什么要自动化测试? 假如能够有一个成熟的解决方案来代替我们传统人工的测试过程,那么这将能够节省大量的人力成本和时间成本。

如上图所示,敏捷大师 Mike Cohn 提出该概念,然后由 Martin Fowler 大师在此基础上提出了测试分层概念,以区别于传统的自动化测试。

2、自动化测试分层

单元自动化测试(数据处理层):指对软件中最小的可测试单元进行检查和验证,一般需要借助单元测试框架,如 java 的 Junit、TestNG,python 的 unittest,常见的手段是 code review 等;

接口自动化测试(业务逻辑层):主要检查验证模块间的调用返回以及不同系统、服务间的数据交换,常见的接口测试工具有 postman、jmeter、loadrunner 等;

UI 自动化测试(GUI 界面层):UI 层是用户使用产品的入口,所有功能通过这一层提供给用户,测试工作大多集中在这一层,常见的测试工具有 UFT、Robot Framework、Selenium、Appium 等;

性价比:按照测试金字塔模型以及投入/产出比,越向下,回报率越高;

Google 的自动化分层投入占比:

小测试(Unit):占比 70%;

中测试(Service):占比 20%;

大测试(UI):占比 10%;

自动化测试面临的挑战:面临的最大挑战就是变化,因为变化会导致测试用例运行失败,所以需要对自动化脚本不断 debug,如何控制成本、降低成本是对自动化测试工具以及人员能力的挑战。

3、什么样的项目适合自动化测试

如上图所示,真正工作中无法全部满足以上条件,所以需要作出权衡,一般来说,只需要满足以下几点,就可以对项目开展自动化测试(图中红色框标注的选项):

① 需求稳定,不会频繁变更

自动化测试最大的挑战就是需求的变化,而自动化脚本本身就需要修改、扩展、debug,去适应新的功能,如果投入产出比太低,那么自动化测试也失去了其价值和意义;

折中的做法是选择相对稳定的模块和功能进行自动化测试,变动较大、需求变更较频繁的部分用手工测试;

② 多平台运行,组合遍历型、大量的重复任务

测试数据、测试用例、自动化脚本的重用性和移植性较强,降低成本,提高效率和价值;

③ 软件维护周期长,有生命力

自动化测试的需求稳定性要求、自动化框架的设计、脚本开发与调试均需要时间,这其实也是一个软件开发过程,如果项目周期较短,没有足够的时间去支持这一过程,那自动化测试也就不需要了;

④ 被测系统开发较为规范,可测试性强

主要出于这几点考虑:被测试系统的架构差异、测试技术和工具的适应性、测试人员的能力能否设计开发出适应差异的自动化测试框架;

4、常见的自动化测试工具简介

UFT(Unified Functional Testing)

即原来的 QTP(Quick Test Professional Software)与 ST(Service Test)合并而来,由 HP 公司开发,是一个企业级的商业自动化测试工具,提供了强大易用的录制回放功能,

同时兼容对象识别模式与图像识别模式,支持 B/S 和 C/S 两种架构的软件测试;

Robot Framework

一款基于 python 语言编写的自动化测试框架工具,具备良好的扩展性,支持关键字驱动,支持多种类型的客户端和接口,可进行分布式测试;

SeleniumSelenium

应用于 web 的自动化测试工具,支持多平台、多浏览器、多语言来实现自动化,优点如下:

① 开源、免费;

② 多浏览器支持:chrome、Firefox、IE、Edge 等;

③ 多平台支持:Linux、Windows、MAC;

④ 多语言支持:java、python、Ruby、C#、JavaScript、C++;

⑤ 对 web 界面有良好的支持;

⑥ 简单(API 简单)、灵活(开发语言驱动);

⑦ 支持分布式测试用例执行;

Nightwatch

由 Node.js 驱动的自动化测试框架,使用 W3C Webdriver(以前的是 Selenium)。

Nightwatch 是一个完整的集成解决方案,用于 web 应用程序和网站的端到端测试,以及用于 Node.js 单元和集成测试。

github 地址为:https://github.com/nightwatchjs/nightwatch 目前该项目在 github 上已经超过 8.6k star,是一个比较火热的自动化测试框架。 官网地址为 http://nightwatchjs.org/

下一篇我讲介绍如何使用

评论 (0)
在这里说点什么吧... (取消回复)
留下一个好听的昵称吧!
好听的昵称!
请输入正确的邮箱格式!
不错的邮箱!
评论内容不能为空!
理性发言,和谐讨论!