fix: update docs

Description:

Log:
This commit is contained in:
mikigo 2024-05-23 15:30:51 +08:00
parent bddf21ec8f
commit 3ae6533a6d
3 changed files with 95 additions and 65 deletions

View File

@ -40,20 +40,26 @@ Author: mikigo
整体的框架设计在《自动化测试架构设计》文档里面已经有详细描述了,这里贴一下整体的架构图: 整体的框架设计在《自动化测试架构设计》文档里面已经有详细描述了,这里贴一下整体的架构图:
???+ note "架构图" ::: tip 架构图
![](https://pic.imgdb.cn/item/64f054c4661c6c8e54ff4948.png)
![](https://pic.imgdb.cn/item/64f054c4661c6c8e54ff4948.png)
:::
为了突显本文的重点,抽取其中重要功能模块,如下图: 为了突显本文的重点,抽取其中重要功能模块,如下图:
???+ note "核心模块" ::: tip 核心模块
![](https://pic.imgdb.cn/item/64f054c2661c6c8e54ff4770.png)
![](https://pic.imgdb.cn/item/64f054c2661c6c8e54ff4770.png)
:::
### 3、目录结构 ### 3、目录结构
```shell title="框架结构" ```shell title="框架结构"
autotest-basic-frame # 自动化测试基础框架 youqu # 自动化测试基础框架
├── apps # 应用库 ├── apps # 应用库
│   ├── autotest-dde-file-manager # 单独的应用仓库(应用库详细目录结构请看应用库设计方案) │   ├── autotest_dde_file_manager # 单独的应用仓库(应用库详细目录结构请看应用库设计方案)
│   │   ├── case # 用例 │   │   ├── case # 用例
│   │   ├── config.ini # 局部配置 │   │   ├── config.ini # 局部配置
│   │   ├── config.py # 局部配置 │   │   ├── config.py # 局部配置

View File

@ -16,8 +16,11 @@ AT 应用库改造是基于自动化测试基础框架进行用例方法和业
整体仍然遵循 PO 设计理念,根据业务需要,将文管业务层进行 3 层划分: 整体仍然遵循 PO 设计理念,根据业务需要,将文管业务层进行 3 层划分:
应用库架构图(文件管理器) ::: tip 应用库架构图(文件管理器)
![](https://pic.imgdb.cn/item/64f054c3661c6c8e54ff47db.png)
![](https://pic.imgdb.cn/item/64f054c3661c6c8e54ff47db.png)
:::
### 2、目录结构 ### 2、目录结构
@ -77,17 +80,22 @@ autotest_dde_file_manager # 应用仓库
文管界面分为四个区域:标题栏、右边视图区域、左边视图区域、弹窗(设置界面弹窗、保险箱弹窗、删除确认弹窗、及各种网络弹窗); 文管界面分为四个区域:标题栏、右边视图区域、左边视图区域、弹窗(设置界面弹窗、保险箱弹窗、删除确认弹窗、及各种网络弹窗);
. ::: tip 主界面区域划分
主界面区域划分 ![](https://pic.imgdb.cn/item/64f054c3661c6c8e54ff4806.png)
![](https://pic.imgdb.cn/item/64f054c3661c6c8e54ff4806.png)
???+ note "弹窗区域" :::
![](https://pic.imgdb.cn/item/64f054c8661c6c8e54ff4d1b.png)
::: tip
![](https://pic.imgdb.cn/item/64f054c8661c6c8e54ff4d1b.png)
:::
- 各个模块只继承基类 - 各个模块只继承基类
```python title="标题栏" hl_lines="1 3" ```python{1,3}
from apps.autotest_dde_file_manager.widget import BaseWidget from apps.autotest_dde_file_manager.widget import BaseWidget
class TitleWidget(BaseWidget): class TitleWidget(BaseWidget):
@ -100,10 +108,10 @@ autotest_dde_file_manager # 应用仓库
- 不同的定位方案调用不同的定位工具对象。 - 不同的定位方案调用不同的定位工具对象。
```python ```python
self.dog self.dog
self.ui self.ui
``` ```
- 方法编写 - 方法编写
@ -147,7 +155,7 @@ autotest_dde_file_manager # 应用仓库
- `DfmAssert` 直接在用例里面继承,方便使用断言语句。 - `DfmAssert` 直接在用例里面继承,方便使用断言语句。
```python hl_lines="2 4 7" ```python{2,4}
from apps.dde_file_manager.widget.dfm_widget import DfmWidget from apps.dde_file_manager.widget.dfm_widget import DfmWidget
from public.assert import Assert from public.assert import Assert
@ -161,14 +169,14 @@ autotest_dde_file_manager # 应用仓库
- 用例里面直接继承,方便在用例里面使用 self 进行断言,更符合断言的使用习惯,用例逻辑上更清楚。 - 用例里面直接继承,方便在用例里面使用 self 进行断言,更符合断言的使用习惯,用例逻辑上更清楚。
```python hl_lines="1 3" title="case/base_case.py" ```python{1,3}
from apps.autotest_dde_file_manager.dfm_assert import DfmAssert from apps.autotest_dde_file_manager.dfm_assert import DfmAssert
class BaseCase(DfmAssert): class BaseCase(DfmAssert):
pass pass
``` ```
```python hl_lines="1 3 5" title="case/test_xxx_001.py" ```python{1,3}
from apps.autotest_dde_file_manager.case import BaseCase from apps.autotest_dde_file_manager.case import BaseCase
class TestFileManager(BaseCase): class TestFileManager(BaseCase):
@ -224,7 +232,7 @@ class DfmWidget(TitleWidget, RightViewWidget):
pass pass
``` ```
```python title="case/test_xxx_002.py" ```python
from apps.dde_file_manager.widget import DfmWidget from apps.dde_file_manager.widget import DfmWidget
from apps.autotest_dde_file_manager.case import BaseCase from apps.autotest_dde_file_manager.case import BaseCase

View File

@ -18,13 +18,19 @@ Author: mikigo
## 一、背景介绍 ## 一、背景介绍
!!! note "提示" ::: warning 提示
这里介绍以前的AT框架情况以及存在的一些问题
这里介绍以前的AT框架情况以及存在的一些问题
:::
### 1、原有架构介绍 ### 1、原有架构介绍
??? note "原AT框架架构图" ::: tip 原AT框架架构图
![](https://pic.imgdb.cn/item/64f054c5661c6c8e54ff498d.png)
![](https://pic.imgdb.cn/item/64f054c5661c6c8e54ff498d.png)
:::
原有自动化测试架构整体分为三层:用例层(业务逻辑层)、中间层(元素定位和操作方法层)、核心层(底层功能库层)。 原有自动化测试架构整体分为三层:用例层(业务逻辑层)、中间层(元素定位和操作方法层)、核心层(底层功能库层)。
@ -75,8 +81,11 @@ Author: mikigo
### 1、架构设计 ### 1、架构设计
???+ note "现AT框架架构图" ::: tip 现AT框架架构图
![](https://pic.imgdb.cn/item/64f054c4661c6c8e54ff4948.png)
![](https://pic.imgdb.cn/item/64f054c4661c6c8e54ff4948.png)
:::
### 2、设计思路 ### 2、设计思路
@ -108,38 +117,39 @@ Author: mikigo
- 以应用为维度划分,并将测试数据和测试资源整合进来,增加用例标签 `csv` 文件,用于给每条用例打标签。 - 以应用为维度划分,并将测试数据和测试资源整合进来,增加用例标签 `csv` 文件,用于给每条用例打标签。
各标签所使用对应的字段名称,使用 `csv` 文件维护用例与标签的对应关系,对用例实现标签化管理,可以组合其中的标签而从驱动对应的自动化用例执行,兼容现有用例标签,且支持用例标签可扩展; 各标签所使用对应的字段名称,使用 `csv` 文件维护用例与标签的对应关系,对用例实现标签化管理,可以组合其中的标签而从驱动对应的自动化用例执行,兼容现有用例标签,且支持用例标签可扩展;
!!! note "为什么使用csv格式" ::: warning 为什么使用csv格式
使用 `csv` 格式文件可以方便的使用 Excel 表格打开进行编辑,同时由于 `csv` 文件实际是以都好分隔的文本文件,代码中可以在不依赖三方库的情况下方便快速的解析它,可操作性和可维护性较高。 使用 `csv` 格式文件可以方便的使用 Excel 表格打开进行编辑,同时由于 `csv` 文件实际是以都好分隔的文本文件,代码中可以在不依赖三方库的情况下方便快速的解析它,可操作性和可维护性较高。
:::
- 各个应用之间,用例、方法、标签和资源都是相互独立的,编写和维护用例时只需要自己应用下的方法和公共库即可。 - 各个应用之间,用例、方法、标签和资源都是相互独立的,编写和维护用例时只需要自己应用下的方法和公共库即可。
- 结构举例: - 结构举例:
```shell ```shell
. .
├── apps ├── apps
│   ├── deepin_album # 应用名 (用下划线连接是 Python 编码规范) ├── deepin_album # 应用名 (用下划线连接是 Python 编码规范)
│   │   ├── album_assert # 断言库 │ │ ├── album_assert # 断言库
│   │   ├── album_function_tag.csv # 用例标签 │ │ ├── album_function_tag.csv # 用例标签
│   │   ├── asan_cases # 漏洞扫描用例 │ │ ├── asan_cases # 漏洞扫描用例
│   │   ├── function_cases # 功能测试用例 │ │ ├── function_cases # 功能测试用例
│   │   ├── res # 测试资源 │ │ ├── res # 测试资源
│   │   ├── config # 应用内局部配置模块 │ │ ├── config # 应用内局部配置模块
│   │   └── widget # 方法库 │ │ └── widget # 方法库
│   │   ├── album_widget # 应用自己的方法库 │ │ ├── album_widget # 应用自己的方法库
│   │   ├── base_widget # 方法基类 │ │ ├── base_widget # 方法基类
│   │   └── other_widget # 调用其他应用的方法库 │ │ └── other_widget # 调用其他应用的方法库
│   ├── deepin_camera ├── deepin_camera
│   │   ├── function_cases │ │ ├── function_cases
│   │  ... │ │ ...
│   └── public_widget # 公共方法库 └── public_widget # 公共方法库
├── globalconfig # 全局配置模块 ├── globalconfig # 全局配置模块
... ...
``` ```
- globalconfig 配置模块: - `globalconfig` 配置模块:
可以根据需要进行相应配置,测试同学可以根据自己的测试计划,在 `globalconfig` 里面进行配置。 可以根据需要进行相应配置,测试同学可以根据自己的测试计划,在 `globalconfig` 里面进行配置。
@ -153,8 +163,11 @@ Author: mikigo
- 全量测试:在 `tags` 里面为空即可; - 全量测试:在 `tags` 里面为空即可;
!!! note "" ::: tip
通过 `tags` 的配置比较灵活,后面标签化管理章节会讲到,支持标签的逻辑组合,可以根据需要进行灵活配置。
通过 `tags` 的配置比较灵活,后面标签化管理章节会讲到,支持标签的逻辑组合,可以根据需要进行灵活配置。
:::
- 指定某台机器在指定镜像版本上执行用例:在 `IP` 里面配置测试机 `IP`,并在 `URL` 里面填入镜像的下载地址,框架会调用 `PXE` 进行自动装机,装机完之后自动开始执行配置的测试用例。 - 指定某台机器在指定镜像版本上执行用例:在 `IP` 里面配置测试机 `IP`,并在 `URL` 里面填入镜像的下载地址,框架会调用 `PXE` 进行自动装机,装机完之后自动开始执行配置的测试用例。
@ -164,15 +177,15 @@ Author: mikigo
不同测试类型的配置都在同一个配置文件里面,`py` 文件里面分不同的类,`ini` 文件里面分不同的 `option` 不同测试类型的配置都在同一个配置文件里面,`py` 文件里面分不同的类,`ini` 文件里面分不同的 `option`
全局配置和局部配置的策略如下: 全局配置和局部配置的策略如下:
- 全局配置了执行的用例标签,局部配置未配置,则按照全局配置执行。 - 全局配置了执行的用例标签,局部配置未配置,则按照全局配置执行。
- 全局配置未配置,局部配置了执行的用例标签,则按照局部配置执行。 - 全局配置未配置,局部配置了执行的用例标签,则按照局部配置执行。
- 全局配置了执行的用例标签,局部配置了执行的用例标签,则按照全局配置执行。 - 全局配置了执行的用例标签,局部配置了执行的用例标签,则按照全局配置执行。
- 应用层: - 应用层:
`runner` 是测试执行的入口,它会根据配置里面的配置项,进行用例的加载和执行。它提供接口给自动化测试平台,平台上的指令实际上都是通过下发给执行器,然后由执行器来执行相应的测试。 `manage.py` 是测试执行的入口,它会根据配置里面的配置项,进行用例的加载和执行。它提供接口给自动化测试平台,平台上的指令实际上都是通过下发给执行器,然后由执行器来执行相应的测试。
- 自动化测试平台 - 自动化测试平台
@ -285,8 +298,11 @@ class DdeDesktopPublicWidget:
测试平台可能会涉及到的模块有:测试机资源管理模块、用例执行控制模块、结果展示模块、`PXE` 镜像安装模块等。 测试平台可能会涉及到的模块有:测试机资源管理模块、用例执行控制模块、结果展示模块、`PXE` 镜像安装模块等。
??? note "想要的预期" ::: tip
用户(测试、研发同学等)可以配置自己的测试计划,如执行哪个应用、执行用例的范围、在哪台机器上执行、镜像版本及下载地址、应用版本及下载地址、执行时间。
用户(测试、研发同学等)可以配置自己的测试计划,如执行哪个应用、执行用例的范围、在哪台机器上执行、镜像版本及下载地址、应用版本及下载地址、执行时间。
:::
5.2、执行入口提供给测试平台的接口包括:用例执行接口、结果返回接口、镜像下载接口、测试机镜像安装接口、应用下载接口、测试机应用安装更新接口等。 5.2、执行入口提供给测试平台的接口包括:用例执行接口、结果返回接口、镜像下载接口、测试机镜像安装接口、应用下载接口、测试机应用安装更新接口等。