A Process for Testing

The current process

Where do project requirements exist?

  • Trello cards
  • Google docs
  • Design mockups
  • People's brains

How do we make sure it works?

  • Code reviews
  • Demo days
  • Matt

Business Requirements

Business requirements can be difficult to track down

( GO TO TRELLO )

Business Requirements

What is complete?

( GO TO TRELLO / GITHUB)

Details can get lost

Business Requirements

Manual testing

Manual testing is very tedious and time consuming

  • Not easily reproducible
  • Human error (e.g. – typos)
  • Regression testing
  • "Is this bug new?"

Manual testing

Okay when used sparingly...

It's easier to debug code at a lower level than at a higher level of the testing pyramid.

Usually, because it affects less code overall.

Manual testing

What it usually turns out to be 

Writing unit tests is difficult if you don't know how to.

It can take you longer to write a test than to actually write the code.
 

Acceptance Testing

"Demo Days" are ran at the end of the sprint

  • Ran at the end of a sprint
  • Not always on a staging environment

So, how can we improve the process?

Acceptance tests

Integration tests

Unit tests

Define tests
(work inwards)

Pass the tests
(work outwards)

A model for having requirements drive development

Example flow

The user should be a view to log in

There should be a log in endpoint that takes user credentials

Given the correct credentials, the user should log in

Acceptance tests

(Cucumber tests)

  • Described in behavior driven steps
  • Usually, in the form of user stories
Feature: Refund item

  Scenario: Jeff returns a faulty microwave
    Given Jeff has bought a microwave for $100
    And he has a receipt
    When he returns the microwave
    Then Jeff should be refunded $100

Create seed data

With requirements and user stories defined, it's important for data to exist.

 

Seed data and test data should be clearly separated from each other.
 

JSON

Database seeds

Frontend mock data

Craft / Sketch / InVision

deck

By Tony Gaskell

deck

  • 1,500