Tag: Alter Al

iOS应用验证失败

有时,当我们想在设备上安装另一个iOS应用程序时,可能会遇到ApplicationVerificationFailed 。 这种情况很少见,因为这实际上是环境和手段的结合,您收到的应用程序没有团队的配置文件。 无论如何,我们有能力解决这个问题。 计划: 获得自己的配置文件 退出应用 安装应用 前提 首先,要使我们的生活更加美好和轻松,我们应该安装ideviceinstaller和fastlane : $ brew install ideviceinstaller $宝石安装fastlane 供应配置文件 然后,我们需要获取配置文件。 如果已经有了,则可以跳到下一步,否则,请继续。 正如苹果所说: Xcode是创建iOS供应配置文件的最简单方法。 将设备连接到Mac,然后在Xcode的Organizer窗口中单击Use for Development。 使用与您的Apple Developer Program成员资格关联的Apple ID登录,Xcode将生成一个包含您的证书和设备标识符的配置文件。 因此,在这种情况下,签名类型无关紧要,是个人团队还是组织团队。 退出应用 这里我们需要三件事: .ipa .mobileprovision iOS开发人员证书 我希望您有一个.ipa,我们可以从XCode获得的其他: 所以: 将iOS Team Provisioning Profile从XCode工具提示拖放到带有.ipa的文件夹中 从相同的工具提示中复制iPhone开发人员证书 然后像这样通过fastlane退出应用程序: $ fastlane叹气辞职testapp.ipa –signing_identity“ iPhone开发人员:a.alterpesotskiy@test.com(KJRTP5GJS9)” -p“ test.mobileprovision” 安装应用 。 。 如果看到此弹出窗口,则可以转到设备上的“设置” =>“常规” =>“设备管理 ”,以信任开发人员并允许运行该应用程序(有关更多信息,请参阅Apple文档)。 […]

XCTest中的快照测试

“这不是一个错误,这是一个功能”。 几乎每个团队成员都已经学会了这句话。 是的,很奇怪,可以说它存在一定数量的缺陷。 但不是关于显示效果不好的布局。 考虑到交付到商店的时间成本,这对于移动测试尤为重要。 我们有许多类似的工具可用于测试iOS应用程序中的布局。 但是大多数人只是从一个人那里分叉或提出了一个主意。 因此,在此XCNote中,我想谈一谈– iOSSnapshotTestCase 。 该工具最初是在Facebook的领导下作为一个开源项目创建的。 随着时间的流逝,进入存档的计划被传递给了Uber,该项目仍在成功开发中。 最令人高兴的是, iOSSnapshotTestCase继承自XCTestCase ,这显然意味着,我们根本不需要对自动化系统进行任何更改。 我还要注意,我们可以像XCUITest一样在XCUITest中使用iOSSnapshotTestCase。 太好了,让我们尝试。 一开始,我们应该: 在Podfile中添加一个额外的pod: 保存参考快照的功能由位于setUp()中的变量recordMode调节: recordMode = true //保存参考快照 recordMode = false //使用实际验证参考快照 为了对每个测试进行多个检查,我们应该将“ identifier”设置为FBSnapshotVerifyView和FBSnapshotVerifyLayer方法的参数。 如果需要通过XCUITest验证全屏快照,则可能会遇到以下问题:状态栏中会发生冲突(电池,时间等)。 可以解决此问题,尽管以一种有点荒谬的方式进行—在拍摄快照时,剪掉用于状态栏的几个像素。 主要问题是,由于iPhone X系列的状态栏尺寸不标准: 我们可以使用UIImage扩展来实现此拐杖: 此后,为了在所有iPhone机型上正确执行此裁切操作,我们将需要学习如何从测试中确定裁切结果。 为此,我们需要扩展UIDevice : 然后将像这样使用它: 有时我们可能需要验证全屏快照,但特定元素除外。 谁能画画? 还有油漆吗?)现在该重新油漆了,因为我们可以借助“ 着色 ”解决这个问题。 我不是在开玩笑😉。 为此,我们需要: 1.通过创建fill(element:XCUIElement)方法再次扩展UIImage ,该方法将在快照上绘制所选元素: 2.在先前创建的验证方法附近创建一个新方法verifyScreen(不包含元素:XCUIElement) : 综上所述,我想说的是,至少可以在移动设备上使用快照进行测试,并且最多可以加快我们的自动化测试的速度。 阅读完有关快照测试的文章后,如果您有任何疑问或澄清,我们将很乐意为您解答。 您可以在这里找到完成的项目: https://github.com/alter-al/sample_of_ios_snapshot_testing_2048 所以,祝你好运,玩得开心,以后再见(:

重新启动失败的XCTests

UI测试是相当不稳定的事情,这对任何人都不是秘密。 通常,在实践中,我们必须想出各种方法使它们尽可能稳定。 一种这样的方法是重新启动失败的测试。 如果在此类情况下的JUnit中我们有TestNG中的RetryTestHelper — IretryAnalyzer,那么为了在XCTest中测试iOS应用程序,我们没有开箱即用的东西。 经过一番谷歌搜索之后,我们找到的第一个解决方案— setup_fragile_tests_for_rescan —这是Fastlane插件。 Fastlane是一款华丽而优雅的工具,可用于自动完成移动应用程序周围的所有操作(签名,生成,测试,屏幕截图,交付等)。 该插件目前已被弃用,但取而代之的是改进的新版本。 我真的很喜欢Fastlane,但是我坚信主版本中没有包含插件。 虽然,这是一个现成的解决方案,但您的选择很可能落在它上面。 如果您不想要其他依赖项,并且准备进行少量编码,那么我们将继续。 我将告诉您,如何使用相同的Fastlane通过自写解决方案实现失败的测试的重启。 从理论上讲,不用Fastlane就可以做同样的事情,但是有了它,一切看起来都会变得更加优雅,而且整个过程真的很愉快。 安装Fastlane以运行我们的测试: $宝石安装fastlane 安装Nokogiri来解析测试结果: $ gem install nokogiri 在我们开始之前,我想添加一些理论上的补充。 由于Fastlane是Ruby上的一种DSL,因此其语法将非常接近Ruby爱好者。 要配置可运行命令及其参数,我们将使用Fastfile。 在.xcodeproj的附近,我们创建了一个隐藏的Fastlane文件夹和一个Fastfile配置,在其中将保留运行测试的整个逻辑: $ mkdir -p .fastlane $ touch ./fastlane/Fastfile $打开./fastlane/Fastfile 要运行测试,我们需要创建自己的Fastlane通道,并在其中调用名为scan的Fastlane操作: 现在,让我们编写一个Fastlane通道,它将重新启动测试指定次数。 为此,我们需要以易于解析的格式(例如.junit)生成测试报告。 运行测试一次并生成报告后,我们检查报告中是否有任何失败的测试。 如果存在,那么我们将测试循环预定次数,直到获得成功: 现在,要检查我们的重启,让我们编写两个测试: 首先,那将永远是绿色的 第二个总是红色 之后,与我们的测试运行程序一起运行Fastlane: $ fastlane测试 该解决方案的唯一可能的缺点是,在最终的测试报告中,我们将仅看到上次重启时运行的测试。 失败的测试试图通过@test_retries时间,但是在我们的示例中,它注定要失败。 但是,应该注意的是,虽然强制执行了重新启动测试的操作,但这并不是维持稳定性的最佳方法,因为您的应用程序已成为海森堡的目标。 因此,重新启动测试,减少重新启动它们的频率。 到此为止。 谢谢大家,在接下来的笔记中见(

如何从App Store下载IPA

有两种方法可以从Apple App Store下载iOS应用,以引起您的注意: 1.通过Apple Configurator 2(合法方式) 在这里您需要安装旧版本的应用程序才能对其进行更新。 2.通过离合器(非法方式) 在这里,您需要越狱。 通过Apple Configurator 2 此工具仅在设备上的应用程序需要更新时才可以下载IPA。 简而言之,这是非常有限的方法,但是我们还是会考虑它。 禁用手机上的自动更新应用程序(“设置”>“ iTunes&App Store”>“更新”) 在PC上打开Apple Configurator 2并登录到Apple帐户 使用USB电缆将手机连接到PC 进入Apple Configurator 2选择您的手机 然后点击顶部的“ 更新”按钮 更新结束后,请使用IPA: 〜/ Library / Group \ Containers / K36BKF7T3D.group.com.apple.configurator / Library / Caches / Assets / TemporaryItems / MobileApps / 通过离合器 正如我所说的那样,您需要越狱。 最后一个可以使这些东西成为Yalu(iOS 10.2)。 越狱可能是非法的,并且会带来副作用,因此,风险自负。 越狱 通过Cydia安装SCP (repo: coolstar.org/publicrepo) […]