SE 2 TEST 1
Load testing:
Aka endurance testing or volume testing. Under this testing, a constantly and steadily increasing load is applied on the system till it reaches the threshold limit. This test mainly determines the system on its robustness and error handling under extremely heavy load conditions. -Main objective of load testing is to identify the defects that affect the application's performance negatively. The defects can be related to memory leak, memory mismanagement or buffer overflow.
Stress testing
Is done to decide the level of stress required to break down a system. During festival time, an online shopping site may witness a spike in traffic, or when it announces a sale. - performed to check the behavior of an application after its failure.
Equivalence partitioning:
It is a software test design technique that involves dividing input values into valid and invalid partitions and selecting representative values from each partition as test data.
Cause-Effect Graphing:
It is a software test design technique that involves identifying the cases (input conditions) and effects (output conditions), producing a Cause-Effect Graph, and generating test cases.
Boundary Value Analysis:
It is a software test design technique that involves the determination of boundaries for input values and selecting values that are at the boundaries and just inside/ outside of the boundaries as test data.
Black box testing/ behvioral testing
It is a software testing method in which the internal structure/design/implementation of the item being tested is not known to the tester.
recovery testing
It is the forced failure of the software in a variety of ways to verify that recovery is properly performed.
Big Bang Advantages
Makes sense when you need to test small systems. all integrations are done before starting the integration tests
Regression Testing
Re-execution of some subset of tests that have already been conducted to ensure that changes have not propagated unintended side effects. -Regression testing helps to ensure that changes (due to testing or for other reasons) do not introduce unintended behavior or additional errors.
Exhaustive testing
Test approach in which all possible data combinations are used testing. Exploratory testing includes implicit data combinations present in the state of the software/ data at the start of testing.
Software Testing
Testing is the process of exercising a program with the specific intent of finding errors prior to delivery to the end user.
Operability
The better it works, the most efficiently it can be tested
Controllability
The better we can control the software, the more the testing can be automated and optimized.
Acceptance testing
The customer performs a series of specific tests in an attempt to uncover errors before accepting the software from the developer.
Cyclomatic complexity
The number of independent paths in the basis set of a program provides an upper bound for the number of tests that must be conducted to ensure that all statements have been executed at least once.
Simplicity
The program should exhibit functional simplicity (e.g., the feature set is the minimum necessary to meet requirements); structural simplicity (e.g., architecture is modularized to limit the propagation of faults), and code simplicity (e.g., a coding standard is adopted for ease of inspection and maintenance).
Integration testing
To verify whether the functional and non functional behaviors of the interfered are as designed and specified, to build confidence in the quality of the interfaces, to find defects
White box: branch testing
Uses a model of the program's flow nit is designed in order to execute (each) outcome of all or selected decision points in a test object
Observability
What you see is what you test. Inputs provided as part of testing produce distinct outputs. System states and variables are visible or queriable during execution.
stress testin
executes a system in a manner that demands resources in abnormal quantity, frequency, or volume
Deployment testing
exercises the software in each environment in which it is to operate
Stability
few changes are requested during testing
Alpha beta testing
focus is on customer usage
system testing
focus is on system integration
Good Test
has high probability of finding an error, not redundant, should be best of breed, should not be too simple or complex
server side application security
involves making sure that the server code and its technologies are robust enough to fend off any intrusion
System testing
is the testing of a complete and fully integrated software product
Compound logic
nA separate node is created for each of the conditions a and b in the statement IF a OR b. Each node that contains a condition is called a predicate node and is characterized by two or more edges emanating from it.
Validation testing
nValidation testing is the process of ensuring if the tested and developed software satisfies the client /user needs. The business requirement logic or scenarios have to be tested in detail. All the critical functionalities of an application must be tested here.
Validation
refers to a different set of tasks that ensure that the software that has been built is traceable to customer requirements. "Are we building the right product?"
Verification
refers to the set of tasks that ensure that software correctly implements a specific function "Are we building the product right?"
Attribute of performance testing
speed, scalability, stability, reliability
performance testing
test the run time performance of software within the context of an integrated system
Understandability
the more information we have, the smarter we will test
Errors often occur when:
the nth element of an n dimensional array is processed, when the ith repetition of a loop with i passes is invoked, when the max or min allowable value is encountered
system software security
this involves assessing weaknesses in the various software
security testing
verifies that protection mechanisms built into the system will protect it from improper penetration
White box testing (structural)
•Goal is to ensure that all statements and conditions have been executed at least once •The focus is not design or implementation •The focus is on the logic of implementation
Basis path testing
Basis path testing, a structured testing or white box testing technique used for designing test cases intended to examine all possible paths of execution at least once. Creating and executing tests for all possible paths results in 100% statement coverage and 100% branch coverage.
Decomposability
By controlling the scope of testing, we can more quickly isolate problems and perform smarter retesting. The software system is built from independent modules that can be tested independently.
client side application security
deals with ensuring that the client cannot be manipulated
Stubs
- used in top down integration -stubs are used when sub programs are under development -top most module is tested first -it can simulate the behavior of lower level modules that are not integrated - called programs
Strategic Approach
-Conduct effective technical reviews, test, debug
Big Bang Disadvantages
-Consumes the integration testing time -this technique is not relevant to large and complex systems - very difficult to trace the root cause of failures (interfaces are not isolated during the tests)
Top Down cons
-Drivers are more difficult to write than stub -Design defects are caught in the later stage nIn this approach, we do not have working application until the last module is built
Top down pros:
-Early exposure of architecture defects -It outlines the working of an application as a whole in early stages and helps in early disclosure of design defects -Main control points are tested early
Sandwhich testing strategy Cons
-Higher cost due to involvement of both top-down and bottom-up testing methodology -This type of testing is not advised for a system where modules are highly inter-dependent
Sandwich testing strategy
-In this approach a system is integrated using a mix of top-down, bottom-up, and big-bang approaches -A hierarchical system is viewed as consisting of three layers -The bottom-up approach is applied to integrate the modules in the bottom-layer -The top layer modules are integrated by using top-down approach -The middle layer is integrated by using the big-bang approach after the top and the bottom layers have been integrated
Bottom up integration
-Low-level components are combined into clusters (sometimes called builds) that perform a specific software subfunction. -A driver (a control program for testing) is written to coordinate test case input and output. -The cluster is tested. -Drivers are removed and clusters are combined moving upward in the program structure.
Top down Cons
-Significant modules are tested late in cycle nIt is very challenging to write test conditions -A stub is not a perfect implementation of related Module. It just simulates the data flow between two modules
Top Down Integration
-The main control module is used as a test driver and stubs are substituted for all components directly subordinate to the main control module. -Depending on the integration approach selected (i.e., depth or breadth first), subordinate stubs are replaced one at a time with actual components. -Tests are conducted as each component is integrated. -On completion of each set of tests, another stub is replaced with the real component. nRegression testing (discussed later in this section) may be conducted to ensure that new errors have not been introduced.
Bottom down pros
-To start testing at the bottom level of hierarchy means testing of critical modules or functionality at an early stage. This helps in early discovery of errors -More useful for integrating object-oriented systems
White box
-Using the white-box testing techniques, a software engineer can design test cases that -exercise independent paths within a module or unit; -exercise logical decisions on both their true and false side; -execute loops at their boundaries and within their operational bounds -exercise internal data structures to ensure their validity
Drivers
-used in bottom up integration testing -used when main programs are under development -lowest module is tested first -it can simulate the behavior of upper level modules that are not integrated
Smoke testing
A common approach for creating "daily builds" for product software. -Smoke testing steps: nSoftware components that have been translated into code are integrated into a "build." •A build includes all data files, libraries, reusable modules, and engineered components that are required to implement one or more product functions. nA series of tests is designed to expose errors that will keep the build from properly performing its function. •The intent should be to uncover "show stopper" errors that have the highest likelihood of throwing the software project behind schedule. nThe build is integrated with other builds and the entire product (in its current form) is smoke tested daily. •The integration approach may be top down or bottom up.
Big Bang approach
Combining all the modules once and verifying the functionality after completion of individual module testing. - Big Bang Integration Testing, the individual modules are not integrated until all the modules are ready. Then they will run to check whether it is performing well. -In this type of testing, some disadvantages might occur like, defects can be found at the later stage. -It would be difficult to find out whether the defect arouse in interface or in module.
Boundary value analysis
Is a technique to refine equivalence partitioning, Concentrate on cases at the extreme ends of each equivalence class.
Validation Testing
Focus is on software requirements
Network security
Involves looking for vulnerabilities in the network infrastructure
Independent tester
Must learn about the system but will attempt to break it and is driven by quality.
Developer
Understands the system but will test gently and is driven by delivery
beta test
conducted at one or more end user sites. the developer is not present
Alpha test
conducted at the developers site by a representaive group of end users