0530-3433334

网站建设 APP开发 小程序

知识

分享你我感悟

您当前位置>首页 >> 知识 >> 软件开发

iOSApp自动化测试方案

发表时间:2023-08-30 18:00:50

文章来源:炫佑科技

浏览次数:169

菏泽炫佑科技

iOSApp自动化测试方案

**章 应用自动化测试解决方案 1.1 概述

什么是应用程序自动化? 为什么要做App自动化?

应用自动化是指 iOS 上软件应用程序的自动化测试。

手动测试和自动化测试的对比如下。

手动测试的优点:不可替代自动化软件开发,可以发现更多的bug,包含人的想象力和理解力。

自动化测试的优点:可重复、效率高、可以增加对软件质量的信任。

请注意,并非所有功能都需要自动化,只有重复性和主要功能需要自动化。

App自动化测试的特点如下:

● 通过执行自动化测试只能发现一小部分错误。

● 执行自动冒烟测试或回归测试来验证系统状态,而不是发现更多错误。

● 执行自动化测试可以让测试同事有更多的精力专注于复杂的场景,做更多、更深入的测试。

● 在编写自动化测试的过程中会发现一些Bug,发现后应及时记录。

1.2 风险分析

自动化测试的主要风险分析如下:

(1)测试用例覆盖率(覆盖率决定测试效率,因此应选择合适的用例,约占功能用例集的20%到50%)。

(2)检测结果准确性(准确性决定测试的有效性,因此应尽可能减少误报)。

(3)自动化代码维护(维护影响成本。这本书是关于关键字驱动的自动化框架。自动化框架代码应该尽可能优化。只有当测量的功能发生变化而代码不需要更改时是一个强大的框架,而且维护成本足够低)。

(4)版本开发和测试进度(当项目需求和功能比较稳定时,建议进行自动化测试)。

(5)对控制元素的开发修改程度(开发者需要尽可能使用与UI设计一致的名称元素。当修改变化较小时,测试人员可以提前干预,根据提供的元素开发自动化脚本)。

App源码权限控制在iOS上测试时需要源码。 我们的测试人员可能只需要SVN下载权限,不需要上传权限,所以我们应该尽可能避免改变开发者在SVN上的源代码。

1.3 软硬件要求

自动化测试的硬件和软件要求如下。

硬件:

● Mac电脑、手机。

● 电脑、手机。

软件:

● 测试框架:运行App驱动的自动化平台,通过识别的控制元素模拟用户的手动操作,支持iOS和系统。

●:持续集成自动构建并执行任务。

● 、Ant、SVN:测试插件初始化、测试、断言和清理。

● JDK,Java语言开发编写环境。

● : 手机与电脑之间的无线连接。

1.4 测试计划

时间计划

对于那些有良好编码基础的人来说,创建一个演示可能需要一周的时间。 如果你是从零开始的新手,可以用3到6个月的时间来制作一个demo。

对于有良好编码基础的老手来说,一个月的时间可以用来试运行冒烟测试用例。 如果你是从零开始的新手,可以用半年到一年的时间来测试冒烟测试用例。

当前的应用程序自动化框架计划

使用自动化关键字数据驱动设计,即表驱动测试或基于操作的测试。 关键字驱动框架的基本工作是将测试用例分为四个部分:一是测试步骤,二是测试步骤中的对象,三是测试对象执行的动作(),第四是测试对象所需的数据(Test Data)。

应用程序后自动化框架计划

将测试用例、控制元素等放入数据库或页面中进行显示操作。 无需添加或修改代码即可编写自动化测试用例。 而是由用例自动生成代码,自由管理大量用例和测试数据,*终创建一个自动化平台。 这些内容需要一个测试开发团队来实现,参见本书附录A。

1.5 移动自动化框架

1.需要掌握的技能(将在第1章至第4章中使用)

(1)API、基础知识及环境搭建(见1.5节)。

(2) 平等测试框架(见1.6节)。

(3)/iOS开发测试基础及环境搭建(参见第二章和第三章)。

(4)Java语言或用于开发移动自动化项目的语言(参见第4章)。

需要注意的是,如果你想使用该语言来编写一个App自动化测试框架iOSApp自动化测试方案,那么读者可以参考本书的Java和代码逻辑来使用和编写测试脚本。 自动化测试框架的功能总结如下:

2. 框架功能

(1)支持iOS,可以在多机上并行运行App自动化,并测试模型适配。

(2) 实现关键字驱动的代码:

● 测试集:关联Excel 测试用例和脚本配置。

● 测试数据:Excel 存储输入数据、控制元素和测试结果。

● 测试脚本:由Java编写,层次结构包括case、log、data等。

(3)自动执行测试用例:

● 从功能测试用例中提取需要重复执行的主要功能,实现用例覆盖。

● 支持案例(失败)时自动截屏。

● (失败的)用例会自动重复多次。

(4)持续集成环境,定期自动构建并执行测试任务。

● 测试结果报告显示和自动电子邮件显示。

自动化测试App的基本流程如下:

3、测试App的基本流程

基于自动化测试框架,我们需要做的是连接电脑、连接手机、解锁、安装App、卸载App、启动App、元素定位、元素操作、屏幕操作、页面等待、异常处理截图、数据验证、日志、报告等自动化测试执行的一系列详细流程。

自动捕获框架元素控件,并根据捕获的元素控件执行相应的操作。

元素控件的定位方法有很多种,*常用的是元素的ID(即By.id)和元素的值(即By.name)。 还可以通过元素类型、元素位置XPath、移动设备坐标等进行定位操作。元素控件可以通过SDK中的.bat文件进行记录、捕获和定位,如图1.1至图1.3所示。

▲图1.1

▲图1.2

▲图1.3

如图1.3所示,Node下的-idcom.test.:id/对应Excel中的定位方法By.id及代码,控制元素数据文本对应Excel中的操作方法()及代码,控制元件分配数据是。

可以这样理解:先找到文本框,然后在文本框中输入数据。 即通过ID属性值com.test.:id/找到用户名文本框的控制元素,然后通过()方法将用户名数据输入到用户名文本中。 其他自动化测试步骤的定位方法、控制元件和操作方法也与此类似。 事实上,自动化测试就是通过程序代码模拟手工测试的过程。

上面介绍了输入用户名文本框的()方法,但是其他元素的操作方法是什么呢? 元素操作方式一般有点击(点击)、输入()、元素滑动、页面滑动、长按、下拉、弹出、屏幕放大缩小等,*常用的是点击和输入。 代码分析参见第四章源码。

数据验证。 其实要素本身就是数据验证。 当程序找不到该元素时,用例将失败。 另外,可以添加一个或多个断言来验证测试用例中的数据,并且还可以设置步骤的等待延迟时间。 详细内容请参见第4章的源代码。

检测结果。 测试用例记录运行后的测试结果,例如通过或跳过。 有关详细信息,请参阅第 4 章中相关的 Excel 测试用例。

4.简介(参考官方资料)

它是一款移动自动化测试的开源工具,支持iOS和平台,支持Java和Java等语言,即同一套Java或脚本可以同时运行在iOS和平台上。

它是跨平台的,即可以使用一组API来编写不同平台的测试用例。

它是C/S架构,核心是Web服务器,提供了一组REST接口。 收到客户端的连接后,会监听命令,然后在移动设备上执行这些命令,*后在HTTP响应中将执行结果返回给客户端。

5.

自动化始终围绕一个(会话)。 客户端初始化一个与服务器交互。 不同的语言有不同的实现,但*终都是向服务器发送POST请求。 该请求包含一个名为“”的 JSON 对象。 这时,服务器会启动一个自动化,并返回一个ID。 用户将使用该 ID 发送后续命令。

6.

是键值对的集合(例如映射或哈希)。 客户端将这些键值对发送到服务器并告诉服务器我们要如何测试。 例如,我们可以将其设置为iOS,并告诉服务器我们想要一个iOS而不是一个。

7. 服务器

它是用 Node.js 编写的。 我们可以从源代码编译它,也可以直接从 NPM 安装它。

服务器端有很多语言库,比如Java、Ruby、PHP、C#等,这些库都实现了协议的扩展。 使用时,您只需使用这些库而不是常规库即可。

8. 客户

这个客户端的概念并不是我们传统意义上的客户端。 理解它的更好方法是扩展协议库。 当您用您喜欢的语言编写案例时,您会将语言扩展库添加到您的环境中。 这时候你作为客户就可以理解了。

客户端安装包如下。

直接在Mac机上运行.dmg; 在机器上运行.exe。

9./iOS 的工作原理

API接口调用的接口接收标准请求,解析请求内容,调用相应的框架响应操作。 该代码将键值对组合成 JSON,然后通过 HTTP 协议将其发送到服务器以创建一个。 所有与代码的交互都围绕这个展开。 创建成功后,通过USB接口与手机创建TCP连接,并先安装一些服务器应用程序,如API4.2+是,2.3+是; 如果是iOS,是的。 手机的操作都是通过向电脑发送指令来控制的。

原理图如图1.4所示。

▲图1.4

其核心是一个符合REST设计风格的Web服务器。 它接收来自客户端的连接和命令,在移动设备上执行命令,然后通过 HTTP 响应收集命令执行的结果。 这种架构为我们提供了良好的开放特性:只要某种语言有HTTP客户端API,我们就可以通过这种语言编写自己的测试代码。

1.6 测试框架

简介(参考官方资料)

它是一个基于Java的测试框架,旨在解决大部分测试需求,涵盖了单元测试(测试单个类)和集成测试(测试多个类、多个包甚至多个框架系统)两种测试方式。

一般来说,一次测试通常需要以下三个步骤:

(1) 写出需要测试的业务逻辑,并在代码中添加注释。

(2) 在.xml或build.xml中添加测试信息(例如,需要运行的类名、组名等)。

(3) 运行测试。

套件是使用 XML 文件定义的。 该套件可以包含一个或多个测试,并且该套件是使用 <suite> 标签定义的。

测试是使用 <test> 标签定义的,测试可以包含一个或多个类。

类是至少包含一个注释的 Java 类。 类是使用 <class> 标记定义的,并且可以包含一个或多个方法。

测试方法是在代码中使用 @test 注释进行注释的 Java 方法。

测试可以使用 @ 或 @ 进行注释,并配置为在某个入口点之前或之后执行一些代码逻辑,该入口点可以是上面列出的任何项目。

下面简单介绍一下 中的注释。

● @:带注释的方法将在该套件中的所有测试运行之前运行。

● @:标记的方法将在该套件中的所有测试运行后运行。

● @:被注释的方法将在该测试运行之前运行。

● @:该测试运行后将运行带注释的方法。

● @:带注释的方法将在本节中的所有测试运行之前运行。

● @:带注释的方法将在本次运行的所有测试之后运行。

● @:被注解的方法将在该类中的所有方法执行之前运行。

● @:所标记的方法将在执行完该Class 中的所有方法后运行。

● @:标记的方法将在每个测试方法之前执行。

● @:标记的方法将在每个测试方法之后执行。

您可以通过多种不同的方式运行它,例如使用 .xml 文件、Ant 或命令行。

您可以在 .xml 中定义新组,并在属性中添加其他信息,例如是否并行运行测试、使用多少个线程、是否运行 JUnit 测试等。

另外,详细介绍还包括执行测试、嵌套测试、忽略测试、分组测试、异常测试、依赖测试、参数化测试、测试结果报告等,读者可以查找并参考官方相关文档。

1.7 自动编译部署工具

本节内容要结合第11章来学习,但由于第3章的代码涉及到Ant内容,所以提前介绍一下,读者也可以跳过本节,等环境搭建好后再学习这部分并且演示正在运行内容。

1.Ant简介(参考Ant官方资料):

一:Ant是一个将软件编译、测试、部署等步骤链接在一起,实现自动化的工具。 它一般集成到Java环境中,多用于Java环境下的软件开发。 在实际的软件开发中,Ant可以用在很多地方。 Ant的升级版本是Maven,你也可以使用Maven代替Ant。

Ant是 目录下的一个子项目,它的优点如下。

(1)跨平台:Ant是用纯Java语言编写的,因此具有良好的跨平台性能。

(2)操作简单:Ant由内置任务和可选任务组成。 使用 Ant 任务就像在 DOS 中编写命令行一样。 Ant可以通过调用树执行各种任务,每个任务都实现一个特定的接口对象。 Ant 需要 XML 文件(构建文件)才能运行。

(3) 维护方便、可读性好、易于集成:由于Ant在构建文件时使用XML格式的文件,因此不仅易于维护和编写,而且结构也非常清晰。 由于Ant跨平台且易于操作,因此很容易集成到一些开发环境中。

二:Ant 构建文件。 当开始一个新项目时,您应该首先编写 Ant 构建文件。 构建文件定义构建过程并由开发团队的每个成员使用。 Ant构建文件默认命名为build.xml,也可以使用其他名称,但运行时需要将此名称作为参数传递给Ant。 构建文件可以放在任何地方。 一般的做法是放在项目的顶级目录下。 这可以使项目保持简洁和清晰。 典型的项目层次结构如下所示:

(1)src存储文件。

(2)类存放编译后的文件。

(3)lib存放第三方JAR包。

(4)dist存放打包发布的代码。

Ant 构建文件是 XML 文件。 每个构建文件定义一个唯一的项目(元素),每个项目可以定义许多目标(元素),并且这些目标之间可以存在依赖关系。 当执行此类目标时,需要执行它们所依赖的目标。 每个目标中可以定义多个任务,目标中也定义了要执行的任务顺序。 Ant 必须在构建目标时调用定义的任务。 任务定义 Ant 实际执行的命令。 Ant 中的任务可以分为三类:

(一)核心任务。 核心任务是Ant自带的任务。

(2)可选任务。 可选任务是来自第三方的任务,因此需要额外的 JAR 文件。

(3)用户定义的任务。 用户自定义任务是用户自己开发的任务。

Ant的配置文件为build.xml,读者可以结合本书第11章使用该文件进行持续集成。

本书没有详细讲解Ant命令、Ant脚本、标签、使用节点、元素和属性、命令说明、Ant编译与打包、运行项目等,读者可以自行查找官方资料。

2.Svn介绍(参考Svn官方资料)

SVN 是一个免费、开源的版本控制系统。 它是项目团队成员存储代码和其他文件的中心版本库,并记录文件和目录的每次修改。 允许您将数据恢复到早期版本或检查数据修改的历史记录。 它的存储库可以通过网络访问,允许用户在不同的计算机上进行操作。

我们将测试开发的源代码存储在 SVN 上,然后将其与持续集成构建结合使用。

炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等

相关案例查看更多