Testing at Khan

There are several distinct types of testing Khan does, all of them important.

Unit tests and functional tests

Khan has a goal that all code has associated tests with it. We use unit tests to test our code, and also when appropriate higher level tests (such as functional tests, end-to-end tests, etc).

User tests

When changing the Khan site, we want to have evidence that the change will achieve the goal we want. For this purpose, we use A/B testing.

Monitoring

Monitoring can be seen as a type of "reactive" testing. We have a few monitoring tools we use:

  1. GTMetrix - login as ben@
    • Track performance metrics over time, e.g., YSlow, Page Speed
  2. Errorception - login as desmond@
    • A service that tracks client-side errors