Sunday 29 September 2013

MY WORDS FOR SOFTWARE DEVELOPMENT LIFE CYCLE (SDLC)

Before going to the Software Testing Life Cycle in Software Testing, 
we need to know how the software is developed and its Life Cycle in Software Testing. SDLC is Software Development Life Cycle, it is a systematic approach to develop a software. Software Development Life Cycle, or Software Development Process, defines the steps/stages/phases in the building of software.

SOFTWARE DEVELOPMENT LIFE CYCLE (SDLC)


The Software Development life cycle models describe phases of the software cycle and the order in which those phases are executed. Requirements are translated into design. Code is produced according to the design which is called development phase. After coding and development the testing verifies the deliverable of the implementation phase against requirements. Each phase produces deliverable's required by the next phase in the life cycle. 

There are following six phases in  Software development life cycle model:

PHASE - I ) Requirement Planning gathering and analysis:- The Business Analyst(BA) will gather the information of the company through Documents which is predefined and goes to client.
He would collect all the information of what has to be developed and in how many days and all the basic requirements of the company.  Business requirements are gathered in this phase. This phase is the main focus of the project managers and stake holders. Meetings with managers, stake holders and users are held in order to determine the requirements like; Who is going to use the system? How will they use the system? After requirement gathering these requirements are analyzed for their validity and the possibility of incorporating the requirements in the system to be development is also studied.
For the proof of his collection of information the Business Analyst(BA) would prepare one document called as either 
Business Development Design 
Business Requirement Specification
User Requirement Specification
Customer Requirement Specification
Gathering as much information as possible about the details and Business specifications of the desired software from the client. This is nothing but the Requirements gathering stage.  


PHASE - II ) Design Phase :- The designing will be Divide in Two stages:-
(i)High Level Designing(HLD):- In this level of Designing the project is divided into number of modules.
The High Level Designing is done by Technical Manager or Chief Architect.
(ii)Low Level Designing(LLD):- In this level of Designing the modules are further divided into number of sub-modules.
The Low Level Designing is done by Team Lead(TL).
In this Phase the Chief Architect would prepare the Technical Design Document or Detail Design Document. In this phase the system and software design is prepared from the requirement specifications which were studied in the first phase. The system design specifications serve as input for the next phase of the model. System Design helps in specifying hardware and system requirements and also helps in defining overall system architecture. 

PHASE - III ) Implementation or coding Phase :- In this Phase the Developers would write the Programs for the Project by following the Coding standards. On receiving system design documents, the work is divided in modules/units and actual coding is started. In this phase the Developers would prepare the Source Code. This is the longest phase of the software development life cycle. Certain functionality may be out of scope of the project as a function of cost or as a result of unclear requirements at the start of development. If the development is done externally, this document can be considered a legal document so that if there are ever disputes, any ambiguity of what was promised to the client can be clarified.


PHASE - IV ) Testing Phase :- After the code is developed it is tested against the requirements to make sure that the product is actually solving the needs addressed and gathered during the requirements phase. Software testing is an integral and important phase of the software development process. This part of the process ensures that defects are recognized as soon as possible. During this phase unit testing, integration testing, system testing, acceptance testing are done.
1.In the Starting phase when the Business Development Design is prepared the Test Engineer would study the document, and send a Review Report to Business Analyst.
2.Review Report in Software Testing is nothing but a document prepared by the Test Engineer while studying the Business Development Design document and the points which he cannot understand and not clear are written in that report and sent to Business Analyst.
3.And the Test Engineer would write the Test Cases of application.
4.In Manual Testing there would be up-to 60% defect free and in Automation Testing it would be 95% defect free.
5.In end Phase Testing people document called as Defect Document.


PHASE - V ) Deployment Phase :-  Deployment starts directly after the code is appropriately tested, approved for release, and sold or otherwise distributed into a production environment.After successful testing the product is delivered / deployed to the customer for their use. This may involve installation, customization (such as by setting parameters to the customer's values), testing, and possibly an extended period of evaluation. 
1.In Start Phase after the project is done a mailis given to the client mentioning the completing of the project.
2.This is Known as the Software Delivery Document.
3.The project is than tested by client and is called as the User Acceptance Testing.
4.The project is than installed in the client environment and there testing is done called Port Testing. when installing if any problem occurs the maintenance people would write the Deployment Document to Project Manager.
5.And Finally if client want to have some changes in the software and software changes are done by Maintenance

PHASE - VI ) Maintenance Phase :- Once when the customers starts using the developed system then the actual problems comes up and needs to be solved from time to time. Software training and support is important, as software is only effective if it is used correctly This process where the care is taken for the developed product is known as maintenance. and enhancing software to cope with newly discovered faults or requirements can take substantial time and effort, as missed requirements may force redesign of the software.

Saturday 28 September 2013

MY WORDS FOR UNDERSTANDING SOFTWARE TESTING

Quality Analyst & Software Tester can do Manual Testing is to make sure that the application under test is defect and Bug free and software application is working as per the Business and software requirement specification document.

Quality Analyst & Software Tester can do the testing of the Software manually that means without using any automated testing tool or any automated testing scripts. In this type, tester takes over the role of end user and test the Software to identify any un-expected behavior or bug. 

For Manual Testing there are different stages like Unit testing, Integration testing, System testing and User Acceptance testing.

Starting with a test plan document that is created by test lead or team manager which describes the detailed and systematic approach to testing a software application and there basics of functionality and all impacts of that application and systems.The Manual Testing Concepts also includes exploratory testing as testers explore the software to identify errors in it .Basically the test plan typically includes a complete understanding of what the ultimate workflow will be. To ensure the completeness of testing (100% test coverage) test cases or test scenarios are created. 

For Manual Testing there are different stages:-

1. Unit Testing
Before give a built to Tester basically in testing normally carried out by the developer who wrote the code and sometimes by a peer using the white box testing technique or we can say that Testing of individual software components.In computer programming, unit testing is a method of testing that verifies the individual units of source code are working properly. A unit is the smallest testable part of an application. In procedural programming a unit may be an individual program, function, procedure, etc., while in object-oriented programming, the smallest unit is a method, which may belong to a base/super class, abstract class or derived/child class

2. Integration Testing
Basically this stage is carried out in two modes, as a complete package or as a increment to the earlier package. Most of the time black box testing technique is used. However, sometimes a combination of Black and White box testing is also used in this stage.
During Integration Testing, individual and various software modules and builts are integrated logically and tested as a group accordingly per requirement.

As basically a software project consists of multiple software modules, coded by different programmers. The Integration testing focuses on checking data communication among-st these modules.

Hence it is also named as ‘I & T’ (Integration and Testing), ‘String Testing’ and sometimes ‘Thread Testing’.

As every software module is unit tested, defects still exist for various reasons . These new requirements may not be unit tested and hence integration testing becomes necessary.
A Module in general is designed by an individual software developer who understanding and programming logic may differ from other programmers. Integration testing becomes necessary to verify the software modules work in unity
At the time of module development, there wide chances of change in requirements by the clients. 
Interfaces of the software modules with the database could be erroneous
External Hardware interfaces, if any, could be erroneous
Inadequate exception handling could cause issues.



3. System Testing
As on that stage the software is tested from all possible dimensions and integration's for all intended purposes and platforms. In this stage Black box testing technique is normally used. The system testing is the testing of a complete and fully integrated software applications ans systems product as per requirements

Usually software is only one element of a larger computer based system. Ultimately, software is interfaced with other software/hardware systems. System testing is actually a series of different tests whose sole purpose is to exercise the full computer based system.
System testing involves testing the software code testing done by a professional testing agent on the completed software product before it is introduced to the market.

This is a major factor in determining the types of system testing a tester will use. Methods are used by large companies are different than that used by medium and small companies.



User Acceptance Testing
Basically beta testing of the product done by the actual end users testing stage carried out in order to get customer sign-off of finished product. A 'pass' in this stage also ensures that the customer has accepted the software and is ready for their use.Release or Deployment Testing

Beta testing comes after alpha testing. The software is released to groups of people so that further testing can ensure the product has few faults or bugs. Sometimes, beta versions are made available to the open public to increase the feedback field to a maximal number of future users.

MY WORDS FOR MANUAL (BLACK BOX) TESTING

A Manual Testing basically a process to find the Bugs. In this method the Software tester plays an important role as a user and verify all features of the application to ensure that the behavior of the application. The Manual Testing is very basic type of testing which helps to find the defects in the application under test. It is a testing, must be carried out before start automation the test cases and also needs to check the feasibility of automation testing. The Test cases Test Plan is created & followed by the tester to ensure that the comprehensiveness of testing while executing the test cases manually without using automation testing tool.

A Manual testing is a process of manually mentally testing software's for finding bugs as well defects in a system or application. It requires for a software tester to play the role of an user, and use most of all features of the system and application to ensure correct behavior. To ensure completeness of testing, the tester often follows a written test plan test documents , test scenarios that leads them through a set of important test cases.

The Manual software testing includes the testing of the Software manually i.e. without using any automated tool or any VB or Automated script. In this type the tester takes over the role of an user and test the Software to identify any expected as well  un-expected behavior or bug or also it called defects. There are various different stages for manual software testing like unit testing, Integration testing, System testing and User Acceptance testing.

Software Testers also known as Quality Analyst use test plan, test cases or test scenarios to test the Software to ensure the completeness of testing. Manual testing also includes exploratory testing as testers explore the software to identify errors in it.

In Manual Software Testing , Testers manually write and than execute test cases without using any automation tools. Manual testing is the only primitive and in-expensive of all testing types and helps find bugs and Defects in the software system and applications.
 Every and Any new application must be manually tested before its testing can be automated. Manual testing requires more effort, but is necessary to check  automation feasibility.
Fundamental is "100% Automation is not possible". This makes Manual Testing imperative.