Software Testing: Your Most Frequently Asked Questions Answered

At DeeperThanBlue Unify, we help you test your software against world class standards to provide the perfect platform to make your business profitable.

We are also always on hand to assist with any questions you might have when it comes to software testing. The following are some of the most frequently asked questions we get when we start working with our clients.

What is System Testing / QA Testing?

System or QA Testing is a phase of functional testing, which involves testers verifying the functionality of changed or new software. Typically, a tester will try to understand what the functions of the software are (normally documented as Requirements, Acceptance Criteria or User Stories) and prepare test cases to execute against the software when it has been developed.
Test cases are prepared to exercise the software in different ways, to ensure that it is fit for purpose and performs the expected actions as defined in the requirements. If you want to learn more about the reasons we do testing, feel free to read our article on The Financial Impact of Software Defects.

What is functional testing and non-functional testing?

We execute functional and non-functional testing in order to help de-risk the project from failed delivery. When a project goes live, there can be a number of things that happen which the project or business have not planned for, so it is important to test the solution thoroughly prior to its deployment. Failure to do this can cost the business time and money to fix the issues, as well as brand damage and lost revenue, as a result of negative feedback.

Functional testing is performed to ensure that the software solution meets the requirements as defined by the Business Requirements, User Stories, Specifications and / or Acceptance Criteria. There are several phases and types of functional testing, all designed to validate different aspects of the solution. We always advise to follow a ‘Test Early, Test Often’ approach to continuous testing which involves starting your testing against requirements and automating tests as soon as possible.

Non-functional testing is similar to functional testing, in that we verify that requirements are met, however the focus of NFT are the non-functional aspects of the solution. This can include such things as performance, security, failover, infrastructure and more. Following the ‘Test Early, Test Often’ approach, we can help de-risk as much of the solution as possible, as early as possible in the project lifecycle.

If you wish to learn more about software testing, get in touch or have a look at our training courses.

What is Automation Testing and which language is best to use?

Automation testing is a method used by software developers and testers to execute designed tests with minimal user interaction.

The general benefits of this are:-

  • Tests are run without manual intervention required, so can be executed remotely or scheduled for particular times.
  • As the tests are coded, they are executed in the same way, every time. This avoids human mistakes.
  • Automation can remove some of the more laborious parts of testing.
  • Automation saves time and money when implemented correctly.

Many development languages and open source or licensed tools can be used to automate software testing. It really depends on what you are trying to automate and the capability of your developers and testers as to which tools and development languages are appropriate.


If you are automating web applications, JavaScript is a very useful language to learn, along with Python. If your team develop in Java or C#, this can be integrated with a tool named Selenium which contains functions to mimic a user interacting with a web page. We wouldn’t necessarily advise that this is the best way to automate though, it’s best to talk to one of our consultants about the challenges and your possible options.

For more help on how to approach test automation, see our article on the Automation Pyramid. We can also help you in selecting the right tools and languages for your project, by discussing the Automation Blockbuster Board, which we have developed to help companies choose the right tools and solutions for them.

What is Exploratory Testing and why do we do it?

Exploratory testing is a less structured, functional, test phase where the aim of the testing is to find bugs or defects in the software. Tests can be executed by an experienced tester or business user, who understands how the software will be utilised by its end users. Alternatively, tests can be checklist-driven, whereby a list of things to check are derived from requirements or meetings with experienced team members. The tester will then execute tests according to the checklist.

An example of an exploratory test phase is a Bug Hunt. In a practical application, members of the project team spend a period of time together walking through user journeys in the system, whilst trying to stretch the limits of the solution by attempting actions which may or may not have been documented or discussed as part of the project. Our approach in these scenarios is: If the user can do it, they generally will.

Contact our team for an example of an exploratory testing checklist and to understand this further.

What is a Test Plan and what is it used for?

The ISTQB definition of a test plan is “A document describing the scope, approach, resources and schedule of intended test activities. It identifies amongst others test items, the features to be tested, the testing tasks, who will do each task, degree of tester independence, the test environment, the test design techniques and entry and exit criteria to be used, the rationale for their choice, and any risks requiring contingency planning.”

In essence, the document would detail features to be tested, by whom and how. The document would also detail further information around which test environments and test data would be used, along with key dates, risks, issues and dependencies for the testing.

Formal test plan documents are not written for every project and, over recent years, a more pragmatic approach to this has been adopted in some businesses. Examples are planning tests for each user story, or planning testing using a test matrix.

The reason for this is, generally, that a formal test plan document can be quite lengthy and require a lot of work to build yet deliver little value to the overall project. Test activity, tooling, dates, resources, risks and issues can be managed outside of the test plan document and be more dynamic and update-able, rendering the initial document outdated. Some businesses, however, rely on the test plan document as they may have more of a strict need for the items placed within it.

Get in touch if you need assistance generating a test plan or are looking at ways to make the best use of time for your software delivery approach.

What is Performance Testing?

Software performance testing is a non-functional testing activity (link to what is functional and non-functional testing FAQ) and is a way of validating that software meets the performance specification as documented in the requirements. Performance metrics are provided, and a tester will generate test cases with the aim of measuring the system performance under different scenarios.

Normally, performance testing includes:-

  • Load Testing
  • SOAK / Endurance Testing
  • Stress Testing

The aim of load testing is to see how a system or component handles increased activity, such as transactions or parallel users. For established businesses, assessing existing traffic or user loads can provide some metrics to work with.

 

SOAK or endurance testing is essentially running the load test, over a defined period of time. This tests that your solution can handle increased workload for a prolonged period. For example, if you anticipate increased traffic on your website over specific periods of the year.

Stress Testing is carried out to learn more about the break point of a system or component. If a system regularly gets 1,000 parallel users in an hour, a stress test would continue to load more parallel users until the system started to report failures. If the system starts to fail at 1,100 parallel users, there may be more infrastructure, software or hardware changes you can make to increase the number of users the solution can handle. If, however, the breakpoint is 15,000, you can help the business understand whether there are likely going to be issues with this, once the solution is released to the end users.

In addition to these standard areas, more targeted performance testing can be conducted with a closer knowledge and understanding of how the system is used. Examples of this targeted performance testing can include:

  • User interactions – targeting the measuring the performance impact of certain users performing specific actions at the same time (such as checking out on an eCommerce store). This can be used to specifically test potential bottlenecks/weak points of the system.
  • Business User Interactions – this involves performance testing the system while key back office BAU tasks are taking place – such as batch jobs, data loads etc. to assess if there is an impact to front end users of the system.

Hopefully, you’ve got a little more information to answer your key software testing questions. If you would like to know more we are always here to help.

Get in touch with us at DeeperThanBlue for a free consultation

If you want to deliver world class software testing and enhance the profitability of your business, get in touch with us today.

+44 (0)114 399 2820

[email protected]

Get in touch