Files
UnrealEngineUWP/Engine/Documentation/Source/Programming/Automation/ScreenShotComparison/ScreenShotComparisonGuide.CHN.udn
mitchell wilson 62805384bf Copying //UE4/Dev-Documentation to Samples-Main (//UE4/Samples-Main) CL - 4860397
#rb none

#ROBOMERGE-OWNER: ryan.vance
#ROBOMERGE-AUTHOR: mitchell.wilson
#ROBOMERGE-SOURCE: CL 4860421 in //UE4/Main/...
#ROBOMERGE-BOT: DEVVR (Main -> Dev-VR)

[CL 4860484 by mitchell wilson in Dev-VR branch]
2019-01-31 15:44:30 -05:00

276 lines
14 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
INTSourceChangelist:3782314
Availability: Public
Crumbs: %ROOT%
Title:屏幕截图比较工具
Description:关于使用虚幻引擎4中的自动化系统创建和比较屏幕截图的概述。
Type: Overview
SkillLevel:Intermediate
Version:4.17
Parent:Programming/Automation
related: Engine/Deployment/UnrealFrontend
Order:
Tags:Programming
Topic-image:ScreenshotComparison_Topic.png
Social-image:ScreenshotComparisonBrowser.png
[TOC(start:2 end:2)]
通过屏幕截图比较浏览器你或你的质量保证QA团队可以快速比较在编辑器中捕捉的屏幕截图。通过
自动化测试生成的屏幕截图可以使用虚幻(会话)前端工具来查看,该工具会维护屏幕截图的历史记录,允许你识别出不同构建版本中的明显渲染错误
![](ScreenshotComparisonBrowser.png)
[REGION:caption] 来自Epic自己的自动化测试项目的填充屏幕截图测试。[/REGION]
(#screenshotcapturemethods)
## 屏幕截图捕获方法
你可以通过多种方法构造屏幕截图测试最方便的方法是从使用屏幕截图功能Actor开始或者在现有的功能测试中提取屏幕截图。
(#functionaltestactorsettings)
#### 功能测试Actor设置
**功能性屏幕截图测试Functional Screenshot Test** Actor 使用摄像机捕获屏幕截图,因为这样可以共享许多现有的后期处理和摄像机设置。
下面列出的设置是用于捕获你所需要的屏幕截图的功能性屏幕截图测试所特有的。
![](FT_ScreenshotOptions.png)
[REGION:simpletable]
| 设置 | 说明 |
| --- | --- |
| **分辨率Resolution** | 需要的屏幕截图分辨率。如果不提供设置将使用“自动化设置Automation Settings”中的平台设置的默认分辨率。|
| **延迟Delay** | 提取屏幕截图之前的延迟。|
| **禁用产生噪点的渲染功能Disable Noisy Rendering Features** | 禁用抗锯齿、动态模糊、屏幕空间反射、眼部适应(自动曝光)和接触阴影,因为如果你是要显式地寻找变化,这些功能造成的噪点会在最终渲染的图像中占很大一部分。|
| **可视化缓冲区Visualize Buffer** | 允许你对非默认最终光照场景图像的缓冲区提取屏幕截图。如果你尝试针对特定的GBuffer构建测试要判断是否引入了错误会比较困难那么此设置很有用。|
| **容差Tolerance** | 这些是容差的快速默认值。默认情况下使用“低Low因为在每个像素的颜色中始终有时空抗锯齿引入的一些差异。[INCLUDE:#tolerance] |
| **容差量Tolerance Amount** | 对于每个信道和亮度级别,你都可以控制一块颜色基本相同的区域。通常此设置是必要的,因为现代渲染技术为了隐藏锯齿往往会不断引入噪点。[INCLUDE:#toleranceamt] |
| **最大局部误差Maximum Local Error** | 在你找到颜色容差变化的原因后,需要控制局部的可接受误差。根据在三角形边缘上像素的着色方式,可能有一定比例的像素超出容差级别。与最大全局误差不同,最大局部误差是通过着眼于图像的一小部分来工作的。系统将把这些数据块与局部误差比较,尝试找到会被全局误差忽略的重要更改的热点。|
| **最大全局误差Maximum Global Error** | 在你找到颜色容差变化的原因后,需要控制总体的可接受误差。根据在三角形边缘上像素的着色方式,可能有一定比例的像素超出容差级别。|
| **忽略抗锯齿Ignore Anti-Aliasing** | 如果启用此设置,将会根据可能发生的情况搜索相邻像素,以寻找符合预期的像素,例如像素发生微小漂移。|
| **忽略颜色Ignore Colors** | 如果启用此设置,在屏幕截图测试中将仅比较场景的亮度。|
[/REGION]
[COMMENT:none]
-
[INCLUDE:#tolerance]
[EXCERPT:toleranceamt]
[REGION:simpletable]
| --- | --- |
| **RGBA信道** | 分别设置任何RGBA信道的数值。|
| **最小亮度Min Brightness** | 可接受的最小容差亮度值。|
| **最大亮度Max Brightness** | 可接受的最大容差亮度值。|
[/REGION]
[/EXCERPT:toleranceamt]
[EXCERPT:Tolerance]
* 零Zero
* 低Low
* 中Medium
* 高High
* 自定义Custom
[/EXCERPT:Tolerance]
-
[/COMMENT]
(#editorpreferences)
#### 编辑器首选项
在 **编辑器首选项Editor Preferences** 中可以为所有已放置的功能性屏幕截图测试Actor设置为了比较而捕获的所有屏幕截图的默认分辨率。可以
转到 **编辑Edit** > **编辑器首选项Editor Preferences** > **自动化Automation** > **屏幕截图Screenshots** 来设置此项。
[REGION:lightbox]
[![](EditorPreferences_ScreenshotRes.png)(w:700)](EditorPreferences_ScreenshotRes.png)
[/REGION]
[REGION:caption] 单击查看大图。[/REGION]
[REGION:note]
对个别功能性屏幕截图测试Actor设置的屏幕截图分辨率将覆盖此数值。
[/REGION]
(#functionalscreenshottestactor)
### 功能性屏幕截图测试Actor
**功能性屏幕截图测试** Actor是一种可以放置在关卡中的组件用于在从虚幻前端运行的自动化测试中捕获屏幕截图。
你可以运行两种不同的屏幕截图测试一种是捕获场景视图的普通屏幕截图另一种用来捕获你的游戏用户界面UI
要访问这些功能性屏幕截图Actor请使用 **模式Modes** 面板将这些Actor拖到场景中。你可以在
**测试Testing** 类别下面找到“功能性屏幕截图测试Functional Screenshot Test”和“功能性UI屏幕截图测试Functional UIScreenshot Test”。
![](ModesPanel.png)
[REGION:imagetable]
| ![](ScreenshotUI.png)(w:500) | ![](screenshotTest.png)(w:500) |
| ---- | ---- |
| 功能性屏幕截图测试 | 功能性UI屏幕截图测试 |
[/REGION]
(#takingascreenshotaspartofanotherfunctionaltest)
### 在其他功能性测试中提取屏幕截图
除了提取独立的屏幕截图,你还可以在[功能性测试](Programming/Automation/FunctionalTesting)中提取屏幕截图,从而
在其他脚本操作期间利用屏幕截图比较。
![](ScreenshotWFunctTest.png)(w:850)
[REGION:caption] 用于在其他功能性测试中捕获屏幕截图的蓝图示例。[/REGION]
有一点需要记住,你可以自定义在捕获屏幕截图时应用的[屏幕截图设置](#functionaltestactorsettings)。在
捕获Gameplay或渲染功能以进行比较时你应该考虑将两个有用的蓝图节点设置为默认容差。
![](GetScreenshotDefaulOptions.png)(w:400)
用于Gameplay和渲染的 **默认屏幕截图选项Default Screenshot Options** 节点可用于设置屏幕截图测试Actor的默认 **容差** 级别。在捕获Gameplay差异时**Gameplay**
节点可用于禁用镜头和缓冲区中不一定需要的噪点。如果你是在显式地测试渲染功能,那么就应该使用 **渲染Rendering** 节点,否则
应对关卡中放置的每一个功能性屏幕截图测试Actor实例使用默认设置。
(#screenshotbrowser)
## 屏幕截图浏览器
在屏幕截图比较浏览器中将会出现你的所有屏幕截图比较,当你引入新的比较或者屏幕截图比较失败时,也应该查看此视图
。你可以在此浏览器中检查失败,并作出正确决定,例如因为功能更改的需要而更新屏幕截图,或者
因为怀疑有问题而输入游戏的bug报告。
要访问屏幕截图比较浏览器,你首先需要打开虚幻(会话)前端。你可以在编辑器中选择 **窗口Window** > **开发者工具Developer Tools** > **会话前端Session Frontend** 来执行此操作。
![](ScreenshotBrowserTab.png)(w:1000)
[REGION:caption]
屏幕截图比较浏览器来自Epic关于自动化测试的内部测试项目。
[/REGION]
捕获的屏幕截图将保存在项目的 **Saved** > **Automation** > **Comparisons** 文件夹中。如有必要,你可以使用文本框输入你自己的保存位置
![](ComparisonSaveLoc.png)(w:1000)
运行几次测试之后,你就会有自己的填充图像用于比较。如果你已连接到源代码控制,此时你可以访问几个关于要对这些图像进行的操作的选项。
如果你没有连接到任何形式的源代码控制,这些对话框将被禁用。
[REGION:imagetable]
| ![](AddNew.png)(h:150) | ![](ReplaceAlternative.png)(h:150) |
| --- | --- |
| 添加 | 替换/作为备选项添加 |
[/REGION]
[REGION:simpletable]
| 操作 | 描述 |
| ------ | ----------- |
| **添加Add** | 将屏幕截图添加到真相文件夹,并将它添加到源代码控制中的待定更改列表。|
| **替换Replace** | 删除所有真相数据示例,替换为最新的屏幕截图,作为新的真相数据。|
| **作为备选项添加Add As Alternative** | 偶尔会出现两幅图像都正确的情况。这可能是因为硬件或驱动程序的细小差异,甚至可能是因为硬件所支持的扩展。由于我们仅根据 Platform_RHI_ShaderModel 存储屏幕截图,有可能需要进一步的微调。此时 **作为备选项添加Add As Alternative** 就可发挥作用。它添加图像的另一个真相版本,系统在比较图像时,始终会根据元数据挑选最接近的真相屏幕截图。如果屏幕截图来自完全相同的设备,此选项将会灰显。|
[/REGION]
[REGION:tip]
在运行一组新的测试之前,一定要使用 **删除所有报告Delete All Reports**。因为该工具会随着时间推移累积报告,它也没有自动清除
来自应用程序中先前运行的报告的功能。所以进行此操作可以确保你在运行接下来的测试前拥有干净的记录。
[/REGION]
(#groundtruthscreenshot)
### 真相截图
屏幕截图的 **真相** 版本是你知道正确的版本。为了进行屏幕截图比较,系统将把真相屏幕截图与
后来提取的所有屏幕截图进行对比。如果最新的屏幕截图与其不符,就会造成测试失败。
在你第一次运行屏幕截图自动化测试时,在消息日志和屏幕截图浏览器中将会出现警告信息,表明你需要将新提取的屏幕截图作为真相图像添加。
[REGION:imagetable]
| [REGION:lightbox] [![](MessageLog_AddNew.png)(h:250)](MessageLog_AddNew.png) [/REGION] [REGION:caption] 单击查看大图。[/REGION] | [REGION:lightbox] [![](Warning_AddNew.png)(h:250)](Warning_AddNew.png) [/REGION] [REGION:caption] 单击查看大图。[/REGION] |
| --- | --- |
| 消息日志警告 | 屏幕截图浏览器警告 |
[/REGION]
在“屏幕截图浏览器Screenshot Browser”选项卡中单击 **添加Add New** 按钮,创建用于提交真相图像的更改列表。
![](ScreenshotAddNew.png)(w:1000)
[REGION:note]
如果你的 **添加Add New** 按钮灰显,请确保连接到源代码控制来启用它。
[/REGION]
(#screenshotcomparisonview)
## 屏幕截图比较视图
在屏幕截图比较浏览器中,如果你单击任何图像,将会打开一个窗口,可用来在真相图像和传入图像之间混合。这样就可以更方便地
在相互对比中看出所有差异。
![](ComparisonImages.png)
这里的三个图像(从左到右)如下所示:
* **真相Ground Truth** 是你知道正确的图像。
* **差异Difference** 是用于比较滑块的两个图像之间的差异。
* **传入Incoming** 是在运行自动化测试之后最新捕获的屏幕截图。
[REGION:lightbox]
[![](OpenComparisonSlider.png)(w:600)](OpenComparisonSlider.png)
[/REGION]
[REGION:caption] 单击查看大图。[/REGION]
单击这三个图像中的任何一个都可打开比较滑块窗口。你在该屏幕中可以拖动真相屏幕截图和传入屏幕截图之间的滑块进行比较。
[OBJECT:ComparisonSlider]
[PARAM:before]
![真相](GroundTruth.png)(w:700)
[/PARAM]
[PARAM:after]
![新屏幕截图](Comparison.png)(w:700)
[/PARAM]
[/OBJECT]
在此示例中,已知正确的真相图像和最新运行的自动化测试所捕获的传入屏幕截图之间有明显差异。
(#screenshotworkflow)
## 屏幕截图工作流
1. 你首先要选择你希望用于提取屏幕截图的方法:
* [屏幕截图功能性测试Actor](#functionalscreenshottestactor)
* [在其他功能性测试中提取屏幕截图](#takingascreenshotaspartofanotherfunctionaltest)
1. 如果你本地运行测试或者在构建Farm上运行将收到一条警告表明你需要批准第一幅屏幕截图。
[REGION:lightbox]
[![](MessageLogWarning.png)(w:700)](MessageLogWarning.png)
[/REGION]
[REGION:caption] 单击查看大图。[/REGION]
在屏幕截图浏览器中,你要单击 **添加Add New** 将它作为真相图像添加。
[REGION:lightbox]
[![](ScreenshotAddNew.png)(w:700)](ScreenshotAddNew.png)
[/REGION]
[REGION:caption] 单击查看大图。[/REGION]
[REGION:note]
对于其他平台构建Farm可以负责初始屏幕截图而你可以远程批准在这些平台上提取的屏幕截图方法是就在屏幕截图浏览器中提供网络路径
它就显示在自动化报告的顶端。
[/REGION]
1. 下次运行屏幕截图比较测试时,应该就会得到屏幕截图通过或未通过测试的结果。用屏幕截图浏览器来选择屏幕截图测试并比较差异。
[REGION:lightbox]
[![](PassFail.png)(w:700)](PassFail.png)
[/REGION]
[REGION:caption] 单击查看大图。[/REGION]
如果测试失败将会自动在“屏幕截图浏览器Screenshot Browser”选项卡中显示供比较这样你就可以选择 **替换Replace** 或 **作为备选项添加Add As Alternative** 到真相图像。
[REGION:lightbox]
[![](passFail1.png)(w:700)](passFail1.png)
[/REGION]
[REGION:caption] 单击查看大图。[/REGION]
[REGION:note]
如果你使用[源代码控制](Engine/UI/SourceControl),屏幕截图浏览器会将它们添加到待定更改列表,这样你就能在测试完成后检入这些图像。
[/REGION]