In the earlier decades of software development, development process is done through adhoc methodology which means people use to develop the software with out any proper planning. These results and It finally leads to increases of maintenance cost of the project, organizations are spending lot of money while maintaining because of improper planning, at that minute software engineering came into picture which will guide you in a proper way to develop software with complete planning from starting to ending. This results in decrease of maintenance cost of the project.
Software Engineering: It is a systematic approach that which will help in software development and maintain software until it becomes an error free superior product. In this SDLC will play’s a major role and it specifies systematic approach through its phases
They are Requirements Gathering AnalysisDesigningcodingTestingRelease and maintenance.
In those 6 phases Testing phase will play’s a vital role before release the software product to the customer.
What is testing?
A: Software testing the process of seeking errors.
Mod: Testing is a process of confirmation, that product is working perfectly, meeting customer requirements and satisfying the customer.
Why should we do testing?
A: Because of the cost of not testing is much greater than the cost of testing. To meet the customer requirements.
Mod: for quality assurance, error free superior product, competitive advantage
What is the need for testing in SDLC?
A: It is the assurance given to customer that our product is a quality product.
Quality: It is meeting customer requirements.
Customer requirement in terms of functionality
Customer requirement in terms of expectations
Cost to purchase
Time to release
How to do testing?
A: Software Testing is done in 2 ways
1. Manual Testing
2. Automation Testing
SDLC will help us to develop the software by using its four different models
1. Water fall model
2. Prototype model
3. Spiral model
4. Agile model
Water fall model: this model is preferred when customer requirements are clear and complete.
Prototype model: this model is preferred when customer requirement’s are not clear ,Development people will help the customer to get a clear and complete idea by preparing sample’s or prototypes through power point presentation.
Spiral Model: This is model is preferred when the product is need to be release in the form of versions for future enhancement. Eg: ver1, ver2, ver3…..
Agile model : When customer requirements are changing dynamically this model is preferred eg: cricket web site. Here customer need to be modifying the web pages at the next minute at that stage agile model is preferred.
SQA: software quality assurance : The monitoring and measuring the strength of development process is called software quality assurance. From these SQA concepts every organization is planning for multiple stages of testing and separate testing team.
Fish Model: It is a theoretical model
Requirement Analysis Design coding maintenance
[BRS] Gathering Software Requirement HLD’S and LLD’s System Testing
Specification +System Program
Reviews Review Prototype White Box Black Box Test
Program: set of instructions passed in to the computer in order to perform an operation is known as program.
Module: Collection of programs is known as module
Software Project: Collection of modules is known as Software Project.
BRS: Business Requirement specification: It defines the requirements of the customer to be developed as a software product. This document is also known as customer requirement specification or user requirement specification. Prepared by: Business Analyst
SRS or FRS: Software Requirement specification: it defines the functional requirements to be developed and system requirements to be used. It is an implemented form of BRS prepared by business analyst.
Review: It is a static testing technique. The responsible people are using this technique to estimate completeness and correctness of corresponding documents eg: walk troughs’ inspections and pre reviews.
SRS is just an English like document .It does not need dynamic testing just review is needed
Prototype: It is a sample model of an application eg: power point presentation.
HLD’s: High Level Design document which will specify the entire architecture of the system to be developed. It specify from root to leaf functionalities. It is also known as architectural design or external design.
LLD’s : Low Level Design document . The internal logic of the corresponding module or
functionality. This LLD’s are also known as detailed design or internal design documents.
Build : After completion of development, a finally integrated all program set in executable form. Prototype is a sample and build is a real.
White box testing: It is a program testing technique. During the white box testing , responsible people are verifying the internal structure of the corresponding program. This testing in also known as open box testing.
Black Box Testing: It is a build level testing. During this test, responsible people are validating the external functionality of complete software.
This Black Box testing is also known as closed box testing.
The combination of white box and black box is called grey box testing.
Software Testing: The verification of the software development process and validation of software product before release to customer is called software testing.
Reviews in analysis: In general , the software development process starts with requirements gathering and analysis. In this phase, business analyst category people will develop BRS and SRS. Before going to design, the same analyst people are conducting review meetings to estimate the completeness and correctness of that document. In this review the business analyst people are applying below check list on that BRS and SRS
1. Are they complete?
2. Are they right requirements
3. Are they Achievable
4. Are they reasonable
5. Are they testable
Reviews in design: After completion of analysis and their reviews, designing category people are developing the HLD’s and LLD’s. After development of these documents, the same category designers will conduct a review meeting to estimate the completeness and correctness of the design documents.
1. Are they understandable
2. Are they Complete
3. Are they meet right requirements
4. Are they follow able[w . r .t coding]
5. Are they handling Errors?
Unit Testing: After completion of design and their reviews, the corresponding programmers will start coding. To construct software physically in this coding stage, corresponding programmers are verifying the internal structure of every program with the help of white box testing technique. The white box testing techniques are classified into 4 divisions
1. Basis Path Testing
2. Control Structure Testing
3. Program Technique Testing
4. Mutation Testing
Basis Path Testing: After completion of program writing the corresponding programmer follows below approach to verify the execution of every statement in that program
Draw Flow Graph for Corresponding program
Calculate Cyclamate complexity [no of individual paths in the program]
run that program more than one time to cover all independent paths
Control structure Testing: After completion of program execution in different angles, the corresponding programmer is concentrating an correctness of that program functionality with the help of below coverage’s.
1. Conditional coverage
2. Data flow coverage
3. Loops coverage
1. Conditional coverage : correctness of every condition in that program
2. Data flow coverage : The creation and utilization of every variable in that program
3. Loops Coverage: Termination of every loop after execution of n number of times.
Program Testing Technique: Whether the corresponding program is taking less time to complete execution or not. Programmer are using java and .net profiles to calculate execution time of the program
Mutation Testing: Mutation means a change in program logic / coding. Programmers are using this Technique to confirm whether that program completely tested or not.
after changes, if the testing is effected, then the program is complete.
Integration testing: After completion of individual programs development and unit testing, programmers are inter connecting them or integrating them to form a system (i.e a complete software). This integration testing is also known as interface testing. There are 4 approaches in this integration
1. Top down approach [ STUB]
2. Bottom up approach[ DRIVER]
3. Hybrid approach
4. Big bang approach