---
order: 20
---
# 回归测试

回归测试是软件测试的一种，在升级SuccBI产品部署包后或对系统进行了修改配置后，用于快速复测确认原有功能是否正常。

SuccBI提供了回归测试脚本能力，可以在平台上进行快速测试和单元测试，断言页面渲染结果、测试业务流程等。

\[\[toc]]

## 新建测试脚本{#new-test}

测试脚本管理在元数据项目的`test`目录下，脚本支持2种：

1. 快速测试脚本，`.qunit.json`结尾的json格式文件，通过配置一个简单的json可以自动测试报表、仪表板、spg等
2. 单元测试脚本，`.qunit.ts`结尾的typescript脚本文件，通过编写脚本代码能模拟用户操作进行自动化测试

新建方法：

1. 进入项目的“资源”模块
2. 新建一个项目内的根目录`test`（test目录最初不存在，需要自己新建）
3. 然后即可在test目录下新建测试脚本，注意脚本命名必须以`.qunit.json`结尾或`.qunit.ts`结尾，如`数据看板仪表板测试.qunit.json`

### 快速测试{#quick-test}

快速测试无需编码，使用指定用户、参数访问指定路径或者目录下的文件，并断言测试结果。

例如，需要测试`/SuccBI/ana/report`下的所有报表，可以使用配置：

```json
{
    "defaultUserId": "admin",
    "defaultParams": {"xsdw": "4201000001"}
    "files": [{
        "folder": "/SuccBI/ana/report",
        "fileType": "rpt",
        "userId": "test1",
        "params": {"xsdw": "4201000002", "date": "20200101"}
    }]
}
```

文件格式定义如下：

```ts
/**
 * 报表仪表板等对象的快速测试文件的格式。
 * 
 * 元数据项目的test目录下可以新建xxx.qunit.json文件，通过配置这个json文件可以快速的测试报表、仪表板计算的结果是否符合预期。
 */
declare interface QuickTestUnitConf {
	/**默认的测试账号，通常为admin */
	defaultUserId?: string;
	/**默认的计算参数，通常为空，如果有，那么每个测试资源都会继承这个参数，当然也可以覆盖部分参数内容 */
	defaultParams?: JSONObject;
	/**
	 * 具体要测试的资源
	 */
	files: Array<QuckTestFileConf>;
}

/**
 * 一个测试资源的定义格式
 */
declare interface QuckTestFileConf {
	/**
	 * 要测试的文件的路径，可以是绝对的也可以是相对的
	 * 1. /开头的是绝对的，路径中带项目名和文件扩展名，如`/DEMO/ana/报表/清单报表/档案式报表.rpt`
	 * 2. 不以/开头的，表示相对于当前项目，如`ana/报表/清单报表/档案式报表.rpt`
	 */
	path?: string;
	/**
	 * 要测试的文件夹，此文件下的所有满足fileType匹配的文件都会测试到
	 */
	folder?: string;
	/**
	 * 要测试文件夹中的哪类文件，如rpt、dash
	 */
	fileType?: string;
	/**
	 * 排除文件夹中的哪些自文件夹或文件，只要路径中包含这个数组中指定的内容的都排除
	 */
	exclude?: Array<string>;
	/**
	 * 测试用的用户，如果没有指定用默认的
	 */
	userId?: string;
	/**
	 * 测试参数，如果没有指定用默认的，指定了那么和默认的参数合并
	 */
	params?: JSONObject;
}
```

### 单元测试{#unit-test}

TODO

## 执行测试{#run-test}

在浏览器地址栏输入测试脚本文件的路径（去掉`.ts`和`.json`后缀）进行测试，如：

1. 有一个快速测试脚本`http://192.168.7.8:8080/DEMO/test/quick-test-demo.qunit.json`，那么在浏览器地址栏输入`http://192.168.7.8:8080/DEMO/test/quick-test-demo.qunit`即可测试。
2. 同上，如果是单元测试脚本`http://192.168.7.8:8080/DEMO/test/demo.qunit.ts`，那么在浏览器地址栏输入`http://192.168.7.8:8080/DEMO/test/demo.qunit`即可测试。

### 测试结果断言对比{#assert-file}

执行测试用例后，如果当前用例产生的测试结果和期望值不符，会显示出红色的用例错误条目。点击显示差异会弹出测试结果对话框，左侧为期望值，右侧为实际值。通过对比测试结果内容判断是否存在问题。

初次运行测试用例时，用例条目会显示为错误。检查实际值是否正确，确认正确后点击更新测试用例结果，将实际值写入期望值文件。
