background preloader

Software testing

Facebook Twitter

Manual testing. Compare with Test automation.

Manual testing

Manual testing is the process of manually testing software for defects. It requires a tester to play the role of an end user, and use most of all features of the application to ensure correct behavior. Acceptance testing. Integration testing. Purpose[edit] The purpose of integration testing is to verify functional, performance, and reliability requirements placed on major design items.

Integration testing

These "design items", i.e. assemblages (or groups of units), are exercised through their interfaces using black box testing, success and error cases being simulated via appropriate parameter and data inputs. Simulated usage of shared data areas and inter-process communication is tested and individual subsystems are exercised through their input interface. Test cases are constructed to test whether all the components within assemblages interact correctly, for example across procedure calls or process activations, and this is done after testing individual modules, i.e. unit testing. The overall idea is a "building block" approach, in which verified assemblages are added to a verified base which is then used to support the integration testing of further assemblages. Functional testing. Scenario testing. History[edit] Kaner coined the phrase scenario test by October 2003.[1] He commented that one of the most difficult aspects of testing was maintaining step-by-step test cases along with their expected results.

Scenario testing

His paper attempted to find a way to reduce the re-work of complicated written tests and incorporate the ease of use cases.[1] A few months later, Buwalda wrote about a similar approach he had been using that he called "soap opera testing". Like television soap operas these tests were both exaggerated in activity and condensed in time.[2] The key to both approaches was to avoid step-by-step testing instructions with expected results and instead replaced them with a narrative that gave freedom to the tester while confining the scope of the test.[3] Graphical user interface testing.

In software engineering, graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its written specifications.

Graphical user interface testing

This is normally done through the use of a variety of test cases. Test Case Generation[edit] To generate a set of test cases, test designers attempt to cover all the functionality of the system and fully exercise the GUI itself. The difficulty in accomplishing this task is twofold: to deal with domain size and with sequences. In addition, the tester faces more difficulty when they have to do regression testing. Unlike a CLI (command line interface) system, a GUI has many operations that need to be tested. The second problem is the sequencing problem. Regression testing becomes a problem with GUIs as well. These issues have driven the GUI testing problem domain towards automation.

Planning and artificial intelligence[edit] an initial state,a goal state,a set of operators, anda set of objects to operate on. GUI Testing Checklist. Click here to view the complete list of archived articles This article was originally published in the Spring 2000 issue of Methods & Tools GUI Testing Checklist Barry Section 1 - Windows Compliance Standards 1.1.

GUI Testing Checklist

Section 2 - Tester's Screen Validation Checklist 2.1. Unit testing. In computer programming, unit testing is a method by which individual units of source code, sets of one or more computer program modules together with associated control data, usage procedures, and operating procedures are tested to determine if they are fit for use.[1] Intuitively, one can view a unit as the smallest testable part of an application.

Unit testing

In procedural programming, a unit could be an entire module, but it is more commonly an individual function or procedure. In object-oriented programming, a unit is often an entire interface, such as a class, but could be an individual method.[2] Unit tests are short code fragments[3] created by programmers or occasionally by white box testers during the development process. Ideally, each test case is independent from the others. Substitutes such as method stubs, mock objects,[4] fakes, and test harnesses can be used to assist testing a module in isolation. Stress testing. Stress testing (sometimes called torture testing) is a form of deliberately intense or thorough testing used to determine the stability of a given system or entity.

Stress testing

It involves testing beyond normal operational capacity, often to a breaking point, in order to observe the results. Reasons can include: Software performance testing. Performance testing is a subset of performance engineering, an emerging computer science practice which strives to build performance into the implementation, design and architecture of a system.

Software performance testing

System testing. System testing of software or hardware is testing conducted on a complete, integrated system to evaluate the system's compliance with its specified requirements.

System testing

System testing falls within the scope of black box testing, and as such, should require no knowledge of the inner design of the code or logic. [1] As a rule, system testing takes, as its input, all of the "integrated" software components that have passed integration testing and also the software system itself integrated with any applicable hardware system(s). The purpose of integration testing is to detect any inconsistencies between the software units that are integrated together (called assemblages) or between any of the assemblages and the hardware.

Test case. Formal test cases[edit] In order to fully test that all the requirements of an application are met, there must be at least two test cases for each requirement: one positive test and one negative test.

Test case

If a requirement has sub-requirements, each sub-requirement must have at least two test cases. Keeping track of the link between the requirement and the test is frequently done using a traceability matrix. Written test cases should include a description of the functionality to be tested, and the preparation required to ensure that the test can be conducted. Use case. A UMLUse Case Diagram for the interaction of a client (the actor) within a restaurant (the system) In systems engineering, use cases are used at a higher level than within software engineering, often representing missions or stakeholder goals.

The detailed requirements may then be captured in Systems Modeling Language (SysML) or as contractual statements. Use Cases are an important requirement technique that have been widely used in modern software engineering since their formal introduction by Ivar Jacobson in 1992. Use case driven development is a key characteristic of process models and frameworks such as the Unified Process (UP), Rational Unified Process (RUP), and Oracle Unified Method (OUM). With its iterative and evolutionary nature, the use case is also a good fit for agile development. History[edit] In 1986 Ivar Jacobson first formulated textual, structural, and visual modeling techniques for specifying use cases.

Black-box testing. Black box diagram Black-box testing is a method of software testing that examines the functionality of an application (e.g. what the software does) without peering into its internal structures or workings (see white-box testing). This method of test can be applied to virtually every level of software testing: unit, integration, system and acceptance. It typically comprises most if not all higher level testing, but can also dominate unit testing as well. [citation needed] Test procedures[edit] Specific knowledge of the application's code/internal structure and programming knowledge in general is not required.

Test cases[edit] Test cases are built around specifications and requirements, i.e., what the application is supposed to do. White-box testing. White-box testing (also known as clear box testing, glass box testing, transparent box testing, and structural testing) is a method of testing software that tests internal structures or workings of an application, as opposed to its functionality (i.e. black-box testing). In white-box testing an internal perspective of the system, as well as programming skills, are used to design test cases. The tester chooses inputs to exercise paths through the code and determine the appropriate outputs.