Evolution of Software Testing & Empirical Study on Software Test Effort Estimation

As software programming has developed over the years, testing, a crucial component of software development, has also undergone a number of modifications. The beginning of it all was the programming and debugging phases, when identifying problems during debugging was seen as testing. Testing was given a distinct identity and handled as a distinct activity from the debugging process in 1957.

Testing was viewed until the late 1970s as a process to make sure the programme met the requirements. After then, in addition to making sure the software was running properly, it was expanded to detect the faults. The testing process was also thought of as a way to gauge quality in the 1980s. As a result, it was given more significance and was handled as a process that was part of the software development life cycle and was explicitly defined and monitored. The testing procedure established its own life cycle by the middle of the 1990s.

Read Also: Difference Between Software Tester VS Developer

Better understanding of software cost estimate is required to improve the realism of software development project bids and budgets. Instead of generic software development, we wanted to see empirically supported methods for estimating software effort costs, but the research turned up only standard COCOMO models, function points, expert judgments, and a few formal models that had already been established, indicating their maturity in both academia and industry.

Automation tester job

The research is devoted to a single, unified vision for empirically based software effort cost estimation in testing, which is not addressed by the articles, publications, research, and studies. The documents a huge set of publications, innovations, and advancements in evidence-based assessment of software cost effort in verification, validation, and testing are systematically analysed through study reviews, which are crucial for their systematic analysis. Evidence-based software engineering (EBSE) is a branch of science that collects data from real-world industrial settings in order to determine the likelihood of study outcomes. Despite not always reflecting the actual practise environment, random controlled experiments are also evidence-based.

Read Also: Top 10 Websites to Learn Software Testing in 2023

The Evolution of Software Testing

In early days of software development, software testing was considered only a debugging process for removing errors after the development of software.

We can divide the evolution of software testing into the following phases;

  • Debugging oriented phase
  • Demonstration oriented phase
  • Destruction oriented phase
  • Evaluation oriented phase
  • Prevention oriented phase
  • Process oriented phase

Debugging oriented phase:- 

This stage represents the initial testing phase. The fundamentals weren’t recognised back then. Programmers wrote programmes and then tested them until they were certain that all flaws were fixed. Checkout, a word for testing that concentrated on getting the system to function, was used.

Demonstration oriented phase:-

In this stage, debugging kept going. It is understood in 1957 that the goal of checkout is not only to execute the software but also to show that it complies with the stated criteria. As a result, the range of the programme check-up expanded from programme runs to programme accuracy.

Destruction oriented phase:-

Here, the definition of testing was altered to “testing is to detect more and more errors” rather than “testing is to prove the absence of errors.” In this stage, the value of early testing was also recognised.

Evaluation oriented phase:-

In this stage, emphasis is placed on software product quality so that it can be assessed at every level of development.
When compared to issues discovered during the implementation or post-implementation phases, it was less expensive to troubleshoot problems that were discovered early in the development process.

Prevention oriented phase:-

The evaluation model stressed on concept of bug prevention as compared to earlier concept of bug-detection.
With the idea of early detection of bugs in earlier phases, we can prevent the bugs in implementation.

Process oriented phase:-

In this stage of the software development life cycle, testing was developed as a full procedure rather than a single stage (executed after coding)
The testing procedure begins as soon as a project’s requirements are established and proceeds concurrently with the SDLC (Software Development Life Cycle)

Software testing 1.0:-

In the SDLC, software testing was only seen as a single phase that came after coding. There was no test organisation. There were a few testing tools available, but their usage was restricted by their high price.
There was no high standard.

Software testing 2.0:-

Software testing started to take centre stage in this phase of the SDLC, and early testing became a thing. Numerous testing tools were also available at this time since testing was moving toward resource planning.

Software testing 3.0:-

Software testing is now evolving into a procedure that is focused on strategic effort. It implies that there should be a procedure that provides us with a general roadmap for the testing process. Goals for quality should be the driving force. In this phase, management is actively involved.

 Software Testing Epoch:-

During this time, development and testing were viewed as mutually independent tasks. The testing team received the programme after it was finished and verified it. During the requirement analysis phase, testers were not very actively involved and only sometimes interacted with business stakeholders. They were primarily reliant on information that was imparted to them through documentation created during design and development or learning from programmers who developed the code.

The testing team’s adoption of restricted testing methodologies was a result of their lack of understanding of the needs and expectations of the clients. Based on their comprehension of the documentation, the testers would create a test plan and conduct ad-hoc testing of the programme. It is clear that there were certain restrictions, and the testing was not exhaustive. Testing developed, and the next phase was the period of exploratory and manual testing.

Manual Testing and Exploration:-

Agile testing, exploratory testing, and other approaches became popular in the late 1990s. Manual testing was carried out with the use of thorough test designs and test cases. By examining the programme within the scope of testing charters, exploratory testing allowed users to test and break software in their own unique ways. The software development process needs more sophisticated testing methods due to its rapid and extensive growth. Agile testing’s gradual and iterative methodology contributed to the accomplishment of this objective. The repetitious tests those were able to be automated thanks to iterative testing.

The Age of Automation:-

Numerous fresh ideas that emerged with the turn of the millennium completely transformed software testing. These methods completely altered how testing was done. The SDLC was now considered to include testing at every stage. Quality control and assurance have become more important at every stage.

Automation raised the bar for testing significantly. The testers were further given the tools they needed to do their duties more effectively thanks to the abundance of automated testing frameworks. Automation made it possible to quickly and accurately carry out sanity and regression tests.

The testing procedure needed to be scaled up throughout this time period as well. The firm was able to manage product testing more quickly and with less infrastructure expenditure thanks to crowdsourcing and cloud testing.

The Continuous Testing

Customers now anticipated seeing an early functioning prototype of the finished product as the business dynamics started to shift. As a result, there was an increase in demand for regular and basic software releases. High connection and faster testing and deployment times across many platforms were made possible by enhanced network infrastructure.

This made delivery more frequent, which unintentionally resulted in additional testing effort. Continuous Integration and Continuous Deployment become well-known concepts. Continuous testing also acquired significance along with these. Shorter delivery cycles resulted from the rise of DevOps and CI/CD. It became essential to carefully evaluate threats in real time. At every level of the software development life cycle, risk assessment and management were required.

The business stakeholders expected intermediate releases under strict deadlines without sacrificing the final product’s quality. Continuous testing required to advance to become more effective in order to keep up with these expectations. This is where utilising artificial intelligence in testing comes into play.

A New Age of Artificial Intelligence:-

Artificial intelligence, put simply, is the ability of a computer to mimic human behavior through perception, comprehension, and learning.

The predictive analysis of data serves as the foundation for AI systems. This also implies that data is crucial for AI testing.
Today, a variety of testing solutions driven by AI are available to assist with unit testing, API testing, UI testing, etc. Visual testing is a prime illustration of how AI is used in testing.

 

Read Also: Optimum Software Developer to Software Tester Ratio?

app testing

What is Test Estimation?

For a specific software testing project in a specific environment utilising certain methodologies, tools, and techniques, test estimation is the estimation of the testing size, testing effort, testing cost, and testing timeline.

1. Estimation, which was previously defined in the topic
2. Testing Size – The quantity (amount) of testing that must be done. Sometimes, especially in embedded testing (where testing is integrated into the software development activity itself), this may not be estimated.
3. Testing Effort – The number of person days or person hours required to carry out the tests
4. Testing Cost – the costs associated with conducting tests, including the cost of human labour
5. Testing Schedule – the number of days or months in a calendar year required to conduct the tests.

Conclusion

Because it depends on the complexity and efforts employed for the specific product, the effort calculator is crucial for cost prediction as well as the ratio of testers to developers. The amount of time the product takes also matters a lot. Nowadays, automated and AI-based testing is a common technique, but as my research shows, all modern techniques are based on manual testing.

Because it depends on the complexity and efforts employed for the specific product, the effort calculator is crucial for cost prediction as well as the ratio of testers to developers. The amount of time the product takes also matters a lot.

To overcome the problem of software test effort estimation Testbytes creates a test effort calculator for cost estimation, which is used to estimate the amount and time frame required for testing your software. The Testbytes software test effort calculator is designed for specification and user preferences.

The test cost calculator has many domains, such as banking and finance, telecom, e-commerce, etc. The cost calculator is platform-independent, i.e., you can select web, mobile, or both platforms at the same time. The total number of testing cycles required for the entire process determines the final cost.