1.1.7 Types of testing
Unit testing
A quality measurement and evaluation procedure. Evaluates how an individual unit of software code complies with its purpose. May be performed manually--by one or more developer--or through an automated software solution. A form of black-box testing. Dedicated testers are sometimes called Quality Assurance (QA) engineers.
User acceptance testing (UAT)
A system or a partially functional prototype; Given to users to test for functionality or to gain feedback on functions or the user interface; Is the last phase of the software testing process. Actual software users test the software to make sure it can handle required tasks in real world scenarios, according to specifications. Can be implemented by making software available for a free beta trial on the Internet or through an in-house testing team comprised of actual software users. Can be tested to see if users can efficiently access the programs functionality. Is often divided into Alpha and Beta testing.
Alpha testing
Alpha testing is simulated or actual operational testing by potential users/customers or an independent test team at the developers' site. Alpha testing is often employed for off-the-shelf software as a form of internal acceptance testing, before the software goes to beta testing. A group of programmers within the organization examines early versions to see how the system performs. A type of acceptance testing that is performed to identify all possible issues / bugs before releasing the product to everyday users or public. Is conducted when the software may still be unstable or has incomplete functionality.
Advantages of black-box testing
Automated testing: Testers save time by focusing on software functionality. Comprehensive testing can be done quickly by automated programs that check for expected output results from a set of inputted test cases. Code access not Specific programming knowledge is not required to run the test Required: Less technical knowledge required.
White-box testing
Involves testing the internal structures and workings of systems.Internal perspective of the system, as well as programming skills, are used to perform white-box testing.
Disadvantages of white-box testing
Technical knowledge The tester must have knowledge of the system and required: programming skills due to the complexity of the testing. Limited scope: Functionality and usability are untested. Tests focus on the software as it exists, and missing functionality may not be discovered. Expensive and White-box testing is time intensive and therefore can be time consuming: expensive for the organization to hire skilled testers.
Define: Testing
Testing is investigating a computer system to find flaws, discrepancies or errors. There are various types of testing that can be applied to various parts of the development process.
Testing systems
Testing is necessary at every stage of development and installation. Inadequate testing can reduce employee productivity and lead to end-user dissatisfaction.
Testing phases
Unit testing ⇒ Integration testing ⇒ System testing ⇒ Alpha testing ⇒ Beta testing
Automated testing
Used when there are tests that can't be accomplished by manual testing because they would consume too much time and resources.
Testing methodologies
White-box testing Tests the internal structures and algorithms of an application through code analysis. Black-box testing Testing that examines the functionality of an application using a set of test inputs.
Beta testing
Beta testing comes after alpha testing and can be considered a form of external user acceptance testing. Versions of the software, known as beta versions, are released to a limited audience outside of the programming team known as beta testers. The software is released to groups of people so that further testing can ensure the product has few faults or bugs. Beta versions can be made available to the open public to increase the feedback field to a maximal number of future users and to deliver value earlier, for an extended or even indefinite period of time (perpetual beta) The software is released to users outside the company who can try it out in a range of different environments. Is usually released to a limited number of end-users to obtain feedback on system quality. Reduces failure risks and increases the quality through customer validation. Is conducted when the software is close to being ready for release, has complete functionality and when the developers believe that there are few or no errors.
Advantages of white-box testing
Code optimization: Facilitates the removing of unnecessary code and the finding of hidden errors in early phases of development. Efficiency: Two algorithms can solve the same problem correctly but have very different efficiencies (e.g. Binary Search and Sequential Search). By examining the code, white-box testing can find where needless inefficiencies are. Thoroughness: Looking at the actual code can find potential causes of errors that black-box testing could miss.
Benefits of Unit testing
Early detection: Problems are found early in the development cycle, making it easier to fix them. Modular detection: Unit testing allows code to be changed within a small unit (sub-part) of the system and then easily tested again without retesting entire systems. This simplifies the process of integration with other units because they have been thoroughly tested.
Black-box testing
Focuses on the functionality of a system, as opposed to internal system structures or working.Can be applied to virtually every phase of testing.
Disadvantages of black-box testing
Limited by test: The tests are only as good as the test data. It may not test all cases: functionality thoroughly. Creating the test can also be time Consuming. Interface issues: Realistic Graphical User Interface (GUI) interactions may be difficult to simulate and test with scripts. Limited scope: Test only cover application functionality; they do not evaluate the efficiency of the system's code or the system's usability.