This issue is intended as a collection point for various operational features, functionality, or capabilities that folks would like to see on the new testing infrastructure. While it is a bit of a 'dumping ground' at the moment, I do intend to go in and clean it up, eventually.

Please feel free to add your own requirements to the list or in the comments below ... but if an item requires any discussion or debate, lets handle that in a separate issue and add the reference link here.

Testbot Wishlist

New patch submissions

When a new patch is submitted to an issue, what would we like to happen?

Code Tests

- PHPUnit tests
- Performance Testing
- Static Analysis tests - analyze cyclomatic complexity etc.
- Code Coverage analysis - show whats tested

Front end/System tests

- Core Simpletests
- Contrib Simpletests
- qunit? (javascript unit tests) - qunit test runner page
- testswarm? (javascript unit tests on ALL browsers)
- Visual regression testing
- Mink/Selenium/Casper/Wraith/Browserstack like tools
- Behat Testing: #2597802: Add the ability to run Behat on DrupalCI

Change Management and Review tools

- Patch application to HEAD
- Detect conflicting patches
- Automatically generate Interdiffs
- Coding Style Review - Coder Module/Codesniffer (support - #1791872: [Policy, no patch] Add special tag to identify issues ready for a high level only review and #1299710: [meta] Automate the coding-standards part of patch review)

Core Commit reactions/background jobs

When a core commit happens, what could happen in the background that can be automated?

- Automatic patch re-rolling
- Patch validity tests (patch still applies?)
- See if 'needs review' still applies, and tag/nw
- Need reroll on RTBC patches
- Retesting of RTBC patches nightly
- Automatically update generated documentation

Automated Project Analysis

How can we leverage the automated q.a. infrastructure to facilitate new module developers?

Excellent background info - http://jthorson.doesdrupal.com/node/28
- PAReview
- Git Repo Health Check
- Git repository health check jobs

Testbot behavioral control

How can we put power in the hands of the developers to test what they need tested?

Selectable Environment (Assign test to specific bot)

- Developers able to create new environments
- Environment specific tests possible.

Configurable control of behavior driven by developers

- Ability to influence the behavior of the testbots from issue queue (.travis.yml/settings.testing.php/etc)
- Selectable environment that the tests run in.
- Configure which tests get run (simpletest/phpunit/performance/qunit etc)
- Configurable Fast-failure option
- Per-file properties: Test/Don't test
- Execute only selected test subset/blacklist tests
- Prioritize specific tests, then full run
- Cancel tests in progress
- Test Dependencies/chaining (test patch after patch x)

Systemic configuration of priorities

- Ability to prioritize Core vs. Contrib
- Ability to prioritize Environments (default first, and others if idle).
- Ability to prioritize by test category
- Ability to prioritize by issue priority
- Run set of tests in parallel
- Ability to 'blacklist' tests system wide
- Batch 'cancel' and batch 'retest'
- Try x times, and then give up and mark the test as bad (?)

Reporting, data, and output

What kinds of data and reports would we like to have available?

Test Metrics

- Timestamp individual tests within a run (test timing metrics)
- Test durations (per test)
- Commit id that patch applied to

Communications

- Notifications for test originator upon test completion (email)
- Estimated Time to begin testing
- Estimated Time to complete testing
- Compressed Summary test results inline in issues
- Enhanced details and reports on qa.drupal.org

Reports

- Real-time view of test in progress (console)
- Historical test results/details
- Code Coverage Reports
- Performance Reports /Current/Historical
- Views: Last x failed, last x environment fails, etc.

Data Formats

- Standardized Response Formats
- Compressed detailed results
- Separate status for 'environment' failure versus 'test' failure
- log test failures, time, patch

Meta Infrastructure

Resource management/monitoring

- Worker heartbeat with full status communications
- dynamic spinup/down of resources as needed
- Separate environment setup from testing phase
- Pre-test Environment checks (sufficient disk, etc)
- View queue
- Reorder queue
- Cancel queue

- Support Multiple Environments

Environment Examples

  • Databases
    • Mysql
      • MyISAM testing
      • InnoDB testing
    • Postgres
    • Sqlite
  • Caching Backends
    • Database
    • APC
  • PHP versions
    • PHP 5.3
    • PHP 5.4
    • PHP 5.5
    • PHP 5.6
  • PHP extensions

Comments

jthorson’s picture

Issue summary: View changes

From another list I had floating around ...

Core simpletest test runs
Contrib simpletest test runs
Extract List of Simpletest Tests
Core PHPUnit test runs
Contrib PHPUnit test runs
Extract List of PHPUnit tests
Timestamp individual tests within a run
A/B Performance testing for patches
Execute only selected test subset
Notifications for test originator
Stop on first fail
Patch conflict detection jobs
Auto-reroll jobs
D7 Code Style Review jobs
Git repository health check jobs
Prioritize tests x,y,z, then full run only if pass
Select/exclude environments
Per-file testing properties on d.o: test/don't test
Test chaining/dependencies
Separate environment setup from testing phase
Cancel tests in progress
Prioritize core vs contrib
Historical test results/details
Ability to blacklist tests
Use 'standard' response formats
Generic automation framework
Estimated time for test start
Estimated time to test completion
Test retry for x times, then mark as bad
Separate status for 'environment' failure vs. 'test' failure
Views: Last x failed, last x environment fails, etc.
Batch 'cancel'
Batch 'retest'
Worker heartbeat with full status communications
Dynamic spinup/down of worker resources
Fast-failure
Compressed detailed results
Assign test to specific bot
Pre-test Environment checks (sufficient disk, etc)
Set worker to prioritize environments
Reorder queue
View queue
Real-time view of test in progress (console)
Environment: Mysql
Environment: Postgres
Environment: Sqlite
Environment: PHP 5.3
Environment: PHP 5.4
Environment: PHP 5.5
able to write settings in settings.php
log test failures, time, patch
commit id
Parallelize testing
PHPUnit fail trigger full run
Prioritize unit tests, simpletest unit tests, simpletest drupal unit tests, then web tests
qunit? (javascript unit tests) - qunit test runner page
testswarm? (javascript unit tests on ALL browsers)
Performance testing - not needing automated
Retesting of RTBC patches nightly
See if 'needs review' still applies, and tag/nw
Set 'low priority' tests so that only tested when idle capacity available
Notify when bot kicks you to needs work.
Need reroll on RTBC patches
notify patch writer on fail (via email)
MyISAM testing
Environment specific tests (added by bot)

ricardoamaro’s picture

this looks fun!

looking at the list briefly i can see that we have:

Patch conflict detection
PHPUnit testing
Git Repo Health Check
Stop on first error
Test Dependencies (test patch after patch x) - because you can supply several in order
Cancel test in progress - just kill the container run (warning there!)
Historical Results
Fast-failure

"Check for available disk space before testing" is a good one to implement

jthorson’s picture

Project: » DrupalCI: Drupal.org Testing Infrastructure
Component: Project Planning and Administration » Code
Mixologic’s picture

Issue summary: View changes

I aggregated @jthorson's first comment and organized the issue summary here. Note that I purposefully did not remove duplicates just as a rough 'if its listed three times, maybe its important' kind of thing.

I just created arbitrary categories that seemed to make sense to make this more digestable, as they fall into separate spheres of functionality.

Mixologic’s picture

Issue summary: View changes

Added automatically generate interdiffs.

jthorson’s picture

Awesome ... thanks!

Mixologic’s picture

Issue summary: View changes

Added "Automatically update generated documentation" - this implies generating documenation using a tool like dOxygen etc.

Mixologic’s picture

Issue summary: View changes

Added Mink/Behat testing concepts to the new patch submissions area.

Mixologic’s picture

Would it be helpful to add links to other issues inline with the wishlist that gives some background and/or evidence of the need for such wishes?

It might help prioritize features. For example, Code style review has a *lot* of support in this meta thread: https://drupal.org/node/1791872

I find links all over d.o. that provide support for various features. At the same time I dont know if that would unnecessarily clutter this issue summary.

So, if not here, where should that be organized?

jthorson’s picture

I'd be fine with adding references here, and turning it into a bit of a META issue for potential testbot features ... I know there are a number of feature request issues in the 'testbot' project that I would like to include here as well, but I didn't want to start moving them between projects and confusing other users. Simply adding a reference, on the other hand, makes a lot of sense.

Mixologic’s picture

Issue summary: View changes

Reformatted, organized further.

Mixologic’s picture

Issue summary: View changes
jthorson’s picture

Issue summary: View changes
stevector’s picture

Issue summary: View changes
Mixologic’s picture

Component: Code » Policy
Category: Task » Plan