如何将音频 API 集成到您的 Appium 自动化脚本中

50 篇文章 1 订阅
3 篇文章 0 订阅

您是否曾在测试移动应用程序的音频功能时遇到问题?捕获、注入和比较音频历来是移动自动化测试中的一个棘手领域。即使试图验证一些简单的事情,比如检查在规定的操作期间是否播放了正确的音频,也可能是一项艰巨的任务。 HeadSpin 的音频 API 简化了这些操作,并为开发人员提供了方便的 RESTful 接口。这篇文章对每个 API 进行了高级概述,并展示了如何将其集成到您的 Appium 自动化脚本中。

这些 API 是什么?我如何使用它们?

Headspin 总共有七种不同的关于移动设备音频的 API。这篇文章将主要关注三个非常流行的端点,包括将音频上传到我们的服务器、在 HeadSpin 云中的给定移动设备上捕获声音,以及比较两个音频文件以查看它们是否匹配。

上传

此端点的主要用途是允许开发人员上传参考文件,稍后用于与自动化测试期间从移动设备捕获的测试音频文件进行比较。需要注意的一件事是该端点的音频格式是 .wav。来自此端点的响应是一个 JSON 对象,用于通知上传是否成功,如果成功,它将为您提供唯一的音频 ID。

示例代码

def upload_reference_file(api_token):
   api_endpoint = 'https://api-dev.headspin.io/v0/audio/upload'
   data = open('reference_audio.wav', 'rb')
   r = requests.post(api_endpoint,
                     headers={'Authorization': 'Bearer {}'.format(api_token)},
                     data=data)
   response = json.loads(r.text)
   return response['audio_id']

捕捉

当您想要开始从给定设备捕获音频输出时调用此端点,并且 API 还允许您以几种不同的方式结束会话。 当您对服务器进行初始捕获调用时,您可以指定您希望它运行多长时间,或者您可以存储响应,其中包括工作人员 ID 并使用它来轮询状态更新并停止捕获。

完成从设备捕获音频后,它会上传到存储系统,您组织中的任何人都可以访问它。 在捕获端点的响应中,音频 id 被传回,这对于存储以供以后参考至关重要。

示例代码

def capture_audio(device_address, duration, api_token):
   api_endpoint = 'https://api-dev.headspin.io/v0/audio/capture/start'
   data = {}
   data['device_address'] = device_address
   data['max_duration'] = duration
   data = json.dumps(data)
   r = requests.post(api_endpoint,
                     headers={'Authorization': 'Bearer {}'.format(api_token)},
                     data=data)
   response = json.loads(r.text)
   return response['audio_id']

分析

分析或匹配 API 允许您传入两个音频文件,一个参考和一个测试,然后确定参考音频是否存在于测试音频中。我们将参考文件定义为原始音频源,而测试音频是包含参考的更扩展的捕获音频。

这里的用例是检测精确的音频匹配以及在测试音频中定位参考音频。此外,它还可以比较测试与参考的音频质量。

此 API 的响应包括来自分析的多个结果参数。对我来说,这个回应的关键是它是否首先是成功的。成功并不表示音频是否匹配,而是表示算法能够正确运行。除了成功之外,我们的响应中还有两个以参数和结果形式存在的对象。参数描述了分析过程中使用的值的阈值,例如采样率。成功分析背后最重要的当然是结果。结果对象为我们提供了以下统计信息:

  • 匹配:完整、部分、否或错误
  • 比赛质量
  • 在测试方面的参考开始和结束时间

示例代码

def compare_audio(test_id, reference_id, api_token):
   api_endpoint = 'https://api-dev.headspin.io/v0/audio/analysis/match'
   data = {}
   data['test_audio_id'] = test_id
   data['ref_audio_id'] = reference_id
   data = json.dumps(data)
   r = requests.post(api_endpoint,
                     headers={'Authorization': 'Bearer {}'.format(api_token)},
                     data=data)
   response = json.loads(r.text)
   if response['success'] == True:
       Return response['result']

我们如何将所有这些联系在一起?

为了展示我们如何将所有这些端点集成到单个自动化运行中,我们将查看一个客户用例。该客户的目标是验证当他们的服务用户拨打电话时,他们的 SIM 卡上没有余额时是否给出了正确的自动响应。

给定正确的参考音频,这通过使用 Headspins 音频 API 变得相对简单。我们按以下步骤执行此测试:

  • 使用上传端点将参考文件上传到 Headspin 的存储系统,并存储音频 ID 以备后用。
  • 在启用音频的 Headspins 移动设备云中启动 Android/iOS 设备。
  • 使用 Appium 框架导航到设备的手机应用程序。
  • 输入给定号码并使用客户提供的 SIM 卡拨打电话。
  • 呼叫连接后,点击 Headspins 捕获端点,最长持续时间为 20 秒,以记录自动响应并将音频 ID 存储在响应中以备后用。
  • 将参考和测试音频 ID 发送到 Headspins 分析 API 以验证它们是否匹配。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值