We are all well aware of the fact that software is far from perfect. Whether you’re talking about business management systems or mobile apps, there’s always the possibility that they could malfunction without warning, thus seriously impacting the overall success and profitability of an operation.
As a result, software testing has become increasingly relevant – a vital part of the development life cycle of the software itself. Experts agree that development and testing are two inseparable but independent disciplines that should work together to help identify potential faults before the software is brought to the production line.
Many agree, however, that software testing is not always given the importance it deserves. This is often down to the fact that the businesses themselves are in so much of a hurry to enter the market and stay ahead of the competition that they dismiss testing as a waste of valuable time. Blame can also be placed at the feet of the developers themselves, as students often graduate from universities without being fully competent.
One thing is for sure – testing is a vital part of the software development life cycle. Just as a cinematic editor works to enhance a movie and a proofreader works to perfect a text, a tester is there to help perfect the software. The developer is the one responsible for testing the code before sending it to the official testers, who are there to help improve the quality of the code and the final product rather than to look for errors that may have been made when writing said code.
According to Enrique Cortes, Managing Director at Luxoft (an IT outsourcing and tailor-made software development business), total independence between the one developing the software and the one testing it is vital in ensuring accuracy and objectivity. “Using an independent testing or quality assurance organization is vital. While a developer may be confident that the software he has created will work well, it still needs to be thoroughly tested to determine which parts perform well and which don’t perform so well.”
According to Cortes, testers are often viewed as “second-class citizens”. In other words, they are not considered to be as important as the developer himself. Cortes believes, however, that those carrying out the tests are just as important as those developing the software. “They need to be on the same level so that they both feel free to express themselves when it comes to informing the other of any flaws or defects that may need to be addressed. This is where it all starts – with independence when creating and testing software.”
According to Victor Martinez, Director of Client Solutions at Tiempo Development, software testing has been undervalued for far too long. Many universities don’t even include the subject in their study plans. He feels that, when it comes to careers involving IT, testing is seen to be of little relevance, rather than being an integral part of the software development life cycle. “The same thing happens when the students finally join the work force – there are very few who actually want to carry out the software testing,” he states.
According to Martinez, many businesses, in their zeal to launch their products onto the market come to see testing simply as another thing conspiring to slow them down. They look to cut costs by reducing the amount of time they dedicate to software testing, some even failing to complete certain tests that are vital to ensuring the product performs well and can be used without complications.
A good example of this is the huge increase in untested mobile apps being released onto the market. The end users are the ones that are left to discover, report and suggest improvements for the faults they contain. “A trend that is becoming all too common is the user playing the role of the tester,” Martinez says.
Of course, this cannot be allowed to happen when it comes to apps that are vitally important to the running of the business, such as those used in the financial system and the medical control system. “Each business has to agree on what degree of reliability it requires of its software and invest in the testing process accordingly,” Martinez adds.
First and Foremost: Quality
According to Cortes, there is a direct link between the quality of software and the success of the business: “A fault in the software leaves the customer with a bad impression; they see only wasted money and missed business opportunities, which negatively impacts the brand’s reputation.”
Today, people go online to transact with banks, airlines, shops and business systems in general, so faults in the software result in serious problems for the business. “If you do not have a sophisticated means of testing and carrying out quality assurance checks, the results will be disastrous. It is a science that has advanced to such a degree that it is now possible to predict how many faults will be found per line of code before carrying out the test.”
The main reason a company should invest in software testing is to ensure quality. According to Martinez, if you don’t invest the necessary amount of time, money and effort when testing an app you are likely to encounter all manner of problems further down the line. “If, as a user, you download a faulty app or an app that doesn’t do what it claims to, you will automatically assume that all other products released by the same company are going to be of substandard quality. This will negatively impact on the customer’s opinion of the company,” he states. “For an organization to produce high-quality software it has to be willing to invest in professionals with the necessary training and experience working as testers.”
The School of Banking and Commerce (EBC), one of the main business and finance universities in Mexico, recognizes the importance of software testing. Their tests are carried out internally in their Quality Assurance (QA) Department. Juan Manuel Zenil, Information and Communication Technology (ICT) Manager at the university, works with several of the user departments on the design, development and testing of apps used both by the students themselves and the university’s administrative and academic departments.
When it comes to the university’s development projects, the Grant Management System, (currently at the testing stage but with plans to start production in 2015) is noteworthy. This system (to be used in the Control Escolar Department) has been internally developed to follow up on the grant requests submitted by students. It provides information regarding the students’ qualifications and academic performance and indicates whether they comply with the EBC’s internal policies or not.
According to Zenil, internally testing software has been the best route to take for them. “Mainly because the staff involved in carrying out the testing are fully familiar with the business procedures in place. They know what to test and how each campus operates. This results in their being able to build test matrixes and procedures much more quickly than others.”
Zenil agrees that the QA department has to be completely independent from the software development department. “This is because the developers can’t possibly work both as judge and jury. [The roles of development and testing] have to be autonomous. It is the job of the user department requesting the software to give the go ahead for production,” he explains.
According to Zenil, the creation of prototypes has become an intrinsic part of the software development and testing life cycle.
This has helped give the user a more accurate idea of exactly how the software will perform and what information it will contain. In earlier years, to develop an app or piece of software you had to fill out a request and undertake an analysis of exactly what would be required. It was up to staff from the QA department to make sure it functioned properly. Often, however, the user would claim that while the end product worked well enough it was not what they had requested.
“Now prototypes are included before even getting to the software development stage. The prototype is tested by the end user. This has considerably reduced the testing procedures and has improved the overall quality,” Zenil adds. “The app is validated during the testing stage and, depending on the type of app involved, subject to a stress test – particularly when dealing with apps used by students as it is important that they are able to withstand the work load they will be subject to.”
As a CIO, Zenil highlights the main benefits a business can expect to see from software testing –whether it be carried out internally or by a third party. “The first benefit is a reduction in the number of problems experienced when the software finally comes into production,” he says. “When systems are released without being fully tested they result in a long list of serious faults.”
It also helps ensure that the businesses get exactly what they are asking for, with the software performing well and meeting their specific requirements. “The testing should not just be technical but functional as well. In other words, it should help determine if the software fits the bill and, if approved, release the final version onto the market,” Zenil states.
Of course, software testing helps ensure the smooth onward running of an operation from a technical point of view. The software should be subjected to the most demanding technical trials available, to ensure that a system or application performs well under stress, and that the information it contains is protected at all times.
“Testing is Not the Enemy”
The software development industry has evolved considerably over the last 20 years. Enrique Cortes points to how, in the past, software had to be built up from scratch. Nowadays however, it is developed in stages. “This means that one part of the software can be in the cloud while another part is on one of the business’ servers. There are a variety of parts that have to work well together and communicate with each other. This has resulted in testing becoming much more sophisticated and scientific; as the software is made up of a variety of connected parts, all located in different areas.”
Maria Clara Choucair, General Manager of the Colombian business Choucair Testing, states that, “software testing is nobody’s enemy. It is a vital part of a project and helps to considerably reduce the risk of problems reached the production line.”
For Choucair, it is vitally important that software testing be included right from the start. The quicker a problem is detected and resolved, the smaller the impact on the reputation and profitability of an organization, she says: “If testing is left until the end you could be in for some nasty surprises – many of which could easily have been detected right at the start.”
According to Victor Martinez from Tiempo Development, “there is still a long way to go before testing is given the importance it deserves. Both universities and the industry itself should play a part in making it happen,” he concludes.