app ios自动化测试工具
2017-03-01 17:51:00 weixin_34153893 阅读数 5

1、File--New--Target

创建target,选择ios UI Testing Bundle

 

 

 

 

 

 

 

 

 

2、填写Product Name,选择Language等信息

3、在(void)testExample处录制和编写脚本,录制按钮是左下角红色按钮

转载于:https://my.oschina.net/qingfengxulai/blog/848916

2019-06-12 17:56:04 qq_31863683 阅读数 34

原文:https://www.jianshu.com/p/4be185e4069c

首先说一下为什么用TestFlight做iOS App测试,因为TestFlight现在是苹果官方的测试软件,相比其他测试工具省去了很多操作,配置简单,包教包会。

使用TestFlight之前你必须确保你的app已经上传到 iTunes Connect ,如果你不知道怎么上传请参考上一篇文章 iOS App 上架流程(新快捷版)(Xcode8.0以后) 按步骤到第“18步:上传 AppStore” 在 “我的app” 有即可

我的app

如果你的app已经在iTunes Connect了,请忽略上述内容

TestFlight用法

前期准备:在iOS手机客户端下载 TestFlight

TestFlight.png

第1步:在 iTunes Connect用户添加测试员

1.在 iTunes Connect用户添加测试员.png

第2步:打开用户和职能

2.打开用户和职能.png

第3步:添加用户

3.添加用户.png

第4步:填写用户信息

4.填写用户信息.png

第5步:用户职能涉及到管理权限

5.用户职能涉及到管理权限.png

第6步

6.png

第7步:上一步完成后会发送邮件

注:邮件过期比较快请告知测试者尽快查收,并请测试者在邮件链接中登录自己的Apple账号即可。如果测试者没有收到邮件请重新发送邮件,否则后面的步骤进行不了。

7.上一步完成后会发送邮件.png

第8步:被邀请的测试者查收邮件并在链接中登录Apple账号之后,你就可以返回添加测试员了

在 iTunes Connect用户添加测试员.png

第9步:这一步点击“添加”后会再次发送邮件,被邀请者在邮件获取邀请码,填入testflight中就可以了

注:邮件过期比较快请告知测试者尽快查收

9.这一步会再次发送邮件,被邀请者在邮件获取邀请码,填入testflight中就可以了.png

接收邮件的测试者操作:

(1):接收邮件,获取邀请码

接收邮件.png

(2):打开app

TestFlight.png

(3):在App中填入邀请码

在App中填入邀请码.png

第10步:第九步完成就可以了,如果你想看谁被邀请了或者被邀请者安装的是哪一个版本也是可以查看的

 

2018-07-20 14:50:02 BUG_delete 阅读数 583

本篇为内部测试,外部测试请移步TestFlight使用 包教包会(iOS APP官方测试工具)

首先说一下为什么用TestFlight做iOS App测试,因为TestFlight现在是苹果官方的测试软件,相比其他测试工具省去了很多操作,配置简单,包教包会。

使用TestFlight之前你必须确保你的app已经上传到 iTunes Connect ,如果你不知道怎么上传请参考上一篇文章 iOS App 上架流程(新快捷版)(Xcode8.0以后) 按步骤到第“18步:上传 AppStore” 在 “我的app” 有即可

 

如果你的app已经在iTunes Connect了,请忽略上述内容

TestFlight用法

前期准备:在iOS手机客户端下载 TestFlight

 

第1步:在 iTunes Connect用户添加测试员

 

第2步:打开用户和职能

 

第3步:添加用户

 

第4步:填写用户信息

 

第5步:用户职能涉及到管理权限

 

第6步

 

第7步:上一步完成后会发送邮件

注:邮件过期比较快请告知测试者尽快查收,并请测试者在邮件链接中登录自己的Apple账号即可。如果测试者没有收到邮件请重新发送邮件,否则后面的步骤进行不了。

 

第8步:被邀请的测试者查收邮件并在链接中登录Apple账号之后,你就可以返回添加测试员了

 

第9步:这一步点击“添加”后会再次发送邮件,被邀请者在邮件获取邀请码,填入testflight中就可以了

注:邮件过期比较快请告知测试者尽快查收

9.这一步会再次发送邮件,被邀请者在邮件获取邀请码,填入testflight中就可以了

接收邮件的测试者操作:

(1):接收邮件,获取邀请码

 

(2):打开app

 

(3):在App中填入邀请码

 

第10步:第九步完成就可以了,如果你想看谁被邀请了或者被邀请者安装的是哪一个版本也是可以查看的

原文链接:https://www.jianshu.com/p/4be185e4069c

2018-12-08 20:52:30 Fighting_No1 阅读数 405

TestFlight用法(iOS APP官方测试工具)

参考资料:

前期准备

  1. 使用TestFlight之前你必须确保你的app已经上传到 iTunes Connect
  2. 在iOS手机客户端下载 TestFlight

解决ios的构建版本“缺失符合性”/“Missing Compliance”的问题

在info.plist中添加

<key>ITSAppUsesNonExemptEncryption</key>
<false/>

或者

内部测试

第1步:在 iTunes Connect用户添加测试员

在 iTunes Connect用户添加测试员

第2步:打开用户和职能

打开用户和职能

第3步:添加用户

添加用户

第4步:填写用户信息

填写用户信息

第5步:用户职能涉及到管理权限

用户职能涉及到管理权限

第6步

第7步:上一步完成后会发送邮件

注:邮件过期比较快请告知测试者尽快查收,并请测试者在邮件链接中登录自己的Apple账号即可。如果测试者没有收到邮件请重新发送邮件,否则后面的步骤进行不了。

上一步完成后会发送邮件

第8步:被邀请的测试者查收邮件并在链接中登录Apple账号之后,你就可以返回添加测试员了

在 iTunes Connect用户添加测试员

第9步:这一步点击“添加”后会再次发送邮件,被邀请者在邮件获取邀请码,填入testflight中就可以了

注:邮件过期比较快请告知测试者尽快查收

这一步会再次发送邮件,被邀请者在邮件获取邀请码,填入testflight中就可以了

接收邮件的测试者操作:

(1):接收邮件,获取邀请码

(2):打开app

(3):在App中填入邀请码

在App中填入邀请码

第10步:第九步完成就可以了,如果你想看谁被邀请了或者被邀请者安装的是哪一个版本也是可以查看的

外部测试

创建一个群组

  1. 在首页上,点按“我的 App”,选择您的 App,然后在工具栏中点按“TestFlight”。

  2. 在左列中的“测试员和群组”下方,点按“添加外部测试员”或“新群组”。

  3. 在出现的对话框中,输入群组名称并点按“添加”。

创建一个群组

之后,您可以随时更改群组名称。

将外部测试员添加到群组并发布一个构建版本

  1. 在“测试员和群组”下方,选择一个群组并点按“测试员”旁的“添加”按钮(+)。

  2. 在显示的弹出菜单中,选择一个选项并点按“下一步”。

    您可以添加新测试员、现有测试员,或从 CSV 文件中导入测试员。

  3. 若要添加一个构建版本,点按“构建版本”并点按“添加”按钮(+)。

  4. 在构建版本对话框的弹出菜单中,选择平台和版本。

  5. 在下表中,选择一个构建版本并点按“下一步”。

    您仅可添加一个单独的构建版本,但之后可以向该群组添加额外构建版本。如果您没有看到选择构建版本的单选按钮,那么它将无法被选中。

  6. 如有需要,请回答“出口合规证明”问题。

    由于所有 App 均在位于美国的 Apple 服务器上进行加载,因此所有 App 均受美国出口法律的制约。

  7. 在“测试信息”对话框中,输入您希望您的测试员注重的内容。

  8. 或者,在指定语言的文本栏中,输入测试信息的本地化版本。

  9. 亦或,取消选中“自动向测试员发布此版本”。

    如果您取消选中此复选框,请稍后在该构建版本被“Beta 版 App 审核”批准之后,手动向测试员分发该构建版本。

  10. 根据构建版本的状态,点按“提交审核”或“开始测试”。

您每次仅能在每个版本中进行一个构建版本的审核。一旦该构建版本被批准,您便可以提交额外的构建版本。

在您将构建版本提交至“Beta 版 App 审核”后,Apple 会审核该构建版本和随附的元数据。您提交的第一个构建版本需要经过完整的审核,但同一版本的后续构建版本可能不需要。

如果 Apple 批准您的构建版本进行 TestFlight Beta 版测试,iTunes Connect 中具有“管理”职能的用户会收到一封通知批准通过的电子邮件。

如果 Apple 拒绝了您的构建版本或元数据,外部状态会显示“已拒绝”,您可以点按状态以查看拒绝的详细信息。

如果已经有一个可用于测试的构建版本,测试员将会立即收到邀请。

_【注】_提交一个构建版本到“Beta 版 App 审核”不会将它提交到针对在 App Store 中销售的 App 的“App 审核”。

在您的构建版本被批准后通知测试员。

如果在您邀请外部测试员时,没有选择“自动向测试员发布此版本”,则您需要在您的构建版本被批准时手动通知测试员。

  1. 在 TestFlight 部分的“构建版本”下,点按您 App 的平台(iOS 或 tvOS)。

  2. 选择一个版本和构建版本号。

  3. 在右上角,点按“通知测试员”。

该构建版本状态更改为“正在测试”。外部测试员将会收到一封电子邮件,引导他们在他们的设备上使用 TestFlight App 或通过兑换代码接受邀请。

从群组中移除构建版本

  1. 在“测试员和群组”下,选择一个群组。

  2. 点按“构建版本”,并将鼠标悬停在您想要移除的构建版本上方。

  3. 点按“删除”按钮。

如果您想要从测试中为所有测试员移除某个构建版本,请前往停止测试构建版本。

2017-05-02 22:42:00 weixin_34367257 阅读数 2

============2018.5.15 updte=================
xcode 9 需要在gym action加入 export_xcargs: "-allowProvisioningUpdates",
参考: https://www.jianshu.com/p/e0c51ab314f7
=========================================

目标

搭建一个自动化打包发布的平台。无论是App Store的发布,是开发期间持续化集成,都需要一个自动化的方案,代替人工来处理那些繁琐的打包发布流程。
本文采用的方案:jenkins + fastlane + svn + firim

Jenkins

关于搭建jenkins 看这篇文集就可以了 -> 手把手教你利用Jenkins持续集成iOS项目
只需要按步骤完成安装、新建job、源码管理就可以了,构建环境暂时不需要设置。

  • 不要使用Xcode构建,因为在导出ipa的时候,jenkins会使用到PackageApplication,这个玩意在xcode 8.3已经被删除了 (当然你可以从旧版本的Xcode拷贝一个过来
  • 多安装一个插件 Message Injector Plugin 用来配置环境变量

FastLane

fastlane 就是一个自动化发布的命令行工具-> 小团队的自动化发布-Fastlane带来的全自动化发布 或者 fastlane github && fastlane doc

安装命令 跟上述文章略有不同

    [sudo] gem install fastlane -n /usr/local/bin

加上 -n /usr/local/bin是因为Mac OS X 10.11 已经禁止修改/usr/bin目录了,那就换个目录安装

Firim

    [sudo] gem install firim -n /usr/local/bin

还需要到fir.im注册个账号,上传ipa需要一个token。

脚本

在工程目录下 完成 fastlane init之后,会生成fastlane文件夹,里面有三个文件需要修改

  • Fastfile => 用来定义所有的lane任务Fastfile帮助
  • Appfile => 是用来存储一些公共信息的,比如app_identifier,apple_id,team_id,itc_team_id等。Appfile帮助
  • Deliverfile => deliver的配置文件Deliverfile帮助

安装帮助文档应该可以轻松完成脚本编写,然而你的工程如果有多个Tareget,你可能还需要在fastlane目录下定义一个env配置文件。

    touch .env.TargetName

.env.TargetName文件内容:

    APP_IDENTIFIER = "com.xxx.xxxxx"

    #苹果开发者账号
    APPLE_ID = "xxxxxxxxxx@xxx.cn"
    FASTLANE_PASSWORD = "xxxxxxx"
    
    TEAM_ID = "xxxxxxxxxx"

    SCHEME_NAME = "TargetName"

    #App 元数据及截图存放路径
    METADATA_PATH = "./metadata/XXXXXXXX"
    SCREENSHOTS_PATH = "./screenshots/XXXXXXXXX"

    #App 元数据及截图下载时 直接覆盖 不询问
    DELIER_FORCE_OVERWRITE= true

    #版本号 如果不使用,就按照Xcode配置
    #APP_VERSION = 1.0.1

    #证书
    CODESIGNING_IDENTITY_TO_FIRIM = "iPhone Developer: XXXXX (XXXXXXX)"
    CODESIGNING_IDENTITY_TO_APPSTORE = "iPhone Distribution: XXXXX (XXXXXXXXX)"

Appfile文件:ENV[‘xxxx’] 就是读取.env文件里面的配置

    app_identifier ENV['APP_IDENTIFIER'] # The bundle identifier of your app
    apple_id ENV['APPLE_ID'] # Your Apple email address

    team_id ENV['TEAM_ID'] # Developer Portal Team ID

    # you can even provide different app identifiers, Apple IDs and team names per lane:
    # More information: https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Appfile.md

Deliverfile文件:如果你想使用deliver上传元数据截图以及完成提交,就需要根据帮助文档完善后续的参数

    ###################### More Options ######################
    # If you want to have even more control, check out the documentation
    # https://github.com/fastlane/fastlane/blob/master/deliver/Deliverfile.md


    ###################### Automatically generated ######################
    # Feel free to remove the following line if you use fastlane (which you should)

    # The bundle identifier of your app
    app_identifier ENV['APP_IDENTIFIER'] 

    # your Apple ID user
    username ENV['APPLE_ID'] 

    # 元数据的路径
    metadata_path ENV['METADATA_PATH']
    screenshots_path ENV['SCREENSHOTS_PATH']

    #App store 中待发布的 App 版本,若每个 target 的版本号不同,可以通过.env 文件来分别定义
    app_version ENV['APP_VERSION']

    #下载 metadata 及 screenshots 时直接覆盖,不询问
    force true

可以使用以下命令 从iTC上下载 元数据和截图

    fastlane deliver download_metadata -a  com.xxx.xxxxx -m ./metadata/XXXXXXXX -u  xxxxxxxxxx@xxx.cn
    fastlane deliver download_screenshots -a com.xxx.xxxxx -m ./screenshots/XXXXXXXX -u  xxxxxxxxxx@xxx.cn

接下来就是重头戏 fastfile文件:

   fastlane_version "2.28.3"

   default_platform :ios

   platform :ios do

   desc "Submit one more new Beta Build to Fir.im"
   lane :to_firim_multi do | options |
      schemes = options[:'schemes']
      schemes = schemes[1..-2]
      schemes = schemes.split(",")
      schemes.each do |i| 
        puts "do fastlane to_firim --env " + i.to_str
        sh "fastlane to_firim --env " + i.to_str
     end
   end

   desc "Submit one more new Release Build to AppStore"
   lane :to_appStore_multi do | options |
      schemes = options[:'schemes']
      schemes = schemes[1..-2]
      schemes = schemes.split(",")
      schemes.each do |i| 
         puts "do fastlane to_appStore --env " + i.to_str
         sh "fastlane to_appStore --env " + i.to_str
      end
   end

   desc "Submit a new Beta Build to Fir.im"
   lane :to_firim do | options |
   buildScheme = ENV['SCHEME_NAME']#options[:buildScheme]
   # 如果你用 pod install
   # cocoapods
   # 以下两个action来自fastlane-plugin-versioning,
   # 第一个递增 Build,第二个设定Version。
   # 如果你有多个target,就必须指定target的值,否则它会直接找找到的第一个plist修改
   # 在这里我建议每一个打的包的Build都要不一样,这样crash了拿到日志,可以对应到ipa上
   increment_build_number_in_plist(target: buildScheme)
   # increment_version_number_in_plist(
   #   target: buildScheme,
   #   version_number: ENV['APP_VERSION']
   #   )

   # gym用来编译ipa
   outputDir = "~/firim/ipa/#{Time.now.strftime('%y%m%d')}"
   outputName = "#{buildScheme}-#{Time.now.strftime("%Y-%m-%d %H:%M:%S")}"
   gym(
      scheme: buildScheme,
      workspace: "xxxxxxx.xcworkspace",
      configuration: "Release",
      output_directory: outputDir,
      output_name: outputName,
      include_bitcode: false,
      include_symbols: true,
      codesigning_identity: ENV["CODESIGNING_IDENTITY_TO_FIRIM"],
      silent: true,
      export_options: {
        method: "development", 
        thinning: "<none>"
      }
  )
   # 上传ipa到fir.im服务器,在fir.im获取firim_api_token
   firim(firim_api_token: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
   end

    desc "Submit a new Release Build to AppStore"
    lane :to_appStore do | options |
    buildScheme = ENV['SCHEME_NAME']#options[:buildScheme]
    # 如果你用 pod install
    # cocoapods

    # 以下两个action来自fastlane-plugin-versioning,
    # 第一个递增 Build,第二个设定Version。
    # 如果你有多个target,就必须指定target的值,否则它会直接找找到的第一个plist修改
    # 在这里我建议每一个打的包的Build都要不一样,这样crash了拿到日志,可以对应到ipa上
    increment_build_number_in_plist(target: buildScheme)
    # increment_version_number_in_plist(
    #   target: buildScheme,
    #   version_number: ENV['APP_VERSION']
    #   )
    # gym用来编译ipa
    outputDir = "~/AppStore/ipa/#{Time.now.strftime('%y%m%d')}"
    outputName = "#{buildScheme}-#{Time.now.strftime("%Y-%m-%d %H:%M:%S")}"
    gym(
      scheme: buildScheme,
      workspace: "xxxxxxx.xcworkspace",
      configuration: "Distribution",
      output_directory: outputDir,
      output_name: outputName,
      include_bitcode: false,
      include_symbols: true,
      codesigning_identity: ENV["CODESIGNING_IDENTITY_TO_APPSTORE"],
      silent: true,
      export_options: {
        method: "app-store", 
        thinning: "<none>"
      }
      )
     # 上传appstore 只传ipa包
    deliver(
      skip_screenshots: true,
      skip_metadata: true,
      force: true
     )
     end

完成配置文件的编写就可以使用脚本来自动打包发布

    #完成打包后,自动上传firim,用于开发测试 
    fastlane to_frim_multi schemes:[Target1,Target2,Target3,...] 

    #完成打包后,自动上传AppStore,用于正式发布 
    fastlane to_appStore_multi schemes:[Target1,Target2,Target3,...] 

证书 profile之类的配置都在Xcode中完成,要确保使用Xcode可以正常编译签名

最后一步

在jenkins新增两个构建步骤

234458-7bda9d9cfdbe104d.png
屏幕快照

第一步导入一个环境变量
第二步就是执行fastlane命令
最后要做的就是提交到svn,执行jenkins的job就可以自动完成打包发布啦
总的来说,程序员的懒,一定程度上推动了技术的进步~

参考资料

  1. 24. 自动化工具Fastlane笔记一: 安装, 打包,上传(testFlight,app store)
  2. 使用 fastlane 实现对 iOS Multi-Target 的一键打包部署

转载于:https://www.jianshu.com/p/ae5b492b5338

https://www.jianshu.com/p/4be185e4069c

博文 来自: sinat_31177681
没有更多推荐了,返回首页