diff options
author | Arun Isaac | 2022-07-19 15:01:22 +0530 |
---|---|---|
committer | Arun Isaac | 2022-07-19 15:01:22 +0530 |
commit | 44d951234e82dc27541035d0050cc6c04719ab14 (patch) | |
tree | ae3bcd9ff50ea3eeaf128d9881aad8323731ddd1 /topics | |
parent | 1474736c17c6905658cf3746ae35265de1a5c2d2 (diff) | |
download | gn-gemtext-44d951234e82dc27541035d0050cc6c04719ab14.tar.gz |
Rescue testing issue from topics.
Diffstat (limited to 'topics')
-rw-r--r-- | topics/testing/automated-testing.gmi | 140 |
1 files changed, 0 insertions, 140 deletions
diff --git a/topics/testing/automated-testing.gmi b/topics/testing/automated-testing.gmi deleted file mode 100644 index a79245e..0000000 --- a/topics/testing/automated-testing.gmi +++ /dev/null @@ -1,140 +0,0 @@ -# Automated Testing - -## Tags - -* assigned: fredm, bonfacem, alex -* status: in progress -* priority: medium -* type: enhancement -* keywords: testing, CI, CD - -## Introduction - -As part of the -=> ../systems/ci-cd.gmi CI/CD effort -there is need for automated tests to ensure that the system is working as expected. - -This document is meant to track the implementation of the automated tests and possibly the related infrastructure for running the tests. - -## Genenetwork 3 - -### Unit Tests - -There is a collection of unit tests in the *tests/unit* in the -=> https://github.com/genenetwork/genenetwork3 Genenetwork 3 repository - -### Integration - -There is (as of 2022-Feb-10) an -=> https://github.com/genenetwork/genenetwork3/tree/main/tests/integration integration tests directory -in the Genenetwork 3 repository. - -The tests there, however, are technically unit tests. Each test seems to test a single logical unit of the system e.g. correlations, gemma, etc. - -There is no test that seems to check for interactions among the logical units/modules of the system e.g. - -* authorisation <==> file-upload <==> correlations -* partial-correlations <==> trait-editting <==> gemma analysis - -etc. - -### API Tests - -There is need for tests to ensure that all expected endpoints are up and running. - -Maybe even check that the data is correct. - -### Performance and Responsiveness - -There is a need to ensure that the system does not take forever to compute stuff. - -There is a single performance tests module in -=> https://github.com/genenetwork/genenetwork3/tree/main/tests/performance the performance tests directory -for Genenetwork 3 but it is run manually, and mostly tests a very specific query that might or might not have been used in the code. - -The performance tests in GN3 should probably be focussed on checking the following (among others): - -* Each API endpoint responds within a specified amount of time -* Select computation-heavy functions respond within a specified amount of time for given data -* Database-querying functions used in the system respond within specified amount of time - -etc. - -This is relevant since GN3 is behind Nginx which defines a timeout. - -### Regression Tests - -Checks that previously working features are not broken. These can be added as we go along - -## Genenetwork 2 - -### Unit Tests - -Present under the -=> https://github.com/genenetwork/genenetwork2/tree/testing/wqflask/tests/unit unit tests directory -in the GN2 repository. - -### Integration - -Genenetwork 2 has a "Mechanical Rob" testing system that is under construction whose purpose (as far as I - fredm - can tell) is to "walk" some common paths that have multiple logical units working together, thus performing some form of integration testing. - -The only issue I (fredm) find in that as it is currently, it will not be able to test javascript interactions that are crucial to some operations in certain flows. - -### Performance and Responsiveness - -Since GN2 is not meant to handle computations itself, the bigger concern here is responsiveness. - -There might need to be checks for responsiveness built in. - -### Regression Tests - -Checks that previously working features are not broken. These can be added as we go along - -### Notes from Email Correspondence - -Selenium (and other browser-automation tools) were said to be too complicated, and are to be avoided as much as possible. It is better to use headless Firefox/Chromium and fetch pages with Mechanical Rob. - -Selenium had been previously introduced in GN2 and then swiftly removed. - - -=> https://github.com/genenetwork/gn-docs/blob/master/scripts/screenshot.rb sample script to create screen shots - - -=> https://github.com/genenetwork/gn-deploy-servers/blob/master/scripts/rabbit/monitor_websites.sh tests currently run to monitor GN2 and end points - -We should cover the GN2/GN3 ones. - - -For GN2 we should write scripts that test: - -* [ ] main menu selector -* [ ] search -* [ ] global search -* [ ] search with wild cards -* [ ] select items and add to shopping basket/collections -* [ ] mapping page -* [ ] run R/qtl mapping -* [ ] run GEMMA mapping -* [ ] run correlations -* [ ] Run the functions on the shopping basket/collections, such as CTL, network graph - - -> Please don't emulate hitting browser buttons (selenium style). Simply -> find URL paths that do the job. You may have to set cookies. -> -> Mechanical Rob can do that. -> -> If using the browser interface is too hard, then create 'back-end' -> tests that cover the real functionality. I am not too concerned about -> the browser display - i.e., real Rob catches that quickly enough. I am -> *really* worried about regressions where search etc. starts giving -> different results. -> -> See what I mean? -> -> Pj. - - -## Testing interface - -Tests in different categories should be grouped into different command-line endpoints. For example, unit tests could be run by "python3 setup.py check", integration tests could be run by "python3 setup.py integration-check", performance tests could be run by "python3 setup.py performance-check", and so on. This way, the CI will have to be configured only once, and then committers will be able to add new tests without requesting for a CI reconfiguration each time. We won't have to wait on others to respond. Less coordination will be required leading to smoother work for everyone. |