app自动化测试流程

2021-01-29 11:28发布

5条回答
一个Ai
2楼 · 2021-01-29 14:00

1、需求分析

测试都是基于需求,所以首先我们需要先理清楚需求,划分之后找到实现的关键点。

自动化测试就是实现机器完成测试需求的关键点的一系列操作,并且在脚本的实际运行中添加需要的业务逻辑判断,实现测试自动化。根据脚本的具体实现,整理出打开文件测试流程图。

2、方案选择

选择对应的自动化框架。

自动化测试框架,是在实际项目中总结出来的且基本能运行的通用基础框架原型,它包括三个核心部分:一是操作控件模拟用户端事件,找到相应的元素属性,二是脚本中的结果如何判断,三是测试结果报告的输出与展示。

操作控件实现的方式有多种

一种最常见的脚本录制方法,其主要思想是记录控件的坐标位置和发生的事件,通过回放脚本完成测试事件流,像MonkeyRunner框架就提供比较方便的录制回放功能;

另一种方法就是通过工具(比如:源码、UIAutomatorviewer等)获得测试界面的控件布局,找到目标空间的ID、名字、描述或者位置信息。测试框架可以通过这些信息得到控件对象,并对控件对象执行一系列事件操作像Robotium、UIAutomater等,这个阶段理解为测试的动作执行。

对于有跨应用App的控件操作会受到Android进程安全限制,这对于跨应用的操作是一个难点,像Robotium就无法调用系统的一些INPUT事件完成跨应用的控件操作(其实Robotium从Android 4.3之后开始支持UIAutomation框,理应可以支持跨应用的),所以在选定框架时就需要考虑相关的权限问题,当前可以直接支持跨应用的框架有龙测科技,MonkeyRunner、UIAutomater等。

3、环境准备




思禹小姐姐y
3楼 · 2021-01-29 14:06

1.准备测试工具 下载record和replay的脚本录制工具,有很多工具可以实现,

2.录制测试脚本 在PC上连接手机,打开adb shell命令,进入record工具

3.执行测试脚本 这里以Java语言进行测试脚本的编写作为示范,

4.结果判断 这里通过测试脚本完成了用户操作的模拟实现,但是正常的测试还需要结果的验证,


我是大脸猫
4楼 · 2021-01-29 14:06

APP自动化框架选择

目前较火的自动化工具特点对比:

  • Appium(适用于Android&iOS;支持多语言;不需要应用源码)

  • Uiautomator(适用于Android;仅Java语言;不需要应用源码)

  • Robotium(适用于Android;仅Java语言;不需要应用源码)

  • Calabash(适用于Android&iOS;Ruby语言(其他语言不友好);iOS上需要应用源码)

通过上面的比较,其实已经可以看出我们应该去选择哪款工具了,这里不妨再啰嗦一下选择Appium原因及它的其他优点:

  • 目前国内关于它的讨论如火如荼,方便查阅相关资料

  • 支持众多的多语言,任性选择开发语言是一件幸福的事情

  • 不需要应用源码,给予测试开发工作一定的自由度

  • 能跨应用进行测试,很好很强大

  • 支持iOS及Android平台,面对双平台APP时,妈妈再也不用担心我用两套测试框架了,减少认知成本

  • 支持Android原生及混合应用,Come on,任凭开发人员怎么折腾我都能招架的住

Appium介绍

首先,来一段官方风格的简介去介绍Appium

Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持IOS、Android及FirefoxOS平台。Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。Appium对IOS系统的支持得益于Dan Cuellar’s对于IOS自动化的研究。Appium也集成了Selendroid,来支持老android版本。Appium支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium WebDriver的Api。Appium支持任何一种测试框架。如果只使用Apple的UIAutomation,我们只能用javascript来编写测试用例,而且只能用Instruction来运行测试用例。同样,如果只使用Google的UIAutomation,我们就只能用java来编写测试用例。Appium实现了真正的跨平台自动化测试。

下面再由我带来一段Appium的原理介绍:
Appium之所以牛掰,是因为它是一个高大全的测试框架。能够跨平台(Android&iOS),支持多种开发语言,而让它拥有这些特性的原因还是得益于它的WebDriver API了。我们可以简单的把它理解为测试脚本和手机系统的中间层,它对底层的自动化框架进行了封装并且暴露出一个统一的API,客户端无论是用什么语言编写脚本都能够通过HTTP请求将其恰如其分的发送给服务器完成自动化操作,如下图所示:


那么如何利用该款神器开展我们的自动化测试工作呢?来谈谈大体的流程。
首先我们需要根据测试用例逐条编写相应的测试脚本,验证该脚本的可行性后加入脚本库。接下来就是执行我们的脚本库,并输出测试结果,这里可以用到Jenkins达到持续集成的自动化测试目的,将代码的构建、验证、测试结果的输出合为一体。具体方案还需继续深入研究。


Appium实践

说了这么多背景知识,可能各位看官早已不耐烦了,那么赶紧来实战一把,通过一个“小栗子”教大家一步步使用Appium。

安装Appium环境

工欲善其事必先利其器,安装Appium运行及开发环境是第一步。这里我拿Window平台下的Android APP测试环境举例。
需要安装的文件列表清单:

  1. 安装Android环境,没什么太多可说的,需要强调的一点是,请将Android SDK存放在没有空格的路径下,如:C:\Program-Files\Android\android-sdk是OK的,而C:\Program(空格)Files\Android\android-sdk是Sorry的。如果你执意要在路径中加空格,那我只能敬你是条汉子,因为后面你可能会碰到Appium运行脚本失败的情况发生。

  2. 安装Node.js,这里去官网下载安装包安装即可,别忘了在系统中添加对应的环境变量。

  3. 安装Appium,同样可以去官网下载最新的安装包安装即可。

  4. 安装开发语言环境,这里我用的是Pyhthon,所以需要安装其对应的环境。这里的环境包括Python的开发环境及对应的依赖库(Appium_Python_Client),该库可以使用以下命令行进行快速安装:
    pip install Appium-Python-Client
    其他语言类似,同样需要安装开发语言环境和对应的依赖库,这里就不赘述,请自行搜索对应的方法。

编写脚本

这里我编写了一个Python脚本来在真机上运行我正在跟的一款神奇的APP,验证用户登录登出功能是否能够正常使用,并将异常结果截图保存,以方便我们后续定位问题。

# -*- coding: utf-8 -*-from appium import webdriverfrom time import sleep def login():    try:        desired_caps = {}        desired_caps['platformName'] = 'Android'        desired_caps['platformVersion'] = '6.0.1'        desired_caps['deviceName'] = 'Galaxy S6'        desired_caps['appPackage'] = 'dji.go.v4'        desired_caps['appActivity'] = 'dji.pilot.main.activity.DJILauncherActivity'        driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)         driver.find_element_by_name('我').click()        driver.find_element_by_name('登录').click()        driver.find_element_by_name('请输入注册邮箱').send_keys('account')        driver.find_element_by_id('dji.go.v4:id/cw1').send_keys('password')        driver.find_element_by_name('登录').click()        sleep(3)         driver.find_element_by_name('设置').click()        driver.find_element_by_name('退出DJI帐号').click()        driver.find_element_by_name('确定').click()        sleep(1)        driver.quit()    except Exception as e:        print(e)        driver.get_screenshot_as_file("failed.jpg")        return False    return True if __name__=='__main__':    if(True==login()):        print("该条用例执行成功")    else:        print("该条用例执行失败")

该段代码实现的逻辑是:启动APP并让APP按照我们指定的路径进行登录登出操作,如果未按照要求进入下一个界面,则会报出异常消息,此时我们将该异常界面截图保存到指定文件夹下,判定用例执行失败并结束该脚本,反之则用例执行成功。

执行脚本

在执行脚本前,我们需要连上真机并打开Appium,点击右上角的”Android机器人”图标,将PlatformVersion调整为我们真机对应的Android系统版本,Device Namet填写为脚本中所应的设备名。如果是Android模拟器用户,则请将PlatformVersion调整为我们模拟器对应的Android系统版本。


在设置完毕后,点击右上角的“三角形”箭头运行Appium。而后,我们只要运行刚刚编写的脚本即可,静静的等待测试结果输出。下图是这款神奇APP的登录界面,脚本启动APP后会自动点击登录按钮并输入账号/密码,而后再登出账号,退出APP。


查看结果

比如,这里我故意输错登录密码,使该条验证是否能正常登录登出的用例执行失败,此时程序会反馈“该条用例执行失败”并将异常截图保存到我们指定的路径中去。


总结,这篇文章给大家初略介绍了为什么选择Appium及通过一个小例子介绍如何安装使用Appium。然而通过一篇博文可能依旧不能够灵活应用Appium做自动化测试工作,后续会为大家带来更加详细的使用方法,敬请期待。


桥豆麻袋
5楼 · 2021-01-29 14:18

1、制定测试计划

在展开自动化测试之前,最好做个测试计划,明确测试对象、测试目的、测试的项目内容、测试的方法、测试的进度要求,并确保测试所需的人力、硬件、数据等资源都准备充分。制定好测试计划后,下发给用例设计者。

2、分析测试需求

用例设计者根据测试计划和需求说明书,分析测试需求,设计测试需求树,以便用例设计时能够覆盖所有的需求点。一般来讲,基于Web功能测试需要覆盖一下几个方面:

1)  页面链接测试,确保各个链接正常;

2)  页面控件测试,确保各个控件可靠;

3)  页面功能测试,确保各项操作正常;

4)  数据处理测试,确保数据显示准确、处理精确可靠;

5)  模块业务逻辑测试,确保各个业务流程畅通。

3、设计测试用例

通过分析测试需求,设计出能够覆盖所有需求点的测试用例,形成专门的测试用例文档。由于不是所有的测试用例都能用自动化来执行,所以需要将能够执行自动化测试的用例汇总成自动化测试用例。必要时,要将登陆系统的用户、密码、产品、客户等参数信息独立出来形成测试数据,便于脚本开发。

4、搭建测试环境

自动化测试人员在用例设计工作开展的同时即可着手搭建测试环境。因为自动化测试的脚本编写需要录制页面控件,添加对象。测试环境的搭建,包括被测系统的部署、测试硬件的调用、测试工具的安装盒设置、网络环境的布置等。

5、编写测试脚本

根据自动化测试用例和问题的难易程度,采取适当的脚本开发方法编写测试较薄。一般先通过录制的方式获取测试所需要的页面控件,然后再用结构化语句控制脚本的执行,插入检查点和异常判定反馈语句,将公共普遍的功能独立成共享脚本,必要时对数据惊醒参数化。当然还可以用其他高级功能编辑脚本。脚本编写好了之后,需要反复执行,不断调试,知道运行正常为止。脚本的编写和命名要符合管理规范,以便统一管理和维护。

6、分析测试结果、记录测试问题

应该及时分析自动化测试结果,建议测试人员每天抽出一定时间,对自动化测试结果进行分析,以便尽早地发现缺陷。如果采用开源自动化测试工具,建议对其进行二次开发,以便与测试部门选定的缺陷管理工具紧密结合。理想情况下,自动化测试案例运行失败后,自动化测试平台就会自动上报一个缺陷。测试人员只需每天抽出一地你该时间,确认这些自动上报的缺陷,是否是真实的系统缺陷。如果是系统缺陷就提交开发人员修复,如果不是系统缺陷,就检查自动化测试脚本或者测试环境。

7、跟踪测试BUG

测试记录的BUG要记录到缺陷管理工具中去,以便定期跟踪处理。开发人员修复后,需要对此问题执行回归测试,就是重复执行一次该问题对应的较薄,执行通过则关闭,否则继续修改。如果问题的修改方案与客户达成一致,但与原来的需求有所偏离,那么在回归测试前,还需要对脚本进行必要的修改和调试。

8、自动化脚本的维护

如果系统发生变更时,对自动化测试脚本和相关文档包括《自动化测试用例》、《自动化脚本设计说明书》进行维护,以适应变更后的系统。


八九
6楼 · 2021-01-31 15:51

1、IOS的话用instruments,这个工具是mac系统自带的,语言为js脚本语言。

2、android目前做功能自动化的话主要是还是uiautomator,不过要求shuandroid版本17以上;

3、框架的话可以学习下淘宝的自动化测试框架;

4、建议先学习自动化测试的原理,然后弄明白为什么要做自动化测试、它能做什么、谁来使用它、目标是什么以及它能带来什么价值;

5、关于android版本的问题,之前有讲到需要17以上的版本,没有什么公司会一个版本一个app的,一般都是做兼容,楼主应该更多的关注抽取什么样的测试用例去实现自动化、框架如何设计以及如何解决软件版本更新带来的维护问题。


相关问题推荐

  • 回答 12

    自动化测试主要分为三个层次:单元测试自动化、接口测试自动化和UI测试自动化。单元测试自动化调用测量的类或方法,根据类或方法的参数传递相应的参数并返回结果。最终断言判断返回的结果是否与预期结果相等。相等,测试通过,不相等,测试失败。因此,在单元...

  • 回答 13
    已采纳

    Fiddler可以干的东西太多了 ,例如:1.动态Web调试,可以抓取http&分析之,这个不说了,别的很多抓包软件也可以实现2.配合Proxifier可以抓取&代理原本不支持http代理但使用http协议通信的应用3.中间人攻击,因为fiddler本质是个http proxy自然可以给http包下...

  • 回答 19

    1、具备计算机操作基础2、软件测试基础理论知识。3、对于常用的数据库,简单的操作要具备。学习数据库可以自己安装一个数据库,常练习。4、具备一定的逻辑推理能力:这点主要偏向于写测试用例。测试用例是软件测试的核心。写测试用例,可以参考网络一些比较经...

  • 回答 9

    可以根据项目需要进行选择 1.模块化框架(test script modularity)。 2.函数库结构框架(test library architecture)。 3.关键字驱动测试框架(keyword-driven/table-driven testing)。 4.数据驱动测试框架(data-driven testing)。...

  • 软件测试都学什么呀2020-03-11 11:17
    回答 15

    嗯 ,软件测试入门容易,零基础也能学会,下面我给你讲一下学习的具体内容:先第一个阶段主要学习软件测试核心理论:软件测试方法和分类都有什么,白盒测试、黑盒测试、单元测试、集成测试、系统测试、负载测试、兼容性测试等等,还有当下的热门领域测试技巧...

  • 回答 7
    已采纳

    自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入...

  • 回答 10

    自动化测试工具有如下几种:1、WinRunnerMercury Interactive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的...

  • APP自动化测试思路2021-01-28 11:12
    回答 12

    1、需求分析测试都是基于需求,所以首先我们需要先理清楚需求,划分之后找到实现的关键点。自动化测试就是实现机器完成测试需求的关键点的一系列操作,并且在脚本的实际运行中添加需要的业务逻辑判断,实现测试自动化。根据脚本的具体实现,整理出打开文件测...

  • 回答 6

    1.分析测试需求测试需求其实就是测试目标,也可以看作是自动化测试的功能点。自动化测试是做不到100%盖率的,只有尽可能提高测试覆盖率。条测试需求需要设计多个自动化测试用例,通过测试需求分析判定软件自动化测试要做到什么程度。一般情况下,自动化测试优...

  • 回答 7

    第一,需求稳定,不会频繁变更第二,研发和维护周期长,需要频繁执行回归测试第三,需要在多种平台上重复运行相同测试的场景。第四,某些测试项目通过手工测试无法实现,或者手工成本太高。第五,被测软件的开发较为规范,能够保证系统的可测试性。另外,某些...

  • 回答 14

    自动化测试对于软件测试工程师来说十分重要。是软件测试人员必备技能。自动化测试框架是为自动化测试脚本提供执行环境的脚手架。框架为用户提供了各种优势,帮助他们有效地开发、执行和报告自动化测试脚本。它更像是一个专门为自动化组织的测试而创建的系统。...

  • 回答 7

    自动化测试的成本高,效果差,是一个相对的,而针对某些具体项目,是必须要接入自动化测试的。首先说一些什么时候会需要自动化测试首先咱们讨论这个问题之前要带着一个疑问:决定要不要做自动化测试的因素有哪些?应该说时间才是一个衡量比重比较大的因素。假...

  • 回答 6
    已采纳

    Appium一款应用于移动端的自动化测试框架,支持跨平台应用,Native、Hybird、Mobile Web都支持。其特点概括一下:跨平台只要一套代码不需要设置签名,不污染源代码不需要项目源代码就可以测试多语言支持可支持多种通用框架完全开源,社区活跃appium应用场景...

  • 回答 4
    已采纳

    第一步,先要安装JDK并配置好相应的环境变量;第二步,下载、部署Android SDK,并配置环境变量。MonkeyRunner位于Android SDK下的tools目录,所以需要把这个目录加入操作系统环境变量PATH中。第三步,编写MonkeyRunner脚本。脚本中需要用到三个类,分别为Monk...

  • 回答 4
    已采纳

    1.monkey应用场景> monkey测试是Android平台自动化测试的一种手段,通过monkey程序模拟用户触摸屏幕、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常======================================异常:崩溃:XX应用停止运行无响应:闪退...

  • 回答 4
    已采纳

    首先我使用了百度搜索adb(Android Debug Bridge)安装包,接下来,我想共享这个安装包:https://pan.baidu.com/s/14SysAIZQhzYKZzQMikE2jQ拿到安装包,首先我把它解压到我的Android文件包里,接着,打开cmd(使用Win+R键--->cmd)点击确定按钮出现输入adb以...

没有解决我的问题,去提问