Skip to main content

Test Driven Development



What is TDD?

If somebody asks me to explain TDD in few words, I say TDD is a development of tests before a feature implementation. You can argue that it’s hard to test things which are not existing yet. And Kent Beck will probably give you a slap for this.

So how is it possible? It can be described by following steps:

    1. You read and understand requirements for a particular feature.
    2. You develop a set of tests which check the feature. All of the tests are red, due to absence of the feature implementation.
    3. You develop the feature until all tests become green.
    4. Refactor the code.


TDD requires a different way of thinking, so in order to start TDD you need to forget the way you developed code before. This process is very hard. And it is even harder if you don’t know how to write unit tests. But it’s worth it.


Developing with TDD has valuable advantages:

    1. You have a better understanding of a feature you implement.
    2. You have robust indicators of feature completeness.
    3. Code is covered with tests and has less chance to be corrupted by fixes or new features.


The cost of these advantages is pretty high – inconvenience related to switching to a new development manner and time which you spend for developing each new feature. It’s a price of quality.
So that’s how TDD works – write red unit tests, start implementing a feature, make the tests green, and refactor the code.

Place of Unit Tests in TDD

Since unit tests are the smallest elements in the test automation pyramid, TDD is based on them. With the help of unit tests we can check the business logic of any class. Writing unit tests is easy if you know how to do this. So what do you test with unit tests, and how do you do it?  I’ll try to illustrate answers in a concise form.

A unit test should be as small as possible. Don’t think about this as one test for one method. That is possible, but as a rule one unit test implies invocation of several methods. This is called testing of behavior.
I have created two repositories based on unit testing with Mockito and TestNG / JUnit in GitHub. Refer them if you want to know how testing works.

~ Chathumina Vimukthi

Comments

Popular posts from this blog

Gitlab SSO implementation using Keycloak

  Prerequisites  Keycloak server should be up and running  By default Keycloak will start on http://localhost:8180 To install and configure Keycloak visit www.keycloak.org/docs/latest/getting_started/index.html. Gitlab must be installed locally By default Gitlab starts on http://localhost:3000 To install and configure Gitlab visit https://docs.gitlab.com/omnibus/manual_install.html Environment Gitlab Installed package - gitlab-ce_11.1.4-ce.0_amd64.deb (Omnibus package) Keycloak version - Version 4.2.1.Finalhttps://github.com/ChathuminaVimukthi/Gitlab-SSO-implementation-using-Keycloak SSO Configuration GitLab can be configured to act as a SAML 2.0 Service Provider (SP). This allows GitLab to consume assertions from a SAML 2.0 Identity Provider (IdP) to authenticate users. For this SSO implementation, Gitlab omnibus package is used. But the source package can be used as well. The configuration for the source packge is available on https:/...

Binary vs. Source Packages

Regardless of the  package manager  you’re using, you have two ways of installing programs on Linux. You either use a pre-built package, or compile it yourself. These days, the former usually wins out by default. There are, however, times when you should consider the alternative. What Are Binary Packages? Installing programs on Linux is usually quite different to installing on Windows. Rather than get the installers off a vendor’s website, the files are retrieved from a repository of programs, usually  tailored  for your operating system. Files for separate programs are stored in an  archive format . This bundles everything into a single file for easy access later. For example, Debian uses the DEB format to store their programs. These bundles are called  binary packages . Installing requires a special program to extract these files and put them onto your computer. That is to say, your package manager (e.g. APT, Yum, and so on). It also doe...

Python vs AI

WHAT IS AI? From SIRI to self-driving cars, artificial intelligence (AI) is progressing rapidly. While science fiction often portrays AI as robots with human-like characteristics, AI can encompass anything from Google’s search algorithms to IBM’s Watson to autonomous weapons. WHY PYTHON FOR AI? Artificial intelligence today is properly known as narrow AI (or weak AI), in that it is designed to perform a narrow task (e.g. only facial recognition or only internet searches or only driving a car). However, the long-term goal of many researchers is to create general AI (AGI or strong AI). While narrow AI may outperform humans at whatever its specific task is, like playing chess or solving equations, AGI would outperform humans at nearly every cognitive task. For many years, we used Lisp, because it handled lists and trees really well, had garbage collection, and didn’t require type declarations. ...