This is an implementation of the Pascal Triangle to facilitate a discussion about code correctness (and ways to express it).
- you need to install git (e.g.
brew install git
) - clone this repo
- run
sbt run
- run
sbt test
The main intention is to discuss how you can show that code it doing what it is suppose to do.
Means, you need to have the means to express an expectation (or requirements) and then you need to have the means to prove that your expectations/requirements have been met.
I started to think about this, when I saw Bill Venners talk on Programming by Contract and while I worked through THE Haskell book (and was exposed to QuickCheck and Jesitron's talk on property-based testing).
In this context I want to think and talk about ...
- conventional testing approaches
- TDD - Test Driven Design (BDD, FDD, ...)
- Unit-, Integration-, System-/End-to-End-, Acceptance-Testing
- Non-functional testing (Load and Performance, Availability and Breaking, ...)
- programming-by-contract
- property-based-testing
- conventional - ScalaTest
- programming-by-contract - Scala.Predef (require/ensuring)
- property-based-testing - ScalaCheck
- non-functional testing - Gatling