测试HoloLens应用的做法和测试Windows应用很类似。所有常规的内容都应该被考虑在内(功能、互操作性、性能、安全性、可靠性等等),然而有些特性是HoloLens特有的,在PC或者手机上无法测试的。全息应用需要能够在一系列多样的环境中顺畅地运行,同时也需要时刻保持性能稳定和较好的用户舒适度。本文主要讨论这方面的内容。

性能 Performance


性能表现对于全息应用来讲至关重要,这直接影响到用户体验,我们会用大幅篇幅来讨论这个主题。更多内容请阅读: performance recommendations.

3D环境中测试3D内容 Testing 3D in 3D


  1. 尽可能在不同的环境中测试你的app。尝试在大房间、小房间、厨房、客厅、卧室、办公室等等环境中测试。同时也应尝试在非标准特征的房间中测试,这些房间可能会有非垂直的墙壁、弧形的墙壁、倾斜的天花板等等。当我们通过走廊、楼梯在不同房间、楼层切换时,你的应用一切还能正常运行吗?

  2. 在不同光线条件下测试。你的应用能在不同的环境条件下正常运行吗?即使这些环境中存在不同的光线条件、黑色平面、透明或反光表面,例如镜子、玻璃墙等等。
  3. 在不同的运动条件下测试。戴上设备并在不同的运动状态下测试你的应用场景。你的应用能正确地响应不同的运动或稳定状态吗?
  4. 在不同的角度下测试。如果你有一个固定在世界中的全息图像,用户走到它背后会发生什么?如果有动心来到用户和此全息图像之间,这时会发生什么?如果用户从上面或者下面看向此全息图像,这时又会发生什么?
  5. 使用空间和声音提示。确保你的应用使用了它们来避免用户丢失视野。
  6. 在不同等级的环境噪音下测试。如果你集成了语音命令特性,请试着在不同噪音环境下调用此功能。
  7. 在坐下和站立情形下测试。确保在坐下或者站立的位置测试你的应用。
  8. 从不同的距离测试。在远处你的UI元素能被看到并能够进行交互吗?在离全息图像非常近的地方它们还能继续正常工作吗?
  9. 测试应用栏的交互情况。所有的应用磁贴和2D应用都会有一个顶部应用栏,上面的按钮允许你来控制它们在世界中的定位。确保你的应用能够正确响应应用栏的操作,尝试在应用激活或未激活的状态下测试调整模式。

环境测试项目 Environmental Test Matrix

舒适性 Comfort


  1. 裁剪面(Clip Planes)。我们要关注全息图像被渲染的位置在哪里。关于裁剪面的更多信息,请看:https://developer.microsoft.com/en-us/windows/holographic/Hologram_stability.html#hologram_render_distances
  2. 避免头部移动时可见内容的不连续移动。我们要避免相机不能正确响应用户的真实移动。如果的应用需要用户在场景中移动,那么确保运动可以预测、较小加速并能让用户控制自己的移动。
  3. 遵循全息图像质量指南。实现了全息图像质量指南的高性能应用很少会导致用户不舒适。
  4. 水平分布全息图像而不是在垂直方向上。迫使用户花额外的时间上下观察可能会导致颈部疲劳。

输入方式 Input


凝视和手势 Gaze and Gestures

Gaze 是HoloLens最基本的输入方式,用于在环境中选中目标全息对象。用户应当可以通过指针的位置确定gaze当前注视的目标对象。Gaze指针很类似与鼠标指针。

手势 则允许你与全息图像交互,就像鼠标点击样。绝大多数时间鼠标点击和Touch(触屏点击)是一样的,但是明白和确定它们之间区别也是很重要的。

确定你的应用能够响应鼠标或触摸的不同行为,这会让用户体验更自然些。例如基于Gaze悬停而触发行为。

自定义语音命令 Custom Voice Commands

语音输入是很自然的交互形式,取决于你选择的语音命令和形式,用户可能会感到很棒或者会感到困惑。一条基本原则是,避免使用系统内置的语音命令,例如“Select”或“Hey Cortana”。下面是一些要考虑的地方:

  1. 避免使用听起来相似的语音命令。这会潜在地导致调用错误
  2. 尽量使用表达丰富的关键词。这可以提高识别率,避免错误调用。

外设 Peripherals

用户可以通过外设与你的APP交互,我们对此不需要去做特定的处理。然而还是有些事情需要我们检测:

  1. 确定自定义交互可用。例如你的APP可以有些自定义快捷键组合
  2.  确定多种输入形式切换可用。例如在一个场景中用户可能会使用多种输入方式结束一个任务,比如声音、手势、鼠标和键盘等等。

系统集成 System Integration


电池 Battery

除去电源线后来测试你的应用,以了解应用耗电情况。可以通过LED等情况来判断当前电池状态,对应情况如下:

电源状态切换 Power State Transitions

确定应用在不同电源状态切换时,关键场景能否如预期一样正常工作。例如,应用是否停留在它原来的位置上?它是否正确的保持着它的状态?它是否还能如预期一样工作?

  1. 待机/恢复。通过按压一次电源键3分钟后即可让HoloLens自动进入待机状态,再次点击电源按钮即可从待机状态恢复。连接电源线或从电源线断开也可以让设备从待机状态恢复。
  2. 关闭/重启 。长按电源键即可关闭HoloLens,再次按下电源键即可重启设备。

多应用场景 Multi-App Scenarios

确定在不同APP间切换时,核心应用功能是否能正常工作,尤其当你设定了后台运行任务时。粘贴/复制操作和Cortana集成也应当检测是否可用。

应用遥测 Telemetry


使用遥测和分析工具对你会很有用。集成应用分析工具可以从测试用户和终端用户那里收集应用数据。这些数据通常可以在你将

应用提交到应用商店前帮助优化应用。有很多可选的分析工具,如果你不确定如何开始,可以阅读: https://www.visualstudio.com/en-us/products/application-insights-vs.aspx

需要考虑的问题:

  1. 用户如何使用这片空间?
  2. 该应用如何在世界中放置对象?你能检测到问题吗?
  3. 用户在应用不同阶段划花了多少时间?
  4. 用户在该应用上花了多长时间?
  5. 用户正在尝试着最常见的用途是什么?
  6. 用户有触发异常状态或错误吗?

模拟器和模拟输入 Emulator and Simulated Input


HoloLens模拟器是测试你的全息应用最有效的方式,可以模拟各种用户特征和空间环境。下面是一些使用模拟器测试应用的建议:

  1. 使用模拟器的虚拟房间来扩展你的测试内容。模拟器内置了各种大小的虚拟房间,你可以使用这些环境来测试应用。
  2. 使用模拟器从各种角度观察你的app。使用上下翻页按键来模拟用户的高矮。
  3. 使用真实设备来测试你的应用。HoloLens模拟器是很好的工具,但是在提交到应用商店之前你还是应该使用真是设备来测试应用。这对于确保真实设备上的性能和体验非常重要。

带着环境感知模拟的自动测试 Automated testing with Perception Simulation


一些开发者可能想要自动测试应用。除了单元测试外,你可以使用HoloLens的环境感知模拟模块来自动进行人类和环境输入模拟。环境感知模拟API可以发送模拟的输入数据到HoloLens模拟器或HoloLens真机。

应用认证工具包 Windows App Certification Kit


为了帮助你尽可能顺利地发布应用到应用商店,在提交商店认证之前,可以在本地鉴定和测试应用。如果你的应用以 Windows.Holographic为目标平台,Windows App Certification Kit 将仅在你的PC上运行本地静态分析测试,而不会在HoloLens上运行测试。

HoloLens开发手记 - 测试 Testing的更多相关文章

  1. HoloLens开发手记 - HoloLens真机上手简评

    千呼万唤始出来,终于今天拿到了HoloLens真机. 使用体验 使用自带的应用录制了一段使用视频,如下 设备概览 包装盒 本体 试戴 实际效果 GalaxyExplorer试玩 全息图像贴到现实场景表 ...

  2. HoloLens开发手记 - 使用HoloLens模拟器 Using HoloLens emulator

    首先下载HoloLens模拟器 HoloLens模拟器运行在没有真机的情况下在你的PC上测试应用,属于HoloLens开发工具系列.模拟器使用了Hyper-V虚拟机.通常通过传感器获取的人体和环境输入 ...

  3. HoloLens开发手记 - 应用程序模型 App model

    HoloLens使用Universal Windows Platform (UWP)提供的应用模型.UWP应用模型定义了应用如何被安全和完全地安装.更新.版本控制和移除.它管理了应用生命周期 - 应用 ...

  4. HoloLens开发手记-开发概述Development overview

    开发HoloLens全息应用将使用UWP平台(Universal Windows Platform),所有的HoloLens应用都是Win10通用应用,所有UWP通用应用都可以在HoloLens上运行 ...

  5. HoloLens开发手记 - 构建2D应用 Building 2D apps

    HoloLens可以让我们在真实世界中看到全息图像内容.但是它本质上还是一台Windows 10设备,这意味着HoloLens可以以2D应用形式运行Windows Store里的大部分UWP应用. 目 ...

  6. HoloLens开发手记 - 使用Windows设备控制台 Using Windows Device Portal

    Windows设备控制台允许你通过Wi-Fi或USB来远程控制你的HoloLens设备.设备控制台是HoloLens上的一个Web Server,你可以通过PC的浏览器来连接到它.设备控制台包含了很多 ...

  7. HoloLens开发手记 - Vuforia开发概述 Vuforia development overview

    关于Vuforia,开发AR应用的人基本都会熟悉.之前我也写过一篇关于Vuforia开发的博客:Vuforia AR SDK入门 今天这篇博客则主要是谈谈HoloLens使用Vuforia开发混合现实 ...

  8. HoloLens开发手记 - Unity development overview 使用Unity开发概述

    Unity Technical Preview for HoloLens最新发行版为:Beta 24,发布于 09/07/2016 开始使用Unity开发HoloLens应用之前,确保你已经安装好了必 ...

  9. HoloLens开发手记 - Unity之语音输入

    对于HoloLens,语音输入是三大基本输入方式之一,广泛地运用在各种交互中.HoloLens上语音输入有三种形式,分别是: 语音命令 Voice Command 听写 Diction 语法识别 Gr ...

随机推荐

  1. Web Service 的工作原理

    Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的 ...

  2. Tomcat:云环境下的Tomcat设计思路——Tomcat的多实例安装

    Cloud现在是一个热门的技术,Tomcat是学习Java的人一般都会接触的Web服务器,如果在Cloud环境下使用Tomcat,又当如何呢?不可避免的,要安装多个Tomcat了,这里称之为Tomca ...

  3. HTTPS那些事(二)SSL证书

    转自:http://www.guokr.com/post/116169/ 从第一部分HTTPS原理中, 我们可以了解到HTTPS核心的一个部分是数据传输之前的握手,握手过程中确定了数据加密的密码.在握 ...

  4. ZIP打包解包

    linux zip命令的基本用法是: zip [参数] [打包后的文件名] [打包的目录路径] linux zip命令参数列表: -a 将文件转成ASCII模式-F 尝试修复损坏的压缩文件-h 显示帮 ...

  5. [转]TCP协议中的三次握手和四次挥手(图解)

    本文转自:http://blog.csdn.net/whuslei/article/details/6667471 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来 ...

  6. 探索 OpenStack 之(17):计量模块 Ceilometer 中的数据收集机制

    本文将阐述 Ceilometer 中的数据收集机制.Ceilometer 使用三种机制来收集数据: Notifications:Ceilometer 接收 OpenStack 其它服务发出的 noti ...

  7. NOIP2011pj表达式的值[树形DP 笛卡尔树 | 栈 表达式解析]

    题目描述 对于1 位二进制变量定义两种运算: 运算的优先级是: 先计算括号内的,再计算括号外的. “× ”运算优先于“⊕”运算,即计算表达式时,先计算× 运算,再计算⊕运算.例如:计算表达式A⊕B × ...

  8. NOIP2013pj小朋友的数字[DP 最大子段和]

    描述 有 n 个小朋友排成一列.每个小朋友手上都有一个数字,这个数字可正可负.规定每个小朋友的特征值等于排在他前面(包括他本人)的小朋友中连续若干个(最少有一个)小朋友手上的数字之和的最大值.作为这些 ...

  9. instanceof

    java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例. instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. result ...

  10. 第65课 C++中的异常处理(下)

    1. C++中的异常处理 (1)catch语句块可以抛出异常 ①catch中获捕的异常可以被重新抛出 ②抛出的异常需要外层的try-catch块来捕获 ③catch(…)块中抛异常的方法是throw; ...