Testing Methodologies

Mudit Arora
4 min readNov 22, 2018

Testing methodologies are the strategies and approaches used to test a particular product to ensure it is fit for purpose. Testing methodologies usually involve testing that the product works in accordance with its specification, has no undesirable side effects when used in ways outside of its design parameters.

What are Software Testing Methodologies?

Software Testing Methodology are the strategies and testing types to certify that the Application Under Test works according to the user’s expectations. These are broadly of two types, functional and non-functional testing.

Importance of Testing Methodologies

As software applications get ever more complex and intertwined and with the large number of different platforms and devices that need to get tested, it is more important than ever to have a robust testing methodology for making sure that software products/systems being developed have been fully tested to make sure they meet their specified requirements and can successfully operate in all the anticipated environments with the required usability and security.

6 Different Types of Software Testing Methodologies

Testing is one of the integral part. One programmer must know about these because it is necessary to do testing before publishing, this defines us a good coder. Means he/she is aware what they are doing.

Standard development methodologies describe a set of general testing mechanisms which must be incorporated in the product development life- cycle. These mechanisms start from testing very small of code piece by piece to testing the whole application functionality in the end.

1) Unit Test

This is the most basic testing mechanism at the developer level. This covers very narrow and well defined scope. Unit tests focus on very small unit of functionality. They cover the interaction of the code with memory only and do not cover any interaction with network, database or file systems. These dependencies are hard coded into the code while testing.
They provide a simple way to check smallest units of code and prove that units can work perfectly in isolation.

2) Integration Tests

Integration Testing is the phase in software testing in which individual software modules are combined and tested in a group. They provide a mechanism to test the inter operation of smaller units. They reveal out the issues with network modules or databases and more importantly in the connections between small units of code. Often when the units are wired together there are issues.

3) Functional Tests

After the integration tests are performed, higher level tests are used. Functional tests check for the correctness of the output with respect to the input defined in the specification.

4) Smoke Tests

Smoke Tests analogy comes from the electronics where a mistake means the circuit board giving out smoke. After functional tests are done a simple test is done from the start typically after a fresh installation and newer input values.

5) Regression Tests

Whenever complex bugs are patched in a system, typically which affect the core areas of the system, regression tests are used to re test all the modules of the system.

6) Acceptance Tests

These form the final level of test plan. Every feature is checked from the user’s perspective by the testing team and the feature is marked accepted or rejected. These tests test the application from end user’s perspective like detecting crashes after going through a certain flow. The results of these tests are very subjective in nature and it takes a while to figure out the exact issue in the code.

Some common libraries used by angular to implement different types of tests

1. Jasmine

Jasmine is the framework for writing Angular tests. Basically, it’s a testing framework that uses the behavior-driven notation. Writing a test in Jasmine is quite simple.

2. Karma

Karma is a tool for executing source code against test code inside a browser environment. It supports the running of tests in each browser it’s configured for. Results are displayed on both the command line and on the browser for the developer to inspect which tests have passed or failed. Karma also watches the files and can trigger a test rerun whenever a file changes.

3. Protractor

source: https://www.logigear.com/blog/uncategorized/15-best-practices-for-building-an-awesome-protractor-framework/

Protractor is an end-to-end test framework for Angular. It runs your tests inside a real browser, interacting with it as real person would. Unlike unit tests, where we test individual functions, here we test the entire logic. Protractor is able to fill in forms, click buttons and confirm that the expected data and styling is displayed in the HTML document.

4. Sinon

Sinon.js is a really helpful library when you want to unit test your code. It supports spies, stubs, and mocks. The library has cross browser support and also can run on the server using Node.js.

References used:

https://www.inflectra.com/ideas/topic/testing-methodologies.aspx

labs.com/6-different-types-software-testing-methodologies/

https://blog.idrsolutions.com/2015/02/8-useful-java-testing-tools-frameworks-programmers-developers-coders/

https://javarevisited.blogspot.com/2018/01/10-unit-testing-and-integration-tools-for-java-programmers.html

This task was completed as a part of Google Code-in 2018.

Google Code-in is a contest to introduce pre-university students (ages 13–17) to open source software development. Since 2010, over 3200 students from 99 countries have completed work in the contest.

View Contest: https://codein.withgoogle.com/

AOSSIE — Australian Open Source Software Innovation and Education @ Google Code-In : https://codein.withgoogle.com/organizations/aossie-australian-open-source-software-innovation-and-education/

--

--