Purpose The purpose of integration testing is to verify functional, performance, and reliability requirements placed on major design items. 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. Some different types of integration testing are big bang, top-down, and bottom-up. Big Bang A type of Big Bang Integration testing is called Usage Model testing. Top-down and Bottom-up Limitations References See also
Related: Testing Frameworks
Manual testingCompare with Test automation. 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. To ensure completeness of testing, the tester often follows a written test plan that leads them through a set of important test cases. Overview A key step in the process is, testing the software for correct behavior prior to release to end users. For small scale engineering efforts (including prototypes), exploratory testing may be sufficient. Large scale engineering projects that rely on manual software testing follow a more rigorous methodology in order to maximize the number of defects that can be found. Testing can be through black-, white- or grey-box testing. Static and dynamic testing approach may also be used. Testing can be further divided into functional and non-functional testing. Stages There are several stages. Unit Testing System Testing
Unit testingIn 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. Intuitively, one can view a unit as the smallest testable part of an application. 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. Unit tests are short code fragments created by programmers or occasionally by white box testers during the development process. Ideally, each test case is independent from the others. Benefits The goal of unit testing is to isolate each part of the program and show that the individual parts are correct. A unit test provides a strict, written contract that the piece of code must satisfy.
aharin/inproctesterGraphical user interface testingIn software engineering, graphical user interface testing is the process of testing a product's graphical user interface to ensure it meets its written specifications. This is normally done through the use of a variety of test cases. Test Case Generation 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. 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. Most of the testing techniques attempt to build on those previously used to test CLI (Command Line Interface) programs, but these can have scaling problems when applied to GUI’s. Planning and artificial intelligence
System testingSystem 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 falls within the scope of black box testing, and as such, should require no knowledge of the inner design of the code or logic.  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. System testing is a more limited type of testing; it seeks to detect defects both within the "inter-assemblages" and also within the system as a whole. Testing the whole system Types of tests to include in system testing See also References
Citrus FrameworkBlack-box testingBlack 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. Test procedures Specific knowledge of the application's code/internal structure and programming knowledge in general is not required. Test cases Test cases are built around specifications and requirements, i.e., what the application is supposed to do. Test design techniques Typical black-box test design techniques include: Hacking See also References Jump up ^ Ron, Patton. External links BCS SIGIST (British Computer Society Specialist Interest Group in Software Testing): Standard for Software Component Testing, Working Draft 3.4, 27.
Acceptance testingIn systems engineering it may involve black-box testing performed on a system (for example: a piece of software, lots of manufactured mechanical parts, or batches of chemical products) prior to its delivery. Software developers often distinguish acceptance testing by the system provider from acceptance testing by the customer (the user or client) prior to accepting transfer of ownership. In the case of software, acceptance testing performed by the customer is known as user acceptance testing (UAT), end-user testing, site (acceptance) testing, or field (acceptance) testing. Overview Testing generally involves running a suite of tests on the completed system. Acceptance Tests/Criteria (in Agile Software Development) are usually created by business customers and expressed in a business domain language. Acceptance test cards are ideally created during sprint planning or iteration planning meeting, before development begins so that the developers have a clear idea of what to develop.
Modern C++ Testing - level of indirection - level of indirectionBack in August I took my family to stay for a week at my brother's house in (Old) South Wales. I've not been to Wales for a long time and it was great to be back there - but that's not what this post is about, of course. The thing about Wales is that it has mountains (and where there are no mountains there are plenty of hills and valleys and cliffs). Mobile cell coverage is non-existent in much of the country - particularly where my brother lives. So the timing was particularly bad when, just as we were driving along the south cost (somewhere between Cardiff and Swansea, I think), I started getting emails and tweets from people pointing out that Catch was riding high on HackerNews! Except that, between lack of mobile reception and spending time with my family, I didn't have opportunity to join the discussion. When I got back home a week later I read through the comments. When I first released Catch, back in 2010, C++11 was still referred to as C++1x (or even C++0x!) The competition
Functional testingFunctional testing is a quality assurance (QA) process and a type of black box testing that bases its test cases on the specifications of the software component under test. Functions are tested by feeding them input and examining the output, and internal program structure is rarely considered (not like in white-box testing). Functional Testing usually describes what the system does. Six steps Functional testing typically involves six steps The identification of functions that the software is expected to performThe creation of input data based on the function's specificationsThe determination of output based on the function's specificationsThe execution of the test caseThe comparison of actual and expected outputsTo check whether the application works as per the customer need. See also References