Tuesday, February 8, 2011

Chapter 1.2 Software Testing Life Cycle

As we have seen earlier that testing is an essential phase of SDLC, we will be confused about when to start with testing in software development life cycle.
 
In conventional testing process, the testing was happening only towards the end of life cycle. If I say more clearly, testing was done after the application is built. Many people view testing as a “washing machine” that you clean your code with the end of the development cycle. Most of the cases this process in turn results in scarifying huge cost.
It is better to have a look on the distribution of defects in the life cycle. Before that we should have a clear idea about the phases in SDLC. One of the most practical models (V-model) is shown below.
         
           
Defect Distribution chart
This chart clearly depicts the necessity of testing to be done in the early stages. As seen here the defects detected in design and coding phase is comparatively higher than that in other stages.
Now we can go for Software Testing Life Cycle (STLC). One of the frequently using models is shown below.
Each phase is associated with review and test. Unit testing is done by development team. System testing is the responsibility of SQA.
User representative team is responsible for doing the user acceptance test. And the technology compliance testing is done by system installation and support group.
Phase I - Requirements Definition and Acceptance Testing
To ensure software quality by eradicating errors as earlier as possible in the development process.
·         to begin defining the high level (most broad) requirements of the application being developed.
·         to begin planning the testing activities that will have to be performed to verify the high level requirements have been incorporated and satisfied.
·         to establish the pre-defined conditions that will have to be tested to verify the high level requirements (most broad) have been incorporated and satisfied. 
Phase II - High Level Design and Integration Testing
·         to refine the granularity of the high-level requirements established during the Requirements Definition phase.
·         to begin creating a high level solution design based on the requirements established during the Requirements Definition.
·         to begin planning the testing activities to be performed to verify the requirements (at the High-Level Design phase) have been incorporated and satisfied.
·         to establish the pre-defined conditions that will have to be tested to verify the High-Level Design phase requirements have been incorporated and satisfied.
Phase III - Detailed Design and Unit Testing
·         to refine the granularity of the requirements established during the High-Level Design phase.
·         to continue refining the design and solution based on the requirements established during the High-Level Design phase - this includes the creation of specifications (functional and/or technical) used to create the application.
·         to begin planning the testing activities to be performed to verify the requirements (at the Detailed Design phase) have been incorporated and satisfied.
·         to establish the pre-defined conditions that will have to be tested to verify the Detailed Design phase requirements have been incorporated and satisfied.
Phase IV – Coding
·         to translate the specifications created in the Detailed Design phase into technical code (in whatever platform or language).
Phase V - Unit Testing
·         to execute the Unit Test phase activities according to pre-defined Unit Test plan (established in Phase III).
·         to identify and document deviations between "expected results" with "actual testing results" for each and every unit/program. 
·         to ensure all pre-defined Unit Test cases have been executed and all the expectant results have been achieved.
Phase VI - Integration Testing
·         to execute the Integration Test phase testing activities according to plan (established in Phase II).
·         to identify and document deviations between " expected results " with "actual testing results" for each and every sub-system. 
·         to ensure all pre-defined Integration Test cases have been executed and all the expectant results have been achieved. 
·         to ensure all of the appropriate requirements have been defined and successfully tested
Phase VII - Acceptance Testing
·         to execute the Acceptance Test phase testing activities according to plan (established in Phase I).
·         to identify and document deviations between " expected results " with "actual testing results" for the application. 
·         to ensure all pre-defined Integration Test cases have been executed and all the expectant results have been achieved.
See http://www.projectinsight.net for more details.


Testing life Cycle – Team Structure
An effective testing team includes a mixture of members who has
  • §  Testing Expertise
  • §  Tools Expertise
  • §  Database Expertise
  • §  Domain Technology Expertise
The testing team must be properly structured, with defined roles and responsibilities that allow the testers to perform their functions with minimum overlap. There should not be any uncertainty regarding which team member should perform which duties. The test Manager will be facilitating any resources required for the testing team.

Roles and Responsibilities

Test Manager

-                     Prepare Project Plan
-          Test Management
-          Test Planning
-          Team management
-          Work allocation to the team
-          Test coverage Analysis
-          Monitoring the deliverables
-          Verify readiness of product
-          Obtain customer acceptance on deliverables
-          Perform risk analysis when required
-          Reviews and status Reporting
-          Authorize intermediate deliverables and patch releases to customer

Test Lead

-                       Resolves technical issues for the testing team
-                       Provides direction to the team members
-                       Review and approve test plan
-                       Review Test script / code
-                       Approve completion of integration testing
-                       Conduct system /regression tests
-                       Ensure tests are conducted as per plan
-                       Report status to Test Manager

Tester
-                                 Development of test scripts and test cases
-                                 Test Execution
-                                 Result capturing and analyzing
-                                Detect Reporting and status report

Fundamentals of Software testing

Chapter 1.1
Basics of Software Testing
OK. Let’s start with the concepts of Software Testing. Here we are going to find out proper answers for the following questions that always mystifying in our mind.
·        What is testing?
Testing is one of the most important phase of Software Development Life Cycle (SDLC). We cannot launch any product successfully without testing. Even the product designed by best of the best developers needs to be tested and verified under various circumstances.
Software testing is a process used to help identify correctness, completeness and quality of developed computer software.
What is the expected behavior of the system? Testing is to check if there is no difference between actual output and expected output.
Testing is an exercise to simulate a system or program operation. It helps the program to achieve the required goal.
Testing is to establish a confidence that a system does what it is supposed to do and even if it “misbehaves” it should not crash, it should do it decently.
In other words, testing is not a debugging or preventing process, it is only to ensure that within an application I have found/detect these many number of bugs and rest debugging/fixing of bugs is done by developers.
·        Why to do testing?

As we discussed earlier, even though we have best developers developing the product still there may be flaws somewhere due to misconception, due to lack of understanding in integrating modules of 2 great developers and so on. Testing, if done poorly, defects are found during operation, it results in high maintenance cost and user dissatisfaction. So here are the most common software problems leading to software testing a vital role in SDLC.

The 20 most Common Problems

ü  Incorrect calculations
ü  Incorrect data edits
ü  Ineffective data edits
ü  Incorrect coding/implementation of business rules
ü  Inadequate software performance
ü  Confusing or misleading data
ü  Software that is difficult to use
ü  Obsolete software
ü  Inconsistent processing
ü  Difficult to maintain and understand
ü  Unreliable results or performance
ü  Inadequate support of business needs or objectives
ü  No longer supported by vendor
ü  Incorrect or inadequate interfaces with other systems
ü  Incorrect matching or merging of data
ü  Data searches that yields incorrect results
ü  Incorrect Processing of data relationships
ü  Incorrect file and data handling
ü  Inadequate security controls
ü  Inability to handle production data capacities
Note: Testing at earlier stage is much cheaper than testing at later stage. If client find bugs which were uncovered earlier then we losses credibility and may lose business as well.
·        Software Testing Definitions
I think you got a rough idea of importance of software testing in a software development Life Cycle. Now we will see some definitions for software testing.
Software testing is the
Def-1
Process of evaluating a system by manual or automatic means and verify that it satisfies specified requirements. (IEEE 83a)
Def -2
Process of executing a program with the intent of finding errors.
Def -3
Process of establishing confidence that a program or system does what it is supposed to do.
Def -4
Testing is an activity aimed at evaluating an attribute or capability of a program or system and determining that it meets its required results.

·        How to know the product is successful?
A product is successful only when it is adding some value to customer business, only if it increases its revenue, credibility in the market and so on.
To develop a product we set a target time for completion and released to customer. If we can stick to that time without increasing budget and scope of the product then the product is successful.
Using the developed product,  true business goals should be met else the product developed can be a failure leading to customer satisfaction loss, finance loss and loss of business further from that client as well as associates.
Look and feel should be accepted by user who will be the end user of the product.

Welcome to Software Testing knowledge share

Hello friends,
Welcome to my blog.

My intention for building such a blog here is to share the
software testing knowledge and experience that I have.

The following topics here.
v Fundamentals of  Software Testing
v Sample Test plan, Test case
v Concepts of Web Testing, Automation Testing and Automation Tools
v Testing Interview Questions and answers
v Testing opportunities  - for freshers, experienced and for the experienced by doing work at home
just wait for few days...



I am inviting your valid comments, queries and testing related articles to make our effort qualified. post it down here or mail me at rakeshpipada@gmail.com