# Titan automation testing
Jimmy Ou
2020/09/02
---
## Agenda
1. Goal
2. Architecture
3. Current state
4. Python tools/libraries
---
# Goal
---
## Goal
This project initially is for TitanTesting. Hope that it can be all I/O products testing framework.
---
# Architecture
---
## Glossary
* Scenario -- Group of testcases run in same environment setting
---
## Structure
```
├── device --> MOXA I/O device implemtation
│ ├── iin
│ ├── iothinx4533
├── dnp3 --> common dnp3 definitions
├── doc
├── modbus --> common modbus definitions
├── tests --> testcases
│ └── scenario1 --> scenario
│ ├── ai
│ ├── ao
│ ├── di
│ ├── do
```
---
## Scenario
```
├── ai
│ ├── case.py
│ └── test_ai.py
├── ao
│ ├── case.py
│ └── test_ao.py
├── conftest.py
├── di
│ ├── case.py
│ └── test_di.py
├── do
│ ├── case.py
│ └── test_do.py
├── env.py
└── pytest.ini
```
---
## Inspired from **Infrastructure as Code**
Let's see the code
---
# Current state
---
## Current state
| | feature | modbus | DNP3 |
|----|---------------|--------| ---- |
| DI | value | o | o |
| | wirebreak | o | x |
| | powerless | o | x |
| | class event | * | o |
| DO | value | o | o |
| | powerless | o | x |
| | short circuit | o | x |
---
## Current state (Cont.)
| | feature | modbus | DNP3 |
|----|---------------|--------| ---- |
| AI | value | o | o |
| AO | value | o | o |
| | wirebreak | o | x |
| | short circuit | o | x |
---
# Python tools/libraries
---
## Tools/Libraries I used in this project.
1. pytest (testing tools)
2. Poetry (dependency manager and packager) + pyenv (virtual environment)
---
## 1. pytest
I think you already know what it is and how to use it.
---
## 2. Poetry - Why
Easy to use, and management.
---
## 2. Poetry
* Dependency manager
Just like npm, go mod, cargo, ...etc.
* pyproject.toml
* define project, dependencies, and environment.
* poetry.lock
* describe current dependency versions.
---
## 2. Poetry
* Packager
[Reference](https://python-poetry.org/docs/basic-usage/)
{"metaMigratedAt":"2023-06-15T12:10:53.881Z","metaMigratedFrom":"Content","title":"Titan automation testing","breaks":true,"contributors":"[{\"id\":\"c25632bd-238b-4741-87a0-8b737904c081\",\"add\":3006,\"del\":686}]"}