Terminology and jargon are part of any field and industry. They enable us to communicate with a common vocabulary which makes it quicker for us to get to the matter at hand.
The nice thing about our industry is that people without computer science degrees, such as myself, can get jobs developing software and websites and web applications. The downside is that we can’t always be sure as to how much everyone knows and whether they understand basic computer science concepts or whether they can use the right terminology.
I just encountered this in AngularJS. They have 2 ways of testing mentioned in their documentation; unit testing and end-to-end/e2e testing. Unit testing is a concept that everyone in the field is aware of. Sometimes the term is incorrectly used to refer to tests that cover multiple units (the correct term for that as far as I know is integration test).
AngularJS uses end to end testing in a strange way. The end to end testing API provided only handles user-level actions such as clicking on a button, inputting some text or navigating to a particular URL. This definition is closer to the definition of the term acceptance testing. Acceptance testing makes sure that the app is acceptable and matches the high-level requirements before it’s delivered to the client. This is what is being done with the e2e API; you’re making sure that the user can interact with the app properly, you’re making sure it’s acceptable.
So basically, AngularJS lets you write proper unit tests and they provide an API for writing acceptance tests.
The levels of software testing, according to Wikipedia, are:
By using the right terminology (acceptance instead of end-to-end/e2e) we can see that Angular makes no mention of the levels in between Unit Testing and Acceptance Testing. But because the correct terms weren’t used, it wasn’t obvious for many months that Angular was missing this layer. Web developers who use Angular also didn’t notice, at least not until the “Full-Spectrum Testing with AngularJS and Karma” blog post was written.
This blog post introduced a new type of testing, midway testing. It’s testing at a level between unit testing and acceptance testing. It’s closest to integration testing in my opinion.
As I read more and more of the Full-Spectrum Testing article, it becomes clear just how desperately we need workshops and tutorials for testing at all levels.
