Secrets of software testing

Jovana Đuričić
Jovana Đuričić
May 16, 2017

Testing, one of the most important sequences in the software development process, requires special attention, concentration and time. On the other hand, software tester must have a list of professional and social skills in order to successfully conduct this job.

And what kind of a job is this?

To put it simple, testing is a process aimed to find and identify all, even the smallest, errors that can occur before and during the use of specific software. This includes acknowledging specific aspects and parts that can be improved, all in favor of better software performance.

The thing is not so simple, there are various types of potential errors, which therefore require different approach in software testing. Also, for each type of testing there are numerous tools, scripts and “tricks” that we use to detect them. Before I introduce you to different types and ways of testing, it is necessary to understand why software testing is important and inevitable in IT industry.

The answer lies in the very essence of creation and use of software. Why do people use it? To make a particular task or function easier, shortened, automated, accelerated and enhanced. If the software does not meet customer requirements and needs, and does not particularly facilitate daily work, then the main purpose of software is not fulfilled and it can not be used in the right way.

What are the benefits of software testing for the client?

People often think that the process of software testing generally does not contribute to cost reduction, for how can something be an additional cost and reduce costs at the same time?!

First of all, software testing saves money in the long run because it ensures you are using and selling software that is reliable, that does not need constant modification and upgrade. The main advantage of software testing is that it allows you to remove errors and problems before the product hits the market (regardless of whether it is used for internal purposes or sold to clients). This can spare you a big headache later, when dissatisfied customers come to knock on your door. If the software does not meet the user’s expectations and desires, the user can ask for a refund of money, and you will have to pay extra resources (people, money, time) for subsequent corrections of software.

And the most important thing is: better testing means higher quality software! When you sell software of high quality, you get the reputation and good public image, which are invaluable for the growth of any business in the long run.

And what happens if the software is not well tested? 

You may: lose the trust of the client, spend more efforts and human resources for the correction of errors, give an advantage to competition and “lose your temper”. Late observed errors will mostly affect your budget.

Here are some examples of companies that lost millions, “only” because they did not test all aspects of their software:

  • 2007. Block-out of the airport in Los Angeles. Incorrect information was sent to the Customs of the United States due to the software bug, which caused trapping 17,000 aircraft at the airport for eight hours;
  • 2010Wrong organs were removed from 25 donors in the UK, as a result of a software bug, a tool that was used for collecting data on donated organs. Software has been in use since 1999 and another 400,000 errors were found since;
  • 2016. US carmaker Ford announced to withdraw 42,300 Figo and Figo Aspire cars from the Indian market due to a software error that can cause a failure of opening the airbag in a collision. Ford also had a software problem in 2015 when 16,444 vehicles were withdrawn from the Indian market, and in September 2013, when 166,021 vehicles were withdrawn due to a software bug.

Now we can talk about software testing. Are you ready?

Types and methods of software testing

Software testing is usually divided into functional and non-functional testing, depending on whether you control only extremely functional application or program code itself.

  • Non-functional testing

The essence of the non-functional testing is the verification of a program code. Given the system is seen as an open box, this testing is named White Box.

  • Functional testing

How many times have you opened a broken link to fill out the form with the wrong data and you did not get a warning that contact form does not work and so on..?

This type of testing involves checking whether everything works as planned. It is necessary to check if all output values agree with the expected place value. This testing is also known as BlackBox because the system is seen as a closed box, i.e. you stay away from the code, but only test the functionalities of the application itself.

  • Compatibility testing

Given a large number of different devices, screen resolutions, operating systems, browsers, it is often the case that e.g. something that works well and looks properly in Google Chrome is not at all visible in the Internet Explorer browser and similar.

Useful tools: BrowserstackCrossBrowserTesting, Ghost Lab, Google Mobile Friendly,  W3CMobileOK Checker .

  • Usability testing

How many times have you installed an application or visited a site searching for desired information, and pressed close or uninstall due to the lack of transparency and lack of software organization? In order to avoid losingclients for this reason, be sure to do usability testing. These tests represent software testing from the perspective of an end user and include testing web site content, intuitiveness, search fields and similar. It is necessary to create a, so called, test case and record a user in the exercise test. See examples of test case here.

Usability tests are based on five components of quality:

  • Learnability: How easily and quickly will user fulfill tasks that you set in a test case, during the first encounter with the software?
  • Efficiency: When a user masters the design, how much time he needs to fulfill its tasks?
  • Memorability: How many users remember the process of using the application in the long absence of using the same?
  • Errors: How many mistakes the user makes during the execution, can he easily get back to “right path”, are those errors fatal?
  • Satisfaction: Is the user content while using the software? Does the task causes stress or feeling of security for users, would they recommend the software to a friend? 
  • Performance testing

Imagine: you are leaned back in your chair,have a super fast internet and you start searching the Internet. You find very interesting information on social media,  impatiently click the link of the website in order to read the whole information… but your excitement soon turns to agony … loading … loading … loading. .. loading … you give up and decide to look for the information in a different place! There arevariety of online tools to help you test the performance of software (loading time, page size, load of js, stress tests …)

Useful tools: Inspect Element, FireBugNibblerPingdomGoogle Insight, a Web page test.

  • Automated Testing

To speed up the time of testing, you can use the automated scripts which allow you to simulate access to the desired number of people over time, with some delays, and to monitor the behavior of the web site in the “stressful” conditions … and once you created a script, you can rerun it whenever you want. Automated testing requires writing a specific code to automate steps in the execution of a specific test case. It is common to call files that contain automated logic test scripts, and they can be written in all popular programming languages independently of programming paradigms.

Useful tools: JmeterSeleniumNew RelicBlazeMeterTest Studio.

  • Security testing

Last, but certainly not the least,  the security testing. It is necessary to secure software from unwanted intrusions, because you don’t want someone access your code, take your information and misuse your users’ data. Data and resources security need to be checked, including whether features are available only to target users (i.e. whether the user with a specific role in the system has access only to the data which are entitled to his user role ). Therefore, it is necessary to test the login form, disable the use of so-called SQL injection, CAPTCHA and provide SSL certificates.

And one more note for the end: Before you decide to do this job, keep in mind that you will not be the most loved person in the office :), because after all, your job is to find errors in the work of your colleagues and to constantly recall them. This is why it’s important to work in a team that recognizes the importance and benefits of software testing.

some love

They trust us, so should you