SauceLabs iOS模拟器Appium自动化测试性能过慢求优化方案
SauceLabs iOS模拟器自动化测试性能问题求助
我在SauceLabs的iOS模拟器上执行自动化测试时遇到了极差的性能表现,举个例子:一个简单的授权测试
- Android模拟器:耗时1分50秒完成
- iOS模拟器:耗时12分52秒完成
进一步查看后发现,运行iOS模拟器的VM资源配置远低于需求:
- 芯片:Intel Core 2 Solo
- 内存:6GB
- 显卡:VMware SVGA || 32 MB
我本地使用Apple M1 Pro芯片、16GB内存的设备运行同样测试完全没有问题,因此判定SauceLabs提供的VM资源不足以支撑iOS模拟器流畅运行。
目前我唯一的解决办法是切换到SauceLabs真实设备,测试执行速度和Android模拟器相当,授权测试耗时约1分50秒,但真实设备的成本比虚拟设备高很多,使用虚拟设备会更划算。
我想确认是否遗漏了某些配置项:比如有没有办法为Appium测试配置更高资源的VM?或者是否存在特殊Capability可以优化iOS模拟器的性能?我在官方文档中没有找到相关方法,希望有遇到过相同情况的人能给出建议,感谢。
附:我的Capabilities配置(当前偏向真实设备)
private DesiredCapabilities getSauceLabsIOSDesiredCapabilities() { CAPABILITIES.readCapabilitiesFromProperties(); DesiredCapabilities capabilities = CAP.get(); capabilities.setCapability("appium:deviceName", new SauceLabsService().getNotBusyIOSRealDevice(DEVICE).getFullDeviceName()); capabilities.setCapability("appium:platformVersion", DEVICE.getPlatformVersion()); capabilities.setCapability("appium:automationName", "XCUITest"); capabilities.setCapability("appium:deviceOrientation", "portrait"); capabilities.setCapability("appium:sendKeyStrategy", "setValue"); capabilities.setCapability("appium:settings[waitForQuiescence]", false); capabilities.setCapability("appium:autoFillPasswords", false); capabilities.setCapability("appium:settings[animationCoolOffTimeout]", 0); capabilities.setCapability("appium:settings[customSnapshotTimeout]", 2); capabilities.setCapability("appium:noReset", true); capabilities.setCapability("appium:bundleId", "my.cool.app"); capabilities.setCapability("appium:settings[pageSourceExcludedAttributes]", "visible,enabled,accessible,x,y,width,height,index"); capabilities.setCapability("appium:derivedDataPath", "/Volumes/Sauce/wda/wda-v2.0.0-xcode13.0/WebDriverAgent/DerivedData/WebdriverAgent"); capabilities.setCapability("appium:app", AppCenterService.getInstance().getApp().get("url")); capabilities.setCapability("appium:shouldTerminateApp", true); MutableCapabilities sauceOptions = new MutableCapabilities(); sauceOptions.setCapability("appiumVersion", "2.0.0"); sauceOptions.setCapability("cacheId", "some_cache"); sauceOptions.setCapability("build", CAPABILITIES.getBuildNumber()); sauceOptions.setCapability("name", CucumberScenario.SCENARIO.get().getName()); sauceOptions.setCapability("videoUploadOnPass", false); capabilities.setCapability("sauce:options", sauceOptions); log.info("Capabilities: " + new JSONObject(capabilities.toJson()).toString(identFactor)); return capabilities; }
内容的提问来源于stack exchange,提问作者Arsen Domanych
相关产品推荐
相关产品推荐

