- Demystify what are Unit Tests
- Understand the importance of the 3 test parts
In small groups, categorize each sentence about Unit tests in :
- Myth
- Truth
- It makes changes more difficult to make
- Using them, I don't have a piece of code that I'm afraid to touch
- Unit tests are only written by testers
- My code is so simple, so I do not need to write a single test on it
- Unit tested code is of higher quality than not tested code
- You only need unit testing when there are many developers
- It reduces the cost of development
- It takes too much time to write
Correction
- It makes changes more difficult to make
- Makes changes easier to make
- Let developers refactor without fear (again, again, and again)
- Unit tests are only written by testers
- Usually, they don’t…
- Developers write unit tests
- Ideally run them every time they make any change on the system
- My code is so simple, I do not need to write a single test on it
- Simple code requires simple tests, so there are no excuses.
- You only need unit testing when there are many developers
- Unit testing can help a one-person team just as much as a 50-person team
- Even more risky to let a single person hold all the cards
- It takes too much time to write
- It takes a little while to get used to, but overall will save you time and cut down on wasted time
- Regression testing will keep things moving forward without having to worry too much
How do you test your development if you do not write Unit tests?
Our responsibility is to reduce the cost of quality
- Using them, I don't have a piece of code that I'm afraid to touch
- When you refactor / add new features it acts as a safety net and increase your confidence
- Unit tested code is of higher quality than not tested one
- It identifies every defect that may have come up before code is sent further for integration testing
- Writing tests makes you think harder about the problem
- It exposes the edge cases and makes you write better code
- It reduces the cost of development
- Since the bugs are found early, unit testing helps reduce the cost of bug fixes
- Bugs detected earlier are easier to fix
A unit test is an automated test that :
- Verifies a small piece of code (also known as a unit)
- Does it quickly
- And does it in an isolated manner.
- Integrated into the development cycle
- Ideally : execute them on every change -Targets the most important parts of your code base
Domain model
– contains the business logic (gives the best ROI)
- Provides maximum value with minimum maintenance costs
- Recognizing a valuable test (and, by extension, a test of low value)
- Writing a valuable test
-
Name your tests class has a container for a cohesive set of tests
-
Don’t follow a rigid naming policy
- You simply can’t fit a high-level description of a complex behavior into the narrow box of such a policy
- Allow freedom of expression
-
Name the test as if you were describing the scenario to a non-programmer who is familiar with the problem domain
- A domain expert or a business analyst should understand it
-
Use sentences
- Express a true business specification
- Doing so helps improve readability, especially in long names
-
Test case structuration using
Arrange - Act - Assert
:- helps keep tests readable
- exposes the tested behavior
Unit Testing is not a secondary activity, it’s the primary one of a good developer !!!
Based on previous learning, let's add missing tests on the Submarine
.
Follow instructions here
In your own words, explain why using the Arrange - Act - Assert pattern improves test maintainability.
Write a sentence or two on a note and share it with the group.