Fundamentals of Software Testing- Legacy and Modern tests
Software testing is a very vast subject. For a tester, every project has a new challenge as he has to understand from his client’s point of view and domain before starting. For that, the tester must have the fundamentals of Software testing right.
A clever person solves a problem. A wise person avoids it— Albert Einstein
At this point, you already know that how important is to know about software testing and its fundamentals to manage your clients.
WHAT IS SOFTWARE TESTING?
Software testing is the process of checking and validating a computer program. A tester uses it for identifying defects and bugs that they need to fix before publishing to the production environment.
Software testing has three goals:
The verification process confirms that the software meets all technical requirements.
The validation process confirms that the software meets all functional and business requirements.
The defect search process confirms that the software is behaving as it should, even in unexpected scenarios. A very simplistic good example of this is the zero-by-zero test or word calculation rather than numbers. In both cases, an expectation of error in the result of the test.
The Legacy Software Test
Before the Agile movement, software testing was a tedious and manual job. A large team and the number of members depend on the size and complexity of the application.
Testing a system with 10 people is still a practice that is common in many companies to find bugs or regressions and perform system validations.
In the traditional testing method, approach and the focus of the teams are on ensuring that all business requirements are functional in the version that will be published in the production environment. In this type of approach, systems have slow releases that can take at least 2 to 6 months. Typically when a release is done it is not what the user expects and still presents bugs and inconsistencies.
If something is wrong the release could be a delay and a new release date is set. Bugs are open to programmers and after each batch of fixes, the system tests it manually again.
There are cases of companies that have test teams with more than 100 people. Although expensive, this “bloated” development model has been operating for many years in a “satisfactory” manner.
The Modern Software Test
One of the big differences between traditional and modern testing is that the development team works very closely with the business team to gain a better understanding of the requirements.
Regardless of their role, each team member is aiming to deliver a high-quality product that aligns with business requirements.
Once a feature group is final a new release is going in a controlled environment and is validated by a product manager in conjunction with customers or business people, we cant consider a “Story” ready until it is gone through testing and approval.
There are several nuances to how Agile teams distribute and this can vary depending on the size of the project and the company’s culture.
Quality VS Tests
The quality is not the same as the test. We can achieve quality by placing development and testing in a blender and mixing them until one is indistinguishable from the other — James A. Whittaker at Google
In the modern software testing approach, quality is the responsibility of the developer and not a test team. Just as James Whittaker in the book How Google Tests Software said:
“Testing should be an inevitable aspect of development, and the marriage of development and testing is where quality is achieved.”
How Google Tests Software, James Whittaker