Types of tests

Photo by Pixabay on Pexels.com

As we have seen in the last blog there are various aspects we want to test in software or product. In order to achieve that there are many testing, practices are followed and they can be grouped under,

Functional Testing

Functional testing is a process by which the functional aspects of a software or software component is tested. Some of the functional requirement examples are,

  1. Core functionalities
  2. Navigations
  3. Accessibility
  4. Error conditions

Non-Functional Testing

Non-functional testing is a process by which the non-functional requirements are tested. Some of the non-functional requirement examples are,

  1. Application/Service response time
  2. Reliability
  3. Environment
  4. Capacity
  5. Compatiability

Both functional and non-functional tests are performed at various stages of the product development life-cycle. Let’s look at some of the widely used practices,

Unit Testing

Individual components/units are tested. This is usually achieved by mocking the other components and the units of the application.

Automatable: YES

Commonly used Tools: JUnit, NUnit, Unittest, Jest

Contract Testing

This is something recently getting popular among micro-services architecture. This is a type of test used to validate the contract between the provider and consumer services.

Automatable: YES

Commonly used Tools: Pact.io

Integration Testing

These tests are used to confirm whether the components work together in an integrated environment. It is usually the first environment where individually developed components come together.

Automatable: YES

Commonly used Tools: JUnit, NUnit, TestNG

End-to-End Testing

Having put-together all the components in the application together and performed the tests as it was going to be used by the customer. The focus of this testing is more on the behaviour of the software/application.

Automatable: YES

Commonly used Tools: Cucumber, JBehave, Specflow

Performance Testing

It is a practice to evaluate the responsiveness of the system under a particular load. This is done at the component level as well as at the system level.

Automatable: YES

Commonly used Tools: JMeter, Gatling

Logevity Testing

This is also referred to as Soak testing where we are evaluating the endurance of the software/application with a sustainable load for a longer period of time. The time varies between 2 days to 30 days.

Automatable: YES

Commonly used Tools: JMeter, Gatling

Security Testing

Security testing is used to identify the security flaws within the system and components. The flaws can be in one of the following areas,

  1. Confidentiality
  2. Reliability
  3. Authentication
  4. Authorisation
  5. Availability

Automatable: YES

Commonly used Tools: ZAP, Wapiti, SQLMap, Chaos Monkey

Exploratory Testing

Exploratory testing is an approach that uncovers the defects that are not easily covered in the scope of the other tests. The individual who performs the test relies on his own judgement on the steps followed. Even though it sounds like some random followed steps test, actually it is not. The focus will be on the component or area of the software which is vulnerable or more error-prone historically. Another important aspect of exploratory testing is it should be time-boxed.

Automatable: Start with manual execution and later added to automation package

Commonly used Tools: Depends on the automation package

In this article, I touched upon the commonly used techniques along with tools used for automation. I strongly believe that most of the testing can be automated with the right approach and tools. The approach is always overlooked where many teams focused on the tools. Even if you select the best tool in the market and if you don’t take the right approach then all your effort will be in vain.

One response to “Types of tests”

  1. […] As you can see more granular groups in the updated pyramid. To know more about these groups refer to this blog […]

    Like

Leave a comment