What is Software Testing?
Software Testing is a general term for the various processes and methodologies used to test software – including applications, websites, software components and entire systems – to ensure it meets the requirements of the business, matches user expectations, and is error (or defect) free.
There are different types of Software Quality Assurance or Software Testing types and tools, which testers use to interrogate software in different ways, and at different stages of its development. Testing is typically split between Manual (or Functional) Testing, and Test Automation, often a combination of both.
The type of Testing used depends on a large number of factors, including budget, deadline, the type of software being tested, the industry it’s used for, and so on. There is no one-size-fits-all blueprint for Software Testing, and the best solution requires careful planning, consulting and strategy.
Some of the specific types of Software Testing include:
- Functional Testing – this is the most common type of Software Testing, also known as Manual Testing, because Testing is done manually by experienced and qualified testers. It is more time consuming than automation but requires less technical skill or coding knowledge.
- Test Automation – this is the more modern type of Testing, and is quickly overtaking Functional Testing as the predominant method in many industries. Test Automation requires a higher level of skill to write (code) test scripts in various languages, which are then used to execute repetitive tests with little or no user intervention. Test Automation is commonly used for Regression Testing, whenever new features are added to existing software.
- Performance Testing – as the name suggests, this is used to test the performance (including user experience) of different software against a set of requirements or user expectations. Performance Testing is typically automated but can also be done manually, and tests can include a variety of different metrics, such as load testing, website response times, transaction speed, system downtime, and so on.
- Exploratory Testing – this is a less structured, more manual type of Testing that involves actively trying to ‘break’ software to discover defects or performance issues that haven’t been thought of or identified using other methods. Exploratory Testing is rapidly gaining popularity, especially with organisations adopting Agile delivery frameworks for their software development, and encourages a very human approach that other forms of Testing sometimes lack.