Good old Units
Unit testing is getting bigger with software testing by the day. More followers are willing to have some Units under Test of their own? Why is everybody losing their minds here? Because unit tests prove to work and they are doing quite better than the things elder procedures of testing were used to. Unit Testing is great with all kinds of software development whether it is app development or desktop or whatever other piece of combined code with various purposes.
Despite all the fame and glory of Unit Testing there actually are companies that are not too great with them as well as with automation hence they are swell in different fields. Yet if you’ve actually started you are to be the best at what you do to be compatible in the modern IT market, right?
The goal of the following text is to assist you with benefit-to-tome ratio improvements of Unit Testing. So where should I begin?
- You suck at Unit Testing! Don’t worry, I’ve just decided to start with the very beginning. And, to tell you the truth everybody sucks at it at first no matter how hardcore you actually are with the rest of the testing stuff. When you are just beginning with test writing it is such a pain. The most frustrating activity of a life-time as for me. It will take, like, 99% of your time which is way longer than you’ve expected. Many developers are quitting Unit tests just because of this solo reason which is unacceptable as for me. Trust me you will be getting better thus the extra time you are spending is nothing but investments.
- Pretty much all of your production code is not testable. That is a fairly rational happening. If there were like zero previous tests there was no particular reason to design test-appropriate code. That is one of the major reasons why your cases are hard to write and prove to have less value (they are missing bugs in other words). Yet there are things you can do to make life better and easier here. You are to begin with new code. That’s how you will get a hang of it. A new project or a tiny side project are excellent playgrounds. When you feel ready go for the bigger stuff. There are tricks that may help you here as well.
- Write some of high-level tests. The ones that will exercise pretty much every part of the system and will be interacting with the app on its highest interface levels.
- Refractor a component of your choice thus making it more decoupled and testable.
- Do some high-level tests again and run them continually. That is the way you are making sure nothing of high value is broken.
- Test the component you’ve pulled out while step 2 took place.
- Repeat from step 2 until victory.
- The more tests you will write the more testable will your app become. If it’s easier to test then additional tests are easier to write. That is the way you wish to go through if you want be great with Unit Testing and to gain from all its advantages.
- The test code is still not production code. Thus it requires special treatment. Testing code has to be easy to read and independent for the whole thing to work. You are to use as much literals in the test code as you can while there is no reason for them to overfill your production code. How does a great testing code look?
- It is precise. Each and every test has to be focused on testing but one thing. In a perfect world when a test is failing you will be able to know which exact part went wrong. If everything is as precise as it gets any change you make will not involve you with changing lots and more of other things.
- It is quite independent. No test is allowed to even have potential of affecting other tests. If you are able of running your tests in any order you desire and the results are the same then that is a win. Watch out for both setup and teardown methods as they are evil for us now. 100% evil with eaten kittens and stuff.
- It is readable. Every single test intent has to be obvious after the first glimpse at it.
- Forget it all with integration tests. Well most of it. Integration tests are to be nice and swell with each other.
- Writing one test by another is the key to success. One test for every piece of new functionality.
There are more than plenty materials awaiting for you all around the web. Thus keep educating yourself. New knowledge is new experience, yet you are not to be dogmatic. Testes are creative by nature, thus use that info to make your own roads rather than just sticking to somebody’s trails.
Image by Hasbro Studios and DHX Media Vancouver