
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,
- Core functionalities
- Navigations
- Accessibility
- 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,
- Application/Service response time
- Reliability
- Environment
- Capacity
- 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,
- Confidentiality
- Reliability
- Authentication
- Authorisation
- 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.
Leave a comment