自动化测试怎么学(自动化测试要学些什么)
1.移动互联网测试背景
随着智能手机的普及和互联网的发展,移动互联网逐渐成为人们新的生活方式。既然是一种生活方式,对生活质量会有不断提升的要求,对使用的移动互联网产品会有更高的体验要求。
这就对测试工程师有了更高的质量保证要求,时间短、进度快、种类多,让我们仅靠人力很难保证测试的版本充足。这时候就需要用自动化来释放人力,提高效率。
1.1总体架构
移动:用户将通过公司的产品使用公司的业务,产品包括安卓App、iOS App、H5、小程序服务器:用户的所有操作最终都会通过HTTP协议等各种协议发送到公司的服务集群进行处理
1.2测试阶段
通常项目的开发都要经过需求、研发、测试、交付的过程,客户的测试阶段就在产品交付之前:
1.3 UI自动化的误区和价值
1.3.1误解
很多人认为UI自动化没用或者只能模拟人工点。其实不是。这种观点大部分是由于我们自身能力和理解的不足(包括我在不断学习和增加理解)。
技术上:没有更好的聚甲醛用于包装维护;
框架上:没有Watch、智能等待、失败重试等机制,让框架更加灵活。
策略:不采用分层测试的策略,合理控制UI自动化的规模。并非所有手动用例都需要用户界面自动化:
一些核心用例被移交给自动化测试,最基本的回归测试被移交给新功能测试的自动遍历,并移交给手动测试
1.3.2价值
如果解决了上述误区,就可以正确合理地进行UI自动化测试,可以给企业带来实用价值。当然,这并不是那么容易做到的,我们需要我们的测试工程师不断探索。通过下图来看看我们的测试架构,从中提取UI自动化测试的价值。
回归测试中的竞争产品分析自动探索测试专用自动测试
2.主角在——Appium出道
说了这么多,就为了引出今天的主角—— Appium,一个移动UI自动化测试的框架,我们先来看看Appium官网打开后看到的第一句话,如下:
或者谷歌翻译一下~:
Appium是一个开源的测试自动化框架,适用于本地、混合和移动网络应用。它使用网络驱动协议来驱动iOS、安卓和Windows应用程序。
是的,就是这段简单的文字描述了Appium的优势、架构和底层实现原理。让我们通过阅读这段文字来了解Appium,敲开移动互联网自动化的第一扇门。
2.1谁是appium?
App,这个词的起源是App Selenium的组合。所以rydz为了App,和Selenium的关系很大。请看下面的架构图:
g-caption">
从架构图中我们可以看到,最上层就是用的 Selenium 实现,因此 Appium 和 Selenium 一样遵从 WebDriver 协议,通过 Selenium 客户端将请求转发至 Android 或者 iOS 上框架的引擎的实现,如果用过 Selenium 做 Web 自动化的话,现在几乎可以无缝的切换至 Appium,很多的用法和思想都保持一致。
2.2 优势解读
既然上层使用了 selenium,那么 selenium 的跨语言性应该也保留了下来—— 跨语言 ,支持 Java/Python/Ruby/PHP/NodeJS 等官方介绍中提到了多个平台的支持,再结合上述的架构图——多平台支持 Android、 iOS、 Windows官方还提到了多种开发模式支持 Native Hybird Webview,这些就可以使我们可以在 H5 和小程序上开展 UI 自动化了如下图很好的展示了 Appium 对上述优势的支持:
除了上述之外还有的优势就是
支持跨 App,可以在多个 App 之间交互 不依赖源代码,可以测试第三方应用,比如测试微信服务号2.3 集大成者-底层引擎的实现
先来看目前 Mobile 自动化的方案,如下对各个端有不同的实现方案,五花八门,且很多不支持跨 App
而 Appium 几乎包括了所有的优势,可谓是集大成者,为何?再来看 Appium 官方 GitHub 给出的底层引擎实现说明(很多已经淘汰,我们学习推荐使用的即可):
Android端
espresso :Android 官方支持的框架selendroid:eBay 实现的框架uiautomator:Android 官方实现的集成测试的框架 uiautomator2(推荐使用):基于 uiautomator 的一个拓展,也是我们目前最推荐使用的框架iOS端
uiautomation xcuitest(推荐使用)另外还有 Mac 和 Windows 的驱动引擎支持。
正是因为这些引擎的支持实现,所以 Appium 才可谓是集大成者,是目前一款优秀的移动端UI自动化框架,我们使用 Appium 只负责告诉各个底层,我需要做哪些操作,具体如何操作 Appium 是不管的,由各底层的驱动去完成即可。
最后,如果做移动端自动化测试,我们推荐的是使用 Appium 框架去敲开这扇大门,进入移动互联网自动化的世界。
跨语言:Java、Python、nodejs等跨平台:Android、 IOS、Windows、Mac底层多引擎可切换生态丰富,社区强大(文章来源于霍格沃兹测试学院)