gpt4 book ai didi

ios - Xcode iOS单元测试的非常大的数据

转载 作者:行者123 更新时间:2023-12-01 23:59:59 28 4
gpt4 key购买 nike

摘要

如何获得针对iOS应用程序的多个大型数据集的实际自动化单元测试?测试越现实,测试就越困难。使用连续集成服务器(进行测试的唯一实用方法)使问题更加复杂。

但是人们做到了。怎么样?

我提出了一些断言。可能不正确。纠正它们将大大有助于回答我的问题。

项目

这是一个iOS 9应用程序,可分析在iOS设备上拍摄的大型视频文件(全分辨率,最大帧速率,典型值为10秒)。 (如果需要的话,部分分析将通过OpenCV进行。)

客户为我们提供了概念验证(Python在桌面上)和数百个示例文件。总计为8 GB。

我们想对我们的代码进行尽可能多的单元测试。我的问题是,如何针对iOS目标的大型数据集执行自动化的单元测试?

备择方案

测试越好,执行起来就越困难:

我们将从 OS X应用程序开始,以检查正确性和相对速度。将工具指向任意数量的文件很容易。但是,x86_64具有不同的ABI,OS X具有不同的API,而iOS具有Mac无法复制的资源限制。

这会影响正确性和性能指标:您可以继续大肆追求在台式机上而不是在设备上可以进行的优化。我们最终将不得不使用Accelerate框架,该框架可能无法在两个平台上执行相同的操作。

移植到iOS之后,我们可以使用iOS模拟器,它甚至对较早的目标使用i386(因此使用32位字)。 (我欣喜若狂,发现CGFloat的精度在不同平台之间有所不同。)仍然存在ABI,性能和约束的问题,而Simulator的“iOS” API通常会调用OS X中的近似等效物,这一事实使情况更加复杂。

此外,我认为模拟设备不会破坏沙箱以读取设备树外的文件。我们必须(对吗?)将测试数据复制到每个模拟设备的存储中,路径对于每个开发人员将有所不同,并且不能保证它们在Xcode的各个版本中都是稳定的。如果解决了这个问题,那么即使是一台大型机器,n×m GB仍然会出现问题。

(我们可以将所有“存储的”文件链接到一个通用副本。可靠性和稳定性问题使我更加高兴。)

最终,我们必须在设备上进行测试,因为我们需要未分页的内存,即文件大小的一小部分的存储空间,且存储在节流的ARM处理器上,该处理器每年都会发生很大变化。这意味着将视频文件推入系绳,可能是连续的。向设备挑战数百个(或几十个)文件是不现实的,但是一个足够的测试套件可能需要8个文件,这很繁琐。

对于将一系列文件加载和卸载到绑定设备中的简单方法,我并不满意。我想我们可能有单独的测试目标,每个目标都有两个或三个文件存放在应用程序数据包中,用于每个测试方案。我不希望有更清洁的方法。

积分

情况变得更糟:测试将是一个漫长而艰巨的过程,需要乘以每个目标设备。要求我们的任何开发人员主持测试是不现实的(每个人都是BYOD,有时是不在现场的,别争论了)。将测试文件提交到共享存储库也不现实。 (GitHub坚决拒绝。)无论您如何执行测试,都是如此。

这指向在持续集成服务器上进行构建和测试。我们不必烦恼,但保留测试数据库并将其加载到设备的沙箱(模拟的或实际的)中的实际问题不会消失。



我知道这是一个已解决的问题。存在用于移动设备的大文件项目。开发人员对其进行测试。

怎么做?

最佳答案

今天碰到这个。幸运的是,我们现在生活在iOS 11以后的时代,并且具有文件提供程序,因此我们只需要将文件手动一次上传到测试设备,然后再将其很好地组织起来即可。

关于ios - Xcode iOS单元测试的非常大的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36482290/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com