1
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram UNIT VSOFTWARE QUALITY AND TESTING:
Software Quality Assurance- Quality metrics - Software Reliability - Software testing - Path testing – Control Structures testing - Black Box testing - Integration, Validation and system testing - Reverse Engineering and Reengineering.
CASE tools –projects management, tools - analysis and design tools – programming tools - integration and testing tool - Case studies.
Software Quality Assurance:
• Software quality assurance (SQA) means, monitoring the software engineering processes and methods used to ensure quality.
OR
• Software quality assurance (SQA) is a process that ensures that developed software meets and complies with defined or standardized quality specifications.
• SQA is an ongoing process within the software development life cycle (SDLC) that routinely checks the developed software to ensure it meets desired quality measures.
Elements of software quality assurance:
Software quality assurance encompasses a broad range of concerns and activities that focus on the management of software quality. These can be summarized in the following manner.
Standards:
The IEEE, ISO, and other standards organizations have produced a broad collection of software engineering standards and related documents.
Standards may be adopted voluntarily by a software engineering organization or imposed by the customer or other stakeholders.
The job of SQA is to ensure that standards that have been adopted are followed.
Reviews and audits:
Technical reviews are a quality control activity performed by software engineers. Their intention is to uncover errors.
2
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram Testing:Software testing is a quality control function, that has one primary goal i.e.to find errors.
The job of SQA is to ensure that testing is properly planned and efficiently conducted so that it has the highest likelihood of achieving its primary goal.
Error/defect collection and analysis:
The only way to improve is to measure how you’re doing. SQA collects and analyzes error and defect data to better understand how errors are introduced and what software engineering activities are best suited to eliminating them.
Change management:
Change is one of the most disruptive (disturbing) aspects of any software project. If it is not properly managed, change can lead to confusion, and confusion almost always leads to poor quality.
Education:
Every software organization wants to improve its software engineering practices. A key contributor to improvement is education of software engineers, their managers, and other stakeholders.
The SQA organization takes the lead in software process improvement of educational programs.
Security management:
With the increase in cyber crime and new government regulations regarding privacy, every software organization should institute (establish) policies to protect data at all levels.
SQA ensures that appropriate process and technology are used to achieve software security.
Safety:
Because software is almost always a pivotal (essential) component of human rated systems (e.g., automotive or aircraft applications), the impact of hidden defects can be catastrophic (terrible).
3
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram Risk management:Although the analysis and easing of risk is the concern of software engineers, the SQA organization ensures that risk management activities are properly conducted and that risk-related possibility plans have been established.
******************************************************************************
Software Quality metrics
Software quality metrics are a subset of software metrics that focus on the quality aspects of the product, process, and project. In general, software quality metrics are more closely associated with process and product metrics than with project metrics.
Quality metrics are a key component of an effective quality management plan and are the measurements used in ensuring customers to receive acceptable products or deliverables.
The three types of metrics you should collect as part of your quality assurance process are:
• Source code metrics,
• Development metrics,
• Testing metrics.
Source code metrics
These are measurements of the source code that make up all your software. Source code is the fundamental building block of which your software is made, so measuring it is key to making sure your code is high-caliber.
Development metrics
• These metrics measure the software development process itself.
• Measuring number of defects within the code and time to fix them tells a lot about the development process itself.
Testing metrics
These metrics help you evaluate how functional your product is. There are two major testing metrics.
• One of them is “test coverage” that collects data about which parts of the software program are executed when it runs a test.
• The second part is a test of the testing itself. It’s called “defect removal efficiency,” and it checks your success rate for spotting and removing defects.
4
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram Software reliability and availability:Software reliability is defined in statistical terms as "the probability of failure-free operation of a computer program in a specified environment for a specified time".
Measures of Reliability and Availability:
Most hardware-related reliability models are predicated on failure due to wear rather than failure due to design defects.
In hardware, failures due to physical wear (e.g., the effects of temperature, corrosion, shock) are more likely than a design-related failure.
Unfortunately, the opposite is true for software. In fact, all software failures can be traced to design or implementation problems;
A simple measure of reliability is meantime-between-failure (MTBF),
Where
MTBF = MTTF + MTTR
Where, MTTF and MTTR are mean-time-to-failure and mean-time-to-repair, respectively.
Software Availability:
In addition to a reliability measure, we must develop a measure of availability.
Software availability is the probability that a program is operating according to requirements at a given point in time and is defined as availability.
Availability = [MTTF/(MTTF + MTTR)] 100% .
The MTBF reliability measure is equally sensitive to MTTF and MTTR. The availability measure is somewhat more sensitive to MTTR, an indirect measure of the maintainability of software.
******************************************************************************
Software Testing:
Testing is a process of executing a program with the intent of finding error. Software Testing are contains two types:
1) Manual Testing and,
5
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram 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. To ensure completeness of testing, the tester often follows a written test plan that leads them through a set of important test cases
Drawbacks of Manual Testing
Time consuming.
More resources required.
Human Errors
Repetition of the Task
Tiredness
Simultaneous auctions are not possible (Parallel)
Automation testing:
Automation testing is an Automatic technique where the tester writes scripts by own and uses suitable software to test the software.
In other word, Automation testing uses automation tools to write and execute test cases, no manual involvement is required while executing an automated test suite.
****************************************************************************** What is Validation?
• Definition: Validation is process of examining whether or not the software satisfies the user requirements. It is carried out at the end of the SDLC. If the software matches requirements for which it was made, it is validated.
• Validation is the process of evaluating the final product to check whether the software meets the customer expectations and requirements.
• Validation: "Is the right software being developed?"
What is Verification?
• Definition : Verification is the process of confirming if the software is meeting the business requirements, and is developed adhering to the proper specifications and methodologies.
• Verification: ”Is the software being developed in the right way?”
6
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram What is Black-box testing?• It is carried out to test functionality of the program. It is also called ‘Behavioral’ testing. The tester in this case, has a set of input values and respective desired results. On providing input, if the output matches with the desired results, the program is tested ‘ok’, and problematic otherwise.
• In this testing method, the design and structure of the code are not known to the tester, and testing engineers and end users conduct this test on the software.
What is White-box testing?
• It is conducted to test program and its implementation, in order to improve code efficiency or structure. It is also known as ‘Structural’ testing.
• In this testing method, the design and structure of the code are known to the tester. Programmers of the code conduct this test on the code.
******************************************************************************
Organizing for software testing or Software testing strategy
• The ITG is part of the software development project team in the sense that it becomes involved during the specification process and stays involved (planning and specifying test procedures) throughout a large project.
• The software developer is always responsible for testing the individual units (modules) of the program.
7
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram A Software Testing StrategyThe software engineering process may be viewed as a spiral.
Initially system engineering defines the roll of software and leads to software requirements and analysis, where the information domain, function, behavior, performance, constraints, and validation criteria for software are established. Moving inward along the spiral, we come to design and finally to coding.
The strategy for software testing may also be viewed in the context of the spiral.
Unit testing:
It begins at the vortex of the spiral and concentrates on each unit of the software as implemented in source code.
It falls under the class of white box testing.
It is often done by the programmer to test that the unit has implemented is producing expected output against given input.
Integration testing
Integration testing is a testing in which a group of components are combined to produce output.
Also, the interaction between software and hardware is tested in integration testing if software and hardware components have any relation.
It may fall under both white box testing and black box testing.
8
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram Validation testingTalking another turn toward on the spiral, we encounter Validation testing where requirements established as part of software requirements analysis are validated against the software that has been constructed.
Validation testing provides final assurance that software needs all functional, behavioral and performance requirements. Black-box testing techniques are used exclusively during validation.
System Testing (ST)
System Testing is a black box testing technique performed to evaluate the complete system against specified requirements. In System testing, the functionalities of the system are tested from an end-to-end perspective.
System Testing is usually carried out by a team that is independent of the development team in order to measure the quality of the system.
******************************************************************************
Path Testing
In software testing, there are many paths between the entry and exit of a software program. So it’s difficult to fully test all paths of even a simple unit. This is a challenge when we design test cases. We need to eliminate redundant tests by providing adequate test coverage for effective testing. One of the ways to do so, we can apply a method called basis path testing.
Path testing is an approach to testing where we ensure that every path through a program has been executed at least once.
The basis path testing is a white box method for designing test cases. The method was first proposed by McCabe in 1980's.
It is a hybrid of path testing and branch testing methods. Path testing is designed to execute all or selected paths through a computer program. And branch testing is designed to execute each outcome from each decision point in a computer program.
Thus, basis path testing analyzes the control flow graph of the program and uses McCabe Cyclomatic complexity to determine the number of independent paths to generate test cases for each path.
9
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram Below are the steps of this technique:Draw a control flow graph.
Determine Cyclomatic complexity.
Find a basis set of paths.
Generate test cases for each path.
Step 1: Draw a control flow graph Basic control flow graph structures:
On a control flow graph, we can see that:
Arrows or edges represent flows of control.
Circles or nodes represent actions.
Areas bounded by edges and nodes are called regions.
A predicate node is a node containing a condition.
10
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram Step 2: Determine Cyclomatic complexityCyclomatic complexity is a software metric used to indicate the complexity of a program. It is a measure of the number of linearly independent paths.
There are several different methods to calculate Cyclomatic complexity:
1. Cyclomatic complexity = edges - nodes + 2p
Where p = number of unconnected parts of the graph.
From the example in Step 1we see that the graph has 8 edges and7 nodes, and the number of unconnected parts of the graph is 1 so the Cyclomatic complexity = 8-7+ 2*1= 3.
2. Cyclomatic complexity= Number of Predicate Nodes + 1
From the example in Step 1, there are two predicate nodes in the graph. So the Cyclomatic complexity = 2+1= 3.
3. Cyclomatic complexity =number of regions in the control flow graph
Follow our example; we have three regions in the control flow graph as below
So the Cyclomatic complexity = 3.
Step 3: Find a basis set of paths
The Cyclomatic complexity tells us the number of paths to evaluate for basis path testing. In the example, we have 3 paths, and our basis set of paths is:
11
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram Step 4: Generate test cases for each pathAfter determining the basis set of path, we can generate the test case for each path. Usually we need at least one test case to cover one path. In the example, however, Path 3 is already covered by Path 1 and 2 so we only need to write 2 test cases. In conclusion, basis path testing helps us to reduce redundant tests. It suggests independent paths from which we write test cases needed to ensure that every statement and condition can be executed at least one time.
******************************************************************************
Graph matrix:
Graph matrix is used to develop software tool that in turn helps in carrying 'out basis path testing. It is defined as a data structure used to represent the flow graph of a program in a tabular form. This matrix is also used to evaluate the control structures present in the program during testing.
Graph matrix is a square matrix of the size NxN, where Nis the number of nodes in the flow graph.
An entry is made in the matrix at the intersection of ith row and jth column if there exists an edge between ith and jth node in the flow graph. Every entry in the graph matrix is assigned some value known as link weight.
Adding link weights to each entry makes the graph matrix a useful tool for evaluating the control structure of the program during testing.
In the flow graph, numbers and letters are used to identify each node and edge respectively.
12
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram For example, node 3 is connected to the node 6 by edge d and node 4 is connected to node 2 by edge c, and so on.******************************************************************************
Control Structure Testing
The basis path testing technique d is one of a number of techniques for control structure testing. Although basis path testing is simple and highly effective, it is not sufficient in itself.
Control structure testing is a group of white-box testing methods.
Branch Testing
Condition Testing
Data Flow Testing
Loop Testing
Branch Testing or Decision Testing
Definition: "For every decision, each branch needs to be executed at least once."
A branch is the outcome of a decision, so branch testing simply measures which decision outcomes have been tested. In this testing it takes a more in-depth view of the source code.
This example has two branches to be executed:
IF ( a equals b) THEN
statement 1
ELSE
statement 2
END IF
This examples also has just two branches to be executed, despite the compound conditional:
IF ( a equals b AND c less than d ) THEN
statement 1
ELSE
statement 2
13
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram Condition TestingCondition testing is a test construction method that focuses on exercising the logical conditions in a program module.
In condition testing, the test cases are derived to determine whether the logical conditions and decision statements are free from errors.
Errors in conditions can be due to:
Boolean operator error
Boolean variable error
Boolean parenthesis error
Relational operator error
Arithmetic expression error
The common types of logical conditions that are tested using condition testing are listed below.
1. A relational expression such as E1 op E2, where E1 and E2 are arithmetic expressions and op is a relational operator.
2. A simple condition such as any relational expression proceeded by a NOT (~) operator. For example, (~E1), where E1 is a relational expression.
3. A compound condition, which is formed by combining two or more simple conditions using Boolean operators.
For example, (E1 && E2) || (E2 && E3), where El, E2, and E3 are relational expressions and && and || represent AND and OR operators respectively.
4. A Boolean expression consisting of operands and a Boolean operator such as AND, OR, or NOT.
For example, A&B is a Boolean expression, where A and B are operands and ‘&’ represents Boolean AND operator.
Data flow testing
Data flow testing is a technique used to detect improper use of data in a program. By looking data usage, risky areas of code can be found and more test cases can be applied. To test data flow we advise control flow graph. A data-flow graph (DFG) is a graph which represents data dependencies between a numbers of operations.
Loop Testing
14
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram Simple loop:Refers to a loop that has no other loops in it. Consider a simple loop of size n. Size n of the loop indicates that the loop can be traversed n times, that is, n number of passes are made through the loop.
The steps followed for testing simple loops are listed below.
• Skip the entire loop.
• Traverse the loop only once.
• Traverse the loop two times.
• Make m number of passes through the loop, where m < n.
• Traverse the loop n - I, n, n + 1 times.
Nested loops
Loops within loops are known as nested loops. The numbers of tests required for testing nesting loops depends on the level of nesting.
• A nested loop starts at the innermost loop.
15
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram • Work outward.• Continue until the outermost loop has been tested.
Concatenated loops
The loops containing several loops that may be dependent or independent are known as concatenated loop.
1. In case the loops are dependent on each other, the steps in nested loops are followed.
2. On the other hand, if the loops are independent of each other, the steps in simple loops are followed.
Unstructured loops
Such loops are difficult to test; therefore, they should be redesigned so that the use of structured programming constructs can be reflected.
******************************************************************************
Black-box testing
• It is carried out to test functionality of the program. It is also called ‘Behavioral’ testing. The tester in this case, has a set of input values and respective desired results. On providing input, if the output matches with the desired results, the program is tested ‘ok’, and problematic otherwise.
• In this testing method, the design and structure of the code are not known to the tester, and testing engineers and end users conduct this test on the software.
• Tester only passes valid as well as invalid inputs & determines the correct expected outputs. All the test cases to test using such method are calculated based on requirements & specifications document.
• The main purpose of the Black Box is to check whether the software is working as per expected in requirement document & whether it is meeting the user expectations or not. • There are different types of testing used in industry. Each testing type is having its own
16
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram Types of Black-Box TestingFollowing black box testing techniques are used for testing the software application.
• Graph based testing methods
• Error Guessing
• Boundary Value Analysis (BVA)
• Equivalence Class Partitioning
Graph Based Testing Methods:
Each and every application is build up of some objects. All such objects are identified and graph is prepared. From this object graph each object relationship is identified and test cases written accordingly to discover the errors.
Error Guessing:
This is purely based on previous experience and judgment of tester. Error Guessing is the art of guessing where errors can be hidden. For this technique there are no specific tools, writing the test cases that cover all the application paths.
Boundary Value Analysis (BVA):
Boundary Value Analysis is the most commonly used test case design method for black box testing. As all we know the most of errors occurs at boundary of the input values. This is one of the techniques used to find the error in the boundaries of input values rather than the center of the input value range.
Boundary Value Analysis is the next step of the Equivalence class in which all test cases are design at the boundary of the Equivalence class.
Let us take an example to explain this:
17
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram Here are the Test cases for input box accepting numbers using Boundary value analysis:This is testing techniques is not applicable, if input value range is not fixed i.e. the boundary of input is not fixed.
Equivalence Class Partitioning
The equivalence class partition is the black box test case design technique used for writing test cases. This approach is use to reduce huge set of possible inputs to small but equally effective inputs. This is done by dividing inputs into the classes and gets one value from each class. Such method is used when exhaustive testing is most wanted & to avoid the redundancy of inputs.
In the equivalence partitioning input are divided based on the input values:
If an input condition specifies a range,
One valid and two invalid equivalence classes are defined.
If an input condition requires a specific value,
One valid and two invalid equivalence classes are defined.
If an input condition specifies a member of a set,
One valid and one invalid equivalence class are defined.
If an input condition is Boolean,
One valid and one invalid class are defined.
18
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram The Differences between Black Box Testing and White Box Testing are listed below.Criteria Black Box Testing White Box Testing
Definition Black Box Testing is a software testing method in which the internal structure/ design/ implementation of the item being tested is NOT known to the tester
White Box Testing is a software testing method in which the internal structure/ design/ implementation of the item being tested is known to the tester. Levels
Applicable To
Mainly applicable to higher levels of testing: Acceptance Testing, System Testing
Mainly applicable to lower levels of testing: Unit Testing, Integration Testing
Responsibility Generally, independent Software Testers
Generally, Software Developers
Programming Knowledge
Not Required Required
Implementation Knowledge
Not Required Required
Basis for Test Cases
Requirement Specifications Detail Design
******************************************************************************
Integration testing
• Once all the individual units are created and tested, we start combining those “Unit Tested” modules and start doing the integrated testing. So the meaning of Integration testing is quite straight forward- Integrate/combine the unit tested module one by one and test the behavior as a combined unit.
• The main function or goal of Integration testing is to test the interfaces between the units/modules.
The integration testing techniques:
Big Bang integration testing
Top-down integration testing
19
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram 1. Big Bang integration testingIn Big Bang integration testing all components or modules are integrated simultaneously, and tested as a whole. As per the below image all the modules from ‘Module 1’ to ‘Module 6’ are integrated simultaneously then the testing is carried out.
Advantage:
Big Bang testing has the advantage that everything is finished before integration testing starts.
Disadvantage:
The major disadvantage is that in general it is time consuming and difficult to trace the cause of failures because of this late integration.
Bottom up approach
20
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram {No need to write in exam{{{In this case, modules B1C1, B1C2 & B2C1, B2C2 are the lowest module which is unit tested. Module B1 & B2 are not yet developed. The functionality of Module B1 and B2 is that, it calls the modules B1C1, B1C2 & B2C1, B2C2. Since B1 and B2 are not yet developed, we would need some program or a “stimulator” which will call the B1C1, B1C2 & B2C1, B2C2 modules. These stimulator programs are called DRIVERS.}}}}}}Components or systems are substituted by drivers.
The DRIVERS are the dummy programs which are used to call the functions of the lowest module in case when the calling function does not exists. Bottom up technique requires module driver to feed test case input to the interface of the module being tested.
Advantages
Advantage for this approach is that, if a major fault exists at the lowest unit of the program, it is easier to detect it, and corrective measures can be taken.
Disadvantage
Disadvantage is that the main program actually does not exist until the last module is integrated and tested. As a result, the higher level design flaws will be detected only at the end.
Top down approach
This technique starts from the top most module and gradually progress towards the lower modules. Only the top module is unit tested in isolation. After this, the lower modules are integrated one by one. The process is repeated until all the modules are integrated and tested.
{{{No need to write in exam{{{In the context of our figure, testing starts from Module A, and lower modules B1 and B2 are integrated one by one. Now here the lower modules B1 and B2 are not actually available for integration. So in order to test the top most modules A, we develop “STUBS”.}}}}}}.
“Stubs” can be referred to as code a snippet which accepts the inputs / requests from the top module and returns the results/ response. This way, in spite of the lower modules do not exist, we are able to test the top module.
Advantages of Top-Down approach:
The tested product is very consistent because the integration testing is basically performed in an environment that almost similar to that of reality
Disadvantages of Top-Down approach:
Basic functionality is tested at the end of cycle
21
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram System Testing:System testing is the type of testing to check the behavior of a complete and fully integrated software product based on the software requirements specification (SRS) document.
The main focus of this testing is to evaluate Business / Functional / End-user requirements.
System Testing Process can be defined in the following steps.
Function Testing:
This type of testing ignores the internal parts and focus on the output is as per requirement or not.
Performance Testing:
Performance testing is the testing to assess the speed and effectiveness of the system and to make sure it is generating results within a specified time as in performance requirements. It falls under the class of black box testing.
Acceptance Testing:
Acceptance testing is often done by the customer to ensure that the delivered product meets the requirements and works as the customer expected. It falls under the class of black box testing.
Installation Testing:
The software is deployed and tested in the production environment.
22
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram Software Re-Engineering and Reverse EngineeringWhat is Software Re-Engineering?
It is a process of software development which is done to improve the maintainability of a software system.
Technical Definition: Software Re-engineering is the examination and alteration of a system to reconstitute it in a new form.
This process encompasses a combination of sub-processes such as reverse engineering, restructuring, re-documentation, forward engineering, and retargeting.
Why do we need Software Re-Engineering
It is sometimes a cost-effective option for software system evolution.
Applicable when some (but not all) subsystems of a larger system require frequent maintenance.
It involves putting in the effort to make it easier to maintain.
Advantages of Software Re-Engineering
Re-engineering a software system has two key advantages:
Reduced risk: As the software already exists, the risk is less as compared to developing new software.
Reduced cost: The cost of re-engineering is significantly less than the costs of developing new software.
Steps involved in Software Re-Engineering 1) Source code translation
2) Reverse Engineering
3) Program structure improvement
4) Program modularization
5) Data re-engineering
1) Source code translation
It is a process of translating a source code from one programming language to another.
23
B Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::BhimavaramB Naresh, Lecturer in B V Raju College, Vishnupur::Bhimavaram 2) Reverse engineeringIt is the process of analyzing software with the objective of recovering its design and specification.
The program itself is unchanged by the reverse engineering process.
The software source code is usually available as the input.
Reverse Engineering is not the same as Re-engineering
3) Program Structure improvement
It is the process of improving the structure of the program to optimize memory use and the lack of understanding of s/w engineering.
Typically, programs develop this complex logic structure as they are modified during maintenance.
New conditions and associated actions are added without changing the existing control structure.
4) Program modularization
It is the process of reorganizing a program so that related program parts are collected together and considered as a single module.
5) Data re-engineering
It is the process of analyzing and re-organizing data structures in a system to make it more understandable.
Reverse Engineering
Reverse Engineering is the process of discovering the technological principles of a device, object, or system through analysis of its structure, function, and operation.
It often involves taking something (e.g., a mechanical device, electronic component, software program, or biological, chemical, or organic matter) apart and analyzing its workings.
In Terms of Software
To retrieve the source code of a program
To study how the program performs certain operations
To improve the performance of a program
To fix a bug
To identify malicious content in a program
1
B Naresh, Lecturer in Computer Science, B V Raju CollegeCASE TOOLS
CASE stands for Computer
maintenance of software projects with help of various automated software tools.
CASE tools are set of software application programs, which are used to automate SDLC activities. CASE tools are used by software project managers, analysts and engineers to develop software system.
There are number of CASE tools available to simplify various stages of Software Development Life Cycle such as Analysis tools, Design tools, Pr
Database Management tools, Documentation tools are to name a few.
Components of CASE Tools
CASE tools can be broadly divided into the following parts based on their use at a particular SDLC stage:
Central Repository - CASE tools req
source of common, integrated and consistent information. Central repository is a central place of storage where product specifications, requirement documents, related reports and diagrams, other useful inform
repository also serves as data dictionary.
Upper Case Tools - Upper CASE tools are used in planning, analysis and design stages of SDLC.
Lower Case Tools - Lower CASE tools are used in implementation, testing maintenance.
B Naresh, Lecturer in Computer Science, B V Raju College
omputer Aided Software Engineering. It means, development and maintenance of software projects with help of various automated software tools.
CASE tools are set of software application programs, which are used to automate SDLC activities. CASE tools are used by software project managers, analysts and engineers to develop
There are number of CASE tools available to simplify various stages of Software Development Life Cycle such as Analysis tools, Design tools, Project management tools, Database Management tools, Documentation tools are to name a few.
CASE tools can be broadly divided into the following parts based on their use at a
CASE tools require a central repository, which can serve as a source of common, integrated and consistent information. Central repository is a central place of storage where product specifications, requirement documents, related reports and diagrams, other useful information regarding management is stored. Central repository also serves as data dictionary.
Upper CASE tools are used in planning, analysis and design stages
Lower CASE tools are used in implementation, testing
B Naresh, Lecturer in Computer Science, B V Raju College
ngineering. It means, development and maintenance of software projects with help of various automated software tools.
CASE tools are set of software application programs, which are used to automate SDLC activities. CASE tools are used by software project managers, analysts and engineers to develop
There are number of CASE tools available to simplify various stages of Software oject management tools,
CASE tools can be broadly divided into the following parts based on their use at a
uire a central repository, which can serve as a source of common, integrated and consistent information. Central repository is a central place of storage where product specifications, requirement documents, related reports ation regarding management is stored. Central
Upper CASE tools are used in planning, analysis and design stages
2
B Naresh, Lecturer in Computer Science, B V Raju College Integrated Case Tools - Integrated CASE tools are helpful in all the stages of SDLC, from Requirement gathering to Testing and documentation.
CASE tools can be grouped together if they have similar functionality, process activities and capability of getting integrated with other tools.
Types of CASE TOOLS Project Management Tools
These tools are used for project planning, cost and effort estimation, project scheduling and resource planning.
A Gantt chart, Logic Network, PERT chart, Product Breakdown Structure and Work Breakdown Structure are standard tools used in project planning.
Gantt Chart
A Gantt chart is a popular project management bar chart that tracks tasks across time.
Logic Network
A Logic Network indicates the sequence of activities in a project over time. It shows which activity logically precedes or follows another activity. It can be used to identify the milestones and critical path of a project.
PERT Chart
The Program Evaluation and Review Technique, commonly abbreviated to PERT is a model for analyzing the tasks involved in completing a given project, especially the time needed to complete each task and identifying the minimum time required to complete the total project.
Product Breakdown Structure (PBS)
In project management, a Product Breakdown Structure (PBS) is an exhaustive, hierarchical tree structure of components that make up a project deliverable, arranged in whole-part relationship.
Work Breakdown Structure (WBS)
3
B Naresh, Lecturer in Computer Science, B V Raju CollegeSoftware Analysis & Design Tools
Software analysis and design includes all activities, which help the transformation of requirement specification into implementation.
Software analysis and design is the intermediate stage, which helps human-readable requirements to be transformed into actual code.
Let us see few analysis and design tools used by software designers:
Data Flow Diagram
Data flow diagram is graphical representation of flow of data in an information system. It is capable of depicting incoming data flow, outgoing data flow and stored data. The DFD does not mention anything about how data flows through the system.
Structure Charts
Structure chart is a chart derived from Data Flow Diagram. It represents the system in more detail than DFD. It breaks down the entire system into lowest functional modules, describes functions and sub-functions of each module of the system to a greater detail than DFD.
Structure chart represents hierarchical structure of modules. At each layer a specific task is performed.
Programming Tools