### General testing tips

Define a "testing" conditional symbol at compile time: nim --define:testing main.nim

``` Nim
when defined(testing):
  # testing-related code
else:
  # production code
```

### Unit testing

Use http://nim-lang.org/unittest.html[unittest]

Write your unit test first. Write all of them first! They should fail 100%. Then write your codes. If your codes are correct then when you run your unit tests again they should all pass 100%. If your unit tests do not pass 100% but only pass like 25% then you have error in your codes! Fix your codes and run your unit tests again. Keep fixing codes until the unit tests are 100%. You can remember it by the thinking of : RED :red_circle:, REFACTOR :factory:, GREEN :green_heart:! Go for the green!

### Functional and integration testing

TODO

### Code coverage

Try to test every path of execution in your softwares. That is the key to maximizing your code coverages.

TODO
