Software Testing Base for Testing. www.BugHuntress.com Designed by Artyom Rozumenko
www.BugHuntress.com Designed by Artyom Rozumenko Testing methods
Black Box Testing
White Box Testing
Gray Box Testing
www.BugHuntress.com Designed by Artyom Rozumenko Testing methods Black Box Black box testing treats the software as a black-box without any understanding of internal behavior. It aims to test the functionality according to the requirements. Thus, the tester inputs data and only sees the output from the test object. This level of testing usually requires thorough test cases to be provided to the tester who then can simply verify that for a given input, the output value (or behavior), is the same as the expected value specified in the test case. Black box testing methods include: equivalence partitioning , boundary value analysis , all-pairs testing , fuzz testing , model-based testing , traceability matrix etc .
www.BugHuntress.com Designed by Artyom Rozumenko Testing methods White Box White box testing , however, is when the tester has access to the internal data structures, code, and algorithms. White box testing methods include creating tests to satisfy some code coverage criteria. For example, the test designer can create tests to cause all statements in the program to be executed at least once. Other examples of white box testing are mutation testing and fault injection methods. White box testing includes all static testing.
www.BugHuntress.com Designed by Artyom Rozumenko Testing methods Gray Box Grey Box Testing . This involves having access to internal data structures and algorithms for purposes of designing the test cases, but testing at the user, or black-box level. Manipulating input data and formatting output do not qualify as grey-box because the input and output are clearly outside of the black-box we are calling the software under test. This is particularly important when conducting integration testing between two modules of code written by two different developers, where only the interfaces are exposed for test. Grey box testing may also include reverse engineering to determine, for instance, boundary values.
www.BugHuntress.com Designed by Artyom Rozumenko www.BugHuntress.com Designed by Artyom Rozumenko Testing methods Special methods Special methods exist to test non-functional aspects of software. Performance testing checks to see if the software can handle large quantities of data or users . Usability testing is needed to check if the user interface is easy to use and understand. Security testing is essential for software which processes confidential data and to prevent system intrusion by hackers . To test internationalization and localization aspects of software a pseudo-localization method can be used.
www.BugHuntress.com Designed by Artyom Rozumenko Types of testing
Graphic User Interface testing
www.BugHuntress.com Designed by Artyom Rozumenko Types of testing Installation testing Installation testing is a kind of quality assurance work in the software industry that focuses on what customers will need to do to install and set up the new software successfully. The testing process may involve full, partial or upgrades install/uninstall processes. The simplest installation approach is to run an install program, sometimes called package software . This package software typically uses a setup program which acts as a multi-configuration wrapper and which may allow the software to be installed on a variety of machine and/or operating environments. Every possible configuration should receive an appropriate level of testing so that it can be released to customers with confidence.
www.BugHuntress.com Designed by Artyom Rozumenko Types of testing Smoke testing In software engineering , a smoke test generally consists of a collection of tests that can be applied to a newly created or repaired computer program . Sometimes the tests are performed by the automated system that builds the final software. In this sense a smoke test is the process of validating code changes before the changes are checked into the larger product’s official source code collection. Next after code reviews , smoke testing is the most cost effective method for identifying and fixing defects in software; some even believe that it is the most effective of all.
www.BugHuntress.com Designed by Artyom Rozumenko Types of testing Functional testing Functional testing is actually done to the entire system against the Functional Requirement Specification(s) (FRS) and/or the System Requirement Specification (SRS). Moreover, the system testing is an investigatory testing phase, where the focus is to have almost a destructive attitude and test not only the design, but also the behaviour and even the believed expectations of the customer. It is also intended to test up to and beyond the bounds defined in the software/hardware requirements specification(s). One could view Functional testing as the final destructive testing phase before user acceptance testing .
www.BugHuntress.com Designed by Artyom Rozumenko Types of testing Regression testing Regression testing is any type of software testing which seeks to uncover regression bugs . Regression bugs occur whenever software functionality that previously worked as desired, stops working or no longer works in the same way that was previously planned. Typically regression bugs occur as an unintended consequence of program changes. Common methods of regression testing include re-running previously run tests and checking whether previously fixed faults have re-emerged Types of Regression -Local - changes introduce new bugs. -Unmasked - changes unmask previously existing bugs. -Remote - Changing one part breaks another part of the program. For example, Module A writes to a database. Module B reads from the database. If changes to what Module A writes to the database break Module B, it is remote regression.
www.BugHuntress.com Designed by Artyom Rozumenko Types of testing Integration testing Integration testing (sometimes called Integration and Testing, abbreviated I&T ) is the phase of software testing in which individual software modules are combined and tested as a group. It follows unit testing and precedes system testing . Integration testing takes as its input modules that have been unit tested , groups them in larger aggregates, applies tests defined in an integration test plan to those aggregates, and delivers as its output the integrated system ready for system testing .
www.BugHuntress.com Designed by Artyom Rozumenko Types of testing GUI testing In computer science , GUI software testing is the process of testing a product that uses a graphical user interface , to ensure it meets its written specifications. This is normally done through the use of a variety of test cases . Most clients in client/server and web-based systems deliver system functionality using a graphical user interface (GUI). When testing complete systems, the tester must grapple with the additional functionality provided by the GUI. GUIs make testing systems more difficult for many reasons: the event-driven nature of GUIs, unsolicited events, many ways in/many ways out and the infinite input domain problems make it likely that the programmer has introduced errors because he could not test every path.
www.BugHuntress.com Designed by Artyom Rozumenko Types of testing Performance testing In software engineering , performance testing is testing that is performed, from one perspective, to determine how fast some aspect of a system performs under a particular workload. It can also serve to validate and verify other quality attributes of the system, such as scalability, reliability and resource usage. Performance testing is a subset of Performance engineering , an emerging computer science practice which strives to build performance into the design and architecture of a system, prior to the onset of actual coding effort. Performance testing can serve different purposes. It can demonstrate that the system meets performance criteria. It can compare two systems to find which performs better. Or it can measure what parts of the system or workload cause the system to perform badly.
www.BugHuntress.com Designed by Artyom Rozumenko Types of testing Load Testing Load testing generally refers to the practice of modeling the expected usage of a software program by simulating multiple users accessing the program's services concurrently. As such, this testing is most relevant for multi-user systems, often one built using a client/server model, such as web servers. However, other types of software systems can be load-tested also. For example, a word processor or graphics editor can be forced to read an extremely large document; or a financial package can be forced to generate a report based on several years' worth of data. The most accurate load testing occurs with actual, rather than theoretical, results.
www.BugHuntress.com Designed by Artyom Rozumenko Types of testing Stress testing In software testing , stress testing often refers to tests that put a greater emphasis on robustness , availability , and error handling under a heavy load, rather than on what would be considered correct behavior under normal circumstances. In particular, the goals of such tests may be to ensure the software doesn't crash in conditions of insufficient computational resources (such as memory or disk space ), unusually high concurrency , or denial of service attacks. Examples: A web server may be stress tested using scripts , bots , and various denial of service tools to observe the performance of a web site during peak loads.
www.BugHuntress.com Designed by Artyom Rozumenko Types of testing Configuration testing The process of testing a system with each of the configurations of software and hardware that are supported.
www.BugHuntress.com Designed by Artyom Rozumenko Types of testing Usability testing Usability testing is a technique used to evaluate a product by testing it on users. This can be seen as an irreplacable usability practise, since it gives direct input on how real users use the system. This is in contrast with usability inspection methods where experts use different methods to evaluate a user interface without involving users. Usability testing focuses on measuring a human-made product's capacity to meet its intended purpose. Examples of products that commonly benefit from usability testing are web sites or web applications, computer interfaces , documents, or devices. Usability testing measures the usability, or ease of use, of a specific object or set of objects, whereas general human-computer interaction studies attempt to formulate universal principles.
www.BugHuntress.com Designed by Artyom Rozumenko Types of testing Internationalization and Localization testing In computing , Internationalization and localization (also spelled internationalisation and localisation , see spelling differences ) are means of adapting computer software for non-native environments, especially other nations and cultures. Internationalization is the process of designing a software application so that it can be adapted to various languages and regions without engineering changes. Localization is the process of adapting software for a specific region or language by adding locale-specific components and translating text. Due to their length, the terms are frequently abbreviated to i18n (where 18 stands for the number of letters between the i and the n in internationalization , a usage coined at DEC in the 1970s or 80s  ) and L10n respectively. The capital L on L10n helps to distinguish it from the lowercase i in i18n.