Defines the projects, tasks, and KPIs associated with FIO QA
Overview
There are several categories of FIO QA:
...
fio and fio.contracts automated testing
...
fio.test javascript tests
...
Devnet release testing
...
Testnet release testing
...
Mainnet release testing
...
Application testing
...
Includes manual and automated testing of FIO applications:
Dashboard
Registration Site
...
SDK testing
...
Running of SDK unit tests for every release.
...
building and maintaining the FIO Chain.
Table of Contents | ||||
---|---|---|---|---|
|
Core chain and contract development
Bug fixes and minor (non-FIP and non-Project) feature improvements
QA of core chain and contracts
QA for all bugs fixes and minor feature improvements
Devnet, Testnet, and Mainnet release testing
fio and fio.contracts automated testing
fio and fio.contract QA is covered by the fio.test javascript test harness. New automated tests are created for every new action, endpoint and feature added to the protocol. Full regression tests are run for every release.
The current process for developing automated tests generally follows:
FIP/requirements are defined by product team
Product team publishes initial test cases
Test cases are enhanced by development and QA teams
FIO development creates initial tests as a template
FIO QA completes full automated tests
Gaps in testing:
All features, especially Mainnet features, do not have full regression tests
Testing lags development and impacts releases
Limited QA resources to develop automated tests
No time to focus on test harness architecture
QA not integrated into CI pipeline
Devnet release testing
Devnet release testing is currently done by the development team. It involves deployment and upgrade testing of fio and fio.contracts.
Testnet release testing
Testnet release testing currently consists of:
Running an automated smoketest against Testnet before and after deployment
Some manual testing of Testnet using Cryptonym
Some manual testing of features by development and product teams
Mainnet release testing
Mainnet release testing currently consists of:
Some manual testing of Mainnet using Cryptonym
Some manual testing of features by development and product teams
Release management of core chain and contract updates
Release Management for all FIPs
Develop and maintain integration pipeline
Define and manage the software development lifecycle
CI automation for chain and contract development and testing
Manage Devnet deployment and fork testing
...
Application testing
...
Work with BPs to ensure timely Testnet and Mainnet releases
Maintain/upgrade internal FIO nodes (e.g., registration site nodes) to latest release
Ensuring the security of the FIO chain
Security playbook
Maintaining compatibility with and contributing to the EOSIO ecosystem
Work with EOSIO community to ensure FIO compatibility with evolution of EOSIO
Contribute to EOSIO code and tools
KPIs
Task | KPIs |
---|---|
Chain uptime | Downtime due to faulty code or bugs (does not include Block Producer mishaps).
For impacts to up time resulting from reduced QA resources see: https://fioprotocol.atlassian.net/wiki/spaces/FD/pages/475005006/QA+Strategy |
Code delivery |
|
QA |
|
Release management |
|
Documentation and knowledge sharing |
|
FIO Chain and contract security |
|
EOSIO compatibility and community support | |
Developer outreach and community building |