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

|
||||
::: tip 架构图
|
||||
|
||||

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

|
||||
::: tip 核心模块
|
||||
|
||||

|
||||
|
||||
:::
|
||||
|
||||
### 3、目录结构
|
||||
|
||||
```shell title="框架结构"
|
||||
autotest-basic-frame # 自动化测试基础框架
|
||||
youqu # 自动化测试基础框架
|
||||
├── apps # 应用库
|
||||
│ ├── autotest-dde-file-manager # 单独的应用仓库(应用库详细目录结构请看应用库设计方案)
|
||||
│ ├── autotest_dde_file_manager # 单独的应用仓库(应用库详细目录结构请看应用库设计方案)
|
||||
│ │ ├── case # 用例
|
||||
│ │ ├── config.ini # 局部配置
|
||||
│ │ ├── config.py # 局部配置
|
||||
|
|
|
@ -16,8 +16,11 @@ AT 应用库改造是基于自动化测试基础框架进行用例方法和业
|
|||
|
||||
整体仍然遵循 PO 设计理念,根据业务需要,将文管业务层进行 3 层划分:
|
||||
|
||||
应用库架构图(文件管理器)
|
||||

|
||||
::: tip 应用库架构图(文件管理器)
|
||||
|
||||

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

|
||||
|
||||
:::
|
||||
|
||||
::: tip
|
||||
|
||||
主界面区域划分
|
||||

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

|
||||
|
||||
:::
|
||||
|
||||
|
||||
- 各个模块只继承基类
|
||||
|
||||
```python title="标题栏" hl_lines="1 3"
|
||||
```python{1,3}
|
||||
from apps.autotest_dde_file_manager.widget import BaseWidget
|
||||
|
||||
class TitleWidget(BaseWidget):
|
||||
|
@ -147,7 +155,7 @@ autotest_dde_file_manager # 应用仓库
|
|||
|
||||
- `DfmAssert` 直接在用例里面继承,方便使用断言语句。
|
||||
|
||||
```python hl_lines="2 4 7"
|
||||
```python{2,4}
|
||||
from apps.dde_file_manager.widget.dfm_widget import DfmWidget
|
||||
from public.assert import Assert
|
||||
|
||||
|
@ -161,14 +169,14 @@ autotest_dde_file_manager # 应用仓库
|
|||
|
||||
- 用例里面直接继承,方便在用例里面使用 self 进行断言,更符合断言的使用习惯,用例逻辑上更清楚。
|
||||
|
||||
```python hl_lines="1 3" title="case/base_case.py"
|
||||
```python{1,3}
|
||||
from apps.autotest_dde_file_manager.dfm_assert import DfmAssert
|
||||
|
||||
class BaseCase(DfmAssert):
|
||||
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
|
||||
|
||||
class TestFileManager(BaseCase):
|
||||
|
@ -224,7 +232,7 @@ class DfmWidget(TitleWidget, RightViewWidget):
|
|||
pass
|
||||
```
|
||||
|
||||
```python title="case/test_xxx_002.py"
|
||||
```python
|
||||
from apps.dde_file_manager.widget import DfmWidget
|
||||
from apps.autotest_dde_file_manager.case import BaseCase
|
||||
|
||||
|
|
|
@ -18,13 +18,19 @@ Author: mikigo
|
|||
|
||||
## 一、背景介绍
|
||||
|
||||
!!! note "提示"
|
||||
::: warning 提示
|
||||
|
||||
这里介绍以前的AT框架情况以及存在的一些问题;
|
||||
|
||||
:::
|
||||
|
||||
### 1、原有架构介绍
|
||||
|
||||
??? note "原AT框架架构图"
|
||||

|
||||
::: tip 原AT框架架构图
|
||||
|
||||

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

|
||||
::: tip 现AT框架架构图
|
||||
|
||||

|
||||
|
||||
:::
|
||||
|
||||
### 2、设计思路
|
||||
|
||||
|
@ -110,8 +119,9 @@ Author: mikigo
|
|||
|
||||
各标签所使用对应的字段名称,使用 `csv` 文件维护用例与标签的对应关系,对用例实现标签化管理,可以组合其中的标签而从驱动对应的自动化用例执行,兼容现有用例标签,且支持用例标签可扩展;
|
||||
|
||||
!!! note "为什么使用csv格式"
|
||||
::: warning 为什么使用csv格式
|
||||
使用 `csv` 格式文件可以方便的使用 Excel 表格打开进行编辑,同时由于 `csv` 文件实际是以都好分隔的文本文件,代码中可以在不依赖三方库的情况下方便快速的解析它,可操作性和可维护性较高。
|
||||
:::
|
||||
|
||||
- 各个应用之间,用例、方法、标签和资源都是相互独立的,编写和维护用例时只需要自己应用下的方法和公共库即可。
|
||||
|
||||
|
@ -120,26 +130,26 @@ Author: mikigo
|
|||
```shell
|
||||
.
|
||||
├── apps
|
||||
│ ├── deepin_album # 应用名 (用下划线连接是 Python 编码规范)
|
||||
│ │ ├── album_assert # 断言库
|
||||
│ │ ├── album_function_tag.csv # 用例标签
|
||||
│ │ ├── asan_cases # 漏洞扫描用例
|
||||
│ │ ├── function_cases # 功能测试用例
|
||||
│ │ ├── res # 测试资源
|
||||
│ │ ├── config # 应用内局部配置模块
|
||||
│ │ └── widget # 方法库
|
||||
│ │ ├── album_widget # 应用自己的方法库
|
||||
│ │ ├── base_widget # 方法基类
|
||||
│ │ └── other_widget # 调用其他应用的方法库
|
||||
│ ├── deepin_camera
|
||||
│ │ ├── function_cases
|
||||
│ │ ...
|
||||
│ └── public_widget # 公共方法库
|
||||
│ ├── deepin_album # 应用名 (用下划线连接是 Python 编码规范)
|
||||
│ │ ├── album_assert # 断言库
|
||||
│ │ ├── album_function_tag.csv # 用例标签
|
||||
│ │ ├── asan_cases # 漏洞扫描用例
|
||||
│ │ ├── function_cases # 功能测试用例
|
||||
│ │ ├── res # 测试资源
|
||||
│ │ ├── config # 应用内局部配置模块
|
||||
│ │ └── widget # 方法库
|
||||
│ │ ├── album_widget # 应用自己的方法库
|
||||
│ │ ├── base_widget # 方法基类
|
||||
│ │ └── other_widget # 调用其他应用的方法库
|
||||
│ ├── deepin_camera
|
||||
│ │ ├── function_cases
|
||||
│ │ ...
|
||||
│ └── public_widget # 公共方法库
|
||||
├── globalconfig # 全局配置模块
|
||||
...
|
||||
```
|
||||
|
||||
- globalconfig 配置模块:
|
||||
- `globalconfig` 配置模块:
|
||||
|
||||
可以根据需要进行相应配置,测试同学可以根据自己的测试计划,在 `globalconfig` 里面进行配置。
|
||||
|
||||
|
@ -153,9 +163,12 @@ Author: mikigo
|
|||
|
||||
- 全量测试:在 `tags` 里面为空即可;
|
||||
|
||||
!!! note ""
|
||||
::: tip
|
||||
|
||||
通过 `tags` 的配置比较灵活,后面标签化管理章节会讲到,支持标签的逻辑组合,可以根据需要进行灵活配置。
|
||||
|
||||
:::
|
||||
|
||||
- 指定某台机器在指定镜像版本上执行用例:在 `IP` 里面配置测试机 `IP`,并在 `URL` 里面填入镜像的下载地址,框架会调用 `PXE` 进行自动装机,装机完之后自动开始执行配置的测试用例。
|
||||
|
||||
应用内局部配置:
|
||||
|
@ -172,7 +185,7 @@ Author: mikigo
|
|||
|
||||
- 应用层:
|
||||
|
||||
`runner` 是测试执行的入口,它会根据配置里面的配置项,进行用例的加载和执行。它提供接口给自动化测试平台,平台上的指令实际上都是通过下发给执行器,然后由执行器来执行相应的测试。
|
||||
`manage.py` 是测试执行的入口,它会根据配置里面的配置项,进行用例的加载和执行。它提供接口给自动化测试平台,平台上的指令实际上都是通过下发给执行器,然后由执行器来执行相应的测试。
|
||||
|
||||
- 自动化测试平台
|
||||
|
||||
|
@ -285,9 +298,12 @@ class DdeDesktopPublicWidget:
|
|||
|
||||
测试平台可能会涉及到的模块有:测试机资源管理模块、用例执行控制模块、结果展示模块、`PXE` 镜像安装模块等。
|
||||
|
||||
??? note "想要的预期"
|
||||
::: tip
|
||||
|
||||
用户(测试、研发同学等)可以配置自己的测试计划,如执行哪个应用、执行用例的范围、在哪台机器上执行、镜像版本及下载地址、应用版本及下载地址、执行时间。
|
||||
|
||||
:::
|
||||
|
||||
5.2、执行入口提供给测试平台的接口包括:用例执行接口、结果返回接口、镜像下载接口、测试机镜像安装接口、应用下载接口、测试机应用安装更新接口等。
|
||||
|
||||
前端平台目前还没有太多详细的方案,本次设计主要集中在后端这部分架构的设计上。
|
||||
|
|
Loading…
Reference in New Issue