Welcome to this review of the Pluralsight course Automated ASP.NET MVC Testing: End to End by Jason Roberts.
With over 15 years industry experience, Jason is a Microsoft .NET MVP who has has written multiple books including Clean C#, and C# Tips. He is also an open source contributor and the creator of FeatureToggle.
Also in this series:
Part 1 – Automated ASP.NET MVC Testing
Part 4 – Testing View Rendering
Part 5 – Automated Functional UI Testing
Part 6 – Running Tests on TeamCity Continuous Integration Server
Automated ASP.NET MVC Testing: End to End
Jason explains the reasons why we should always aim for high quality:
- Happier end users
- Happier development team
- Happier business owners
Why Automated Testing?
Jason compares manual human test scripts against automated tests.
Automated Tests are less error prone, are faster to execute, and are virtually free to run. These tests also live alongside the source code.
Automated Tests Are Part of the Quality Story
Other important pieces of the Quality story are:
- Code reviews
- Pair programming
- Good management
- Motivated development team
- Well understood requirements
- Good configuration management
- Don’t replace all manual human testing
The Automated Testing Pyramid
At the top of the pyramid we have fewer tests, which take longer to execute and are more brittle and a broad reach.
At the bottom of the pyramid we have more tests, which are fast to execute, less brittle and a narrow reach.
Jason explains we can achieve this with three separate categories of automated tests:
- UI – automating the user interface
- Integration – multiple less-related classes
- Unit – tests a single class, or a few closely related classes
What is a Unit Test?
- low level and highly focused
- isolated from the rest of the system
- fast to execute
We see this great quote from Martin Fowler:
…it’s a situational thing – the team decides what makes sense to be a unit for the purposes of their understanding of the system and its testing.
Unit Testing Isolation Styles
We have the classical approach, and the mockist approach, and Jason explains the differences between the two.
In the classical style we only use fake collaborators when it becomes difficult to use real collaborators. The mockist style uses fake collaborators by default.
There is a famous article from Martin Fowler called Mocks Aren’t Stubs which explains these differences in full.
Naming Convention: SUT
SUT is an acronym which stands for System Under Test. In this course, it is used to represent the class that is currently being tested.
After this introductory module, there are a further six modules, and Jason gives a brief overview of each of them here.
Demo ASP.NET MVC Application Overview
Jason shows a BankingSite application in Visual Studio. We see the main directories of interest:
He runs it up and we see that it is a Bootstrap application that initially looks a lot like the default sample application.
There’s a page for entering your details for applying for a loan. When we click the Apply button we get an accepted or declined page, and we get a reference number.
There’s also a search facility where we can enter our reference number.