In an earlier post I listed out several different types of software testing. This post will elaborate a little more on many of these types of software testing. In a subsequent post I shall cover the remaining types of software testing. As a professional tester, you may probably work only on a subset of these types of software testing for most part. Some of you may even specialize in a limited subset of test types e.g. performance/stress/load, security, i18n/l10n and so on. Nevertheless, it is useful for testers (and non-testers too) to be aware of the various types of software testing.
Elaborate definitions of all the popular types of tests will be covered in the posts to come.
Is a set of tests performed to verify conformance/compliance to specified standards. E.g. section 508 compliance testing, IEEE standards, etc.
More types of software testing to follow in the next post.
Elaborate definitions of all the popular types of tests will be covered in the posts to come.
Software Testing Types
Acceptance Testing
Performed after system testing is complete. Acceptance testing confirms that the software satisfies the specified requirements. Acceptance testing is normally a user performed test exercise which uses black-box techniques to test the system against specifications.Ad hoc Testing/Random Testing/Monkey Testing
Also termed as unplanned or unstructured testing. It is a test type where test execution occurs in the absence of documented test cases and plans. It does not make use of any of the test design techniques such as boundary value analysis (BVA), equivalence partitioning, etc. Ad hoc testing is performed to explore the different areas in the product by applying intuition, knowledge of the product, technology, domain and experience.Buddy Testing
Buddy testing essentially groups a couple of members working together to test a piece of code/functionality. This could be two testers working together or even when two developers test each other’s code.Paired Testing
Paired testing is a form of buddy testing where two testers work on the same system at the same workstation. Both testers may take turns to test the software while analyzing scenarios, reviewing each other's work and exchanging notes. Again, I say two testers here. It may as well be a combination of a tester and a developer working together as followed in some agile models. There are benefits to this approach and a few drawbacks too which we'll explore in subsequent posts.Exploratory Testing
I am just going to directly quote James Bach here. 'definition of exploratory testing is test design and test execution at the same time. Exploratory tests, unlike scripted tests, are not defined in advance and carried out precisely according to plan. The term "exploratory testing"--coined by Cem Kaner, in Testing Computer Software-- refers to a sophisticated, thoughtful approach to ad hoc testing.'Iterative / Spiral model Testing
Here testing is a process of continuous/ongoing improvement as the system changes in each iteration. Testing needs to be closely integrated with Development. Often unless testing is "done" progress cannot be made. New features or modifications are tested in each iteration/spiral while running regression tests either in the same or upcoming iteration/spiral based on time/resource availability.Extreme Testing
Practiced as part of TDD (Test Driven Development) or test first development (TFD). Developer writes their own tests and needs to first write tests before writing a single line of functional code. This approach was popularized in Extreme Programming (XP).Alpha Testing
Is testing performed in-house and is a form of acceptance testing of software which is done when Development is mostly complete with feature/functionality. There may be outstanding issues which need to be addressed.Automated Testing
Is a technique of using software tools to run pre-written scripts to test applications. Essentially, many (not all) tests which are run manually can be automated and executed without manual intervention.Beta Testing
Is performed by real users of the product in a real environment. This provides an opportunity for users to experience the product first hand and give feedback which has a greater likelihood of getting in to the product.Black Box Testing
Is a method of testing wherein the tester is unaware of the internals (implementation/design/structure) of the system being tested.Boundary Testing
Also known as Boundary Value Analysis (BVA) is a type of testing where in you test at the boundaries or corners of the input domain. Tests are designed based on both valid and invalid boundary values.Compatibility Testing
Is a type of non-functional test to validate the application's compatibility/ability to function correctly with various operating environments which include hardware, operating systems, other applications, clients/browsers, networking, storage, etc.Conformance Testing
Is a set of tests performed to verify conformance/compliance to specified standards. E.g. section 508 compliance testing, IEEE standards, etc.
Consistency Testing
Is performed to verify consistency of the application across different environments. For example visual consistency across browsers and client OS platforms, across locales, etc.Deployment Testing
Is performed on the staging or production environment to validate the deployment. Mostly involves a select set of tests to be executed to validate that the deployment has been successful.Documentation Testing
Involves testing/verification of all documentation artifacts. Includes Online Help, Manuals, Guides, etc.Domain Testing
Involves testing using a select subset of tests from a large/possibly infinite set of potential tests. Normally, a domain is divided into sub-domains/classes and individual members are picked from each class to be tested.End-to-End Testing
Type of testing to check the end-to-end workflow and use cases spanning modules/functional areas. Rather than focus on a specific functional area, cross functional integration and relationships are tested including dependencies with other components.More types of software testing to follow in the next post.
************