parent
bddf21ec8f
commit
3ae6533a6d
|
@ -40,20 +40,26 @@ Author: mikigo
|
||||||
|
|
||||||
整体的框架设计在《自动化测试架构设计》文档里面已经有详细描述了,这里贴一下整体的架构图:
|
整体的框架设计在《自动化测试架构设计》文档里面已经有详细描述了,这里贴一下整体的架构图:
|
||||||
|
|
||||||
???+ note "架构图"
|
::: tip 架构图
|
||||||

|
|
||||||
|

|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
为了突显本文的重点,抽取其中重要功能模块,如下图:
|
为了突显本文的重点,抽取其中重要功能模块,如下图:
|
||||||
|
|
||||||
???+ note "核心模块"
|
::: tip 核心模块
|
||||||

|
|
||||||
|

|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
### 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 # 局部配置
|
||||||
|
|
|
@ -16,8 +16,11 @@ AT 应用库改造是基于自动化测试基础框架进行用例方法和业
|
||||||
|
|
||||||
整体仍然遵循 PO 设计理念,根据业务需要,将文管业务层进行 3 层划分:
|
整体仍然遵循 PO 设计理念,根据业务需要,将文管业务层进行 3 层划分:
|
||||||
|
|
||||||
应用库架构图(文件管理器)
|
::: tip 应用库架构图(文件管理器)
|
||||||

|
|
||||||
|

|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
### 2、目录结构
|
### 2、目录结构
|
||||||
|
|
||||||
|
@ -77,17 +80,22 @@ autotest_dde_file_manager # 应用仓库
|
||||||
|
|
||||||
文管界面分为四个区域:标题栏、右边视图区域、左边视图区域、弹窗(设置界面弹窗、保险箱弹窗、删除确认弹窗、及各种网络弹窗);
|
文管界面分为四个区域:标题栏、右边视图区域、左边视图区域、弹窗(设置界面弹窗、保险箱弹窗、删除确认弹窗、及各种网络弹窗);
|
||||||
|
|
||||||
.
|
::: tip 主界面区域划分
|
||||||
|
|
||||||
主界面区域划分
|

|
||||||

|
|
||||||
???+ note "弹窗区域"
|
:::
|
||||||

|
|
||||||
|
::: tip
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
|
||||||
- 各个模块只继承基类
|
- 各个模块只继承基类
|
||||||
|
|
||||||
```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
|
||||||
|
|
||||||
|
|
|
@ -18,13 +18,19 @@ Author: mikigo
|
||||||
|
|
||||||
## 一、背景介绍
|
## 一、背景介绍
|
||||||
|
|
||||||
!!! note "提示"
|
::: warning 提示
|
||||||
这里介绍以前的AT框架情况以及存在的一些问题;
|
|
||||||
|
这里介绍以前的AT框架情况以及存在的一些问题;
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
### 1、原有架构介绍
|
### 1、原有架构介绍
|
||||||
|
|
||||||
??? note "原AT框架架构图"
|
::: tip 原AT框架架构图
|
||||||

|
|
||||||
|

|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
原有自动化测试架构整体分为三层:用例层(业务逻辑层)、中间层(元素定位和操作方法层)、核心层(底层功能库层)。
|
原有自动化测试架构整体分为三层:用例层(业务逻辑层)、中间层(元素定位和操作方法层)、核心层(底层功能库层)。
|
||||||
|
|
||||||
|
@ -75,8 +81,11 @@ Author: mikigo
|
||||||
|
|
||||||
### 1、架构设计
|
### 1、架构设计
|
||||||
|
|
||||||
???+ note "现AT框架架构图"
|
::: tip 现AT框架架构图
|
||||||

|
|
||||||
|

|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
### 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、执行入口提供给测试平台的接口包括:用例执行接口、结果返回接口、镜像下载接口、测试机镜像安装接口、应用下载接口、测试机应用安装更新接口等。
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue