Software tester

Today, many things are controlled by software and software quality is becoming the number one issue. With the world more interconnected by the internet, software has reached more people and more businesses than ever. With that, software defects have also increased significantly. While some defects can disrupt work, others can create damages with millions dollars in losses. (Few weeks ago, a software defect changed a few zeros in a European stock market index, created a panic for almost ten minutes until it was correct. The damage was estimated at few millions although they stop trading immediately). To ensure quality of the product, software testing is essential in a time where everything happens at rapid rate with more automation and fewer human intervention.

According to a new U.S Government study, there is a growing demand for more software testers, especially in the financial industry (Banks, Stock market, Trading institutions, and Insurance companies). This is also a good news to outsourcing providers since there is a critical shortage of software people globally. Today, the financial industry is using more information systems than ever to speed up their business. Most companies are operating seven days and 24 hours (7/24) so their software system must be highly reliable. With globalization, the financial industry is seeing unprecedented growth, and with this comes the responsibility of ensuring business continuity. With technology change rapidly, the financial industry (Banks, financial institutions, stock market, and insurance companies) must constantly upgrades their large information systems or improve their key support applications and they need a lot of software testers. According to the latest study, the global software testing market is estimated to reach US$56 billion by 2013, and this rapid growth will require nearly 300,000 professional testers globally in the next five year.

TestingCup - Polish Championship in Software Testing, Katowice, May 2016. Image: Wikimedia Commons

The study also reveals that coding is error-prone and testing is still the best method to find defects. However, many software trainings are still based on the waterfall lifecycle where developer codes, tester tests, and testing happened after coding is done, This is NOT efficient and usually it is too late. It allows developer to throw “Poorly written codes” to tester and let tester find defects. This view also places tester below the developer in term of status, position and that is why many people do not want to work as testers.

The software engineering process requires that testers be involved in the beginning of the project and developers have to be part of the quality solution. This process stated that when a product is being designed, the test case should also be designed along with it, not afterwards. Since the developer creates the code, there is nobody else better to test the code than the developer because he understands his own code. When developer writes codes, he must also write the test cases. Every line of code must be written with testability in mind and the software product has to be designed that it is testable in the end. The question is who has to do the testing? The answer is developer has to test his own code (Unit test) and write test cases for the functional testing on the code which they are written. By doing that, all defects in code can be identifies, fixed, and eliminated at the development phase.

Testers should be involved in the beginning of the project to make sure that developers are following testing principles and design the software product that falls within the scope of testing tools. Basically, when the developer writes code and test cases, at the same time, the tester also write their own correspondent test cases. Together they work to ensure the quality of the final product. While developer focuses on their unit test and functional test, tester focuses more towards system test and integration test where many units and functions are combined to form the final product. Of course, working together is not easy and there are issues that tester must overcome. Beside the personal conflict or teaming issue, there is another technical issue too. With advanced programming tools, developers can improve their productivity significantly. For example, with Integrated Development Environment (IDE) a software tool that combines source code editor, compiler, build automation and debugger, developers can code, test, and also do the functional testing on the code which they have written much faster. Some IDEs such as “IntelliJ” and “Eclipse” help developers with feedbacks on their code they have written too. This put more pressure on testers since developers can write code faster, but testers still have to incorporate all the testing methods to ensure the software has no defect. This is why sometime developers complain that testers are too slow and prevent the release of software.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University