Monday, 14 July 2014

Software Development Life Cycle Models(2)

Software Development Life Cycle Models

Evolutionary Prototyping Model

Description
It refers to the activity of creating prototypes of software applications, for example, incomplete versions of the software program being developed. It is an activity that can occur in software development. It used to visualize some component of the software to limit the gap of misunderstanding the customer requirements by the development team. This also will reduce the iterations may occur in waterfall approach and hard to be implemented due to inflexibility of the waterfall approach. So, when the final prototype is developed, the requirement is considered to be frozen.
It has some types, such as:
· Throwaway prototyping: Prototypes that are eventually discarded rather than becoming a part of the finally delivered software
· Evolutionary prototyping: prototypes that evolve into the final system through iterative incorporation of user feedback.

· Incremental prototyping: The final product is built as separate prototypes. At the end the separate prototypes are merged in an overall design.







· Extreme prototyping: used at web applications mainly. Basically, it breaks down web development into three phases, each one based on the preceding one. The first phase is a static prototype that consists mainly of HTML pages. In the second phase, the screens are programmed and fully functional using a simulated services layer. In the third phase the services are implemented
The usage
· This process can be used with any software developing life cycle model. While this shall be focused with systems needs more user interactions. So, the system do not have user interactions, such as, system does some calculations shall not have prototypes.

Advantages Disadvantages
· Reduced time and costs, but this can be disadvantage if the developer lose time in developing the prototypes                                                           · Improved and increased user involvement · Insufficient analysis                                                  · User confusion of prototype and finished system      · Developer misunderstanding of user objectives        · Excessive development time of the prototype           · Expense of implementing prototyping



Spiral Method (SDM)

Description
It is combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts. This model of development combines the features of the prototyping model and the waterfall model. The spiral model is favored for large, expensive, and complicated projects. This model uses many of the same phases as the waterfall model, in essentially the same order, separated by planning, risk assessment, and the building of prototypes and simulations.

 
The usage
It is used in shrink-wrap application and large system which built-in small phases or segments.
Advantages and Disadvantages
Advantages Disadvantages
· Estimates (i.e. budget, schedule, etc.) become more realistic as work progresses, because important issues are discovered earlier                                     .· Early involvement of developers                             · Manages risks and develops system into phases · High cost and time to reach the final product.           · Needs special skills to evaluate the risks and assumptions                                                              · Highly customized limiting re-usability



Friday, 11 July 2014

Software Development Life Cycle Models

Software Development Life Cycle Models

Waterfall Model

Description
The waterfall Model is a linear sequential flow. In which progress is seen as flowing steadily downwards (like a waterfall) through the phases of software implementation. This means that any phase in the development process begins only if the previous phase is complete. The waterfall approach does not define the process to go back to the previous phase to handle changes in requirement. The waterfall approach is the earliest approach that was used for software development.


Advantages Disadvantages
· Easy to explain to the user                                       · Structures approach.                                               · Stages and activities are well defined                        · Helps to plan and schedule the project                     · Verification at each stage ensures early detection of errors / misunderstanding                                            · Each phase has specific deliverables · Assumes that the requirements of a system can be frozen                                                                       · Very difficult to go back to any stage after it              finished                                                                     .· Little flexibility and adjusting scope is difficult and expensive                                                                 .· Costly and required more time, in addition to detailed plan

 

V-Shaped Model

Description
It is an extension for waterfall model, Instead of moving down in a linear way, the process steps are bent upwards after the coding phase, to form the typical V shape. The major difference between v-shaped model and waterfall model is the early test planning in v-shaped model.

The usage
· Software requirements clearly defined and known
· Software development technologies and tools is well-known

Advantages Disadvantages
· Simple and easy to use.                                            · Each phase has specific deliverables                         .· Higher chance of success over the waterfall model due to the development of test plans early on during the life cycle.                                                                        · Works well for where requirements are easily understood. · Very inflexible, like the waterfall model.                    · Little flexibility and adjusting scope is difficult and expensive.                                                                 · Software is developed during the implementation phase, so no early prototypes of the software are produced.                                                                 · Model doesn’t provide a clear path for problems found during testing phases.                                       · Costly and required more time, in addition to detailed plan


Wednesday, 9 July 2014

Software Testing Life Cycle

Software Testing Life Cycle

Software Testing Life Cycle (STLC) defines the steps/stages/phases in testing of software.

Requirement Analysis:

Requirement Analysis is the very first step in Software Testing Life Cycle (STLC). In this step Quality Assurance (QA) team understands the requirement in terms of what we will testing & figure out the testable requirements. If any conflict, missing or not understood any requirement, then QA team follow up with the various stakeholders like Business Analyst, System Architecture, Client, Technical Manager/Lead etc to better understand the detail knowledge of requirement.
From very first step QA involved in the where STLC which helps to prevent the introducing defects into Software under test. The requirements can be either Functional or Non-Functional like Performance, Security testing.

Test Planning:

Test Planning is most important phase of Software testing life cycle where all testing strategy is defined. This phase also called as Test Strategy phase. In this phase typically Test Manager (or Test Lead based on company to company) involved to determine the effort and cost estimates for entire project. This phase will be kicked off once the requirement gathering phase is completed & based on the requirement analysis, start preparing the Test Plan. The Result of Test Planning phase will be Test Plan or Test strategy & Testing Effort estimation documents. Once test planning phase is completed the QA team can start with test cases development activity.

Test Case Development:

The test case development activity is started once the test planning activity is finished. This is the phase of STLC where testing team write down the detailed test cases. Along with test cases testing team also prepare the test data if any required for testing. Once the test cases are ready then these test cases are reviewed by peer members or QA lead.
Also the Requirement Traceability Matrix (RTM) is prepared. The Requirement Traceability Matrix is an industry-accepted format for tracking requirements where each test case is mapped with the requirement. Using this RTM we can track backward & forward traceability.

Test Environment Setup:

Setting up the test environment is vital part of the STLC. Basically test environment decides on which conditions software is tested. This is independent activity and can be started parallel with Test Case Development. In process of setting up testing environment test team is not involved in it. Based on company to company may be developer or customer creates the testing environment. Mean while testing team should prepare the smoke test cases to check the readiness of the test environment setup.

Test Execution:

Once the preparation of Test Case Development and Test Environment setup is completed then test execution phase can be kicked off. In this phase testing team start executing test cases based on prepared test planning & prepared test cases in the prior step.
Once the test case is passed then same can be marked as Passed. If any test case is failed then corresponding defect can be reported to developer team via bug tracking system & bug can be linked for corresponding test case for further analysis. Ideally every failed test case should be associated with at least single bug. Using this linking we can get the failed test case with bug associated with it. Once the bug fixed by development team then same test case can be executed based on your test planning.
If any of the test cases are blocked due to any defect then such test cases can be marked as Blocked, so we can get the report based on how many test cases passed, failed, blocked or not run etc. Once the defects are fixed, same Failed or Blocked test cases can be executed again to retest the functionality.

Test Cycle Closure:

Call out the testing team member meeting & evaluate cycle completion criteria based on Test coverage, Quality, Cost, Time, Critical Business Objectives, and Software. Discuss what all went good, which area needs to be improve & taking the lessons from current STLC as input to upcoming test cycles, which will help to improve bottleneck in the STLC process. Test case & bug report will analyze to find out the defect distribution by type and severity. Once complete the test cycle then test closure report & Test metrics will be prepared. Test result analysis to find out the defect distribution by type and severity.






Tuesday, 8 July 2014

Software Development Life Cycle

Software Development Life Cycle

The software development life cycle (SDLC) is a framework defining tasks performed at each step in the software development process. SDLC is a structure followed by a development team within the software organization. It consists of a detailed plan describing how to develop, maintain and replace specific software. The life cycle defines a methodology for improving the quality of software and the overall development process.

This term is also known as the software development process.

SDLC consists of following activities:
  1. Planning: The most important parts of software development, requirement gathering or requirement analysis are usually done by the most skilled and experienced software engineers in the organization. After the requirements are gathered from the client, a scope document is created in which the scope of the project is determined and documented.

  2. Implementation: The software engineers start writing the code according to the client's requirements.

  3. Testing: This is the process of finding defects or bugs in the created software.

  4. Documentation: Every step in the project is documented for future reference and for the improvement of the software in the development process. The design documentation may include writing the application programming interface (API).

  5. Deployment and maintenance: The software is deployed after it has been approved for release.

  6. Maintaining: Software maintenance is done for future reference. Software improvement and new requirements (change requests) can take longer than the time needed to create the initial development of the software.

Saturday, 5 July 2014

Quality Assurance and Quality Control

Software Testing


Software testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test. Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation. Test techniques include, but are not limited to the process of executing a program or application with the intent of finding software bugs (errors or other defects).
Software testing can be stated as the process of validating and verifying that a computer program/application/product:
  • meets the requirements that guided its design and development,
  • works as expected,
  • can be implemented with the same characteristics,
  • and satisfies the needs of stakeholders.
Software testing, depending on the testing method employed, can be implemented at any time in the software development process. Traditionally most of the test effort occurs after the requirements have been defined and the coding process has been completed, but in the Agile approaches most of the test effort is on-going. As such, the methodology of the test is governed by the chosen software development methodology.
   

 Principles of Testing

 There are seven principles of testing They are as follows:
1) Testing shows presence of defects: Testing can show the defects are present, but cannot prove that there are no defects. Even after testing the application or product thoroughly we cannot say that the product is 100% defect free. Testing always reduces the number of undiscovered defects remaining in the software but even if no defects are found, it is not a proof of correctness.
2) Exhaustive testing is impossible: Testing everything including all combinations of inputs and preconditions is not possible. So, instead of doing the exhaustive testing we can use risks and priorities to focus testing efforts. For example: In an application in one screen there are 15 input fields, each having 5 possible values, then to test all the valid combinations you would need 30  517  578  125  (515) tests. This is very unlikely that the project timescales would allow for this number of tests. So, accessing and managing risk is one of the most important activities and reason for testing in any project.
3) Early testing: In the SDLC testing activities should start as early as possible and should be focused on defined objectives.
4) Defect clustering: A small number of modules contains most of the defects discovered during pre-release testing or shows the most operational failures.
5) Pesticide paradox: If the same kinds of tests are repeated again and again, eventually the same set of test cases will no longer be able to find any new bugs. To overcome this “Pesticide Paradox”, it is really very important to review the test cases regularly and new and different tests need to be written to exercise different parts of the software or system to potentially find more defects.
6) Testing is context depending: Testing is basically context dependent. Different kinds of sites are tested differently. For example, safety – critical software is tested differently from an e-commerce site.
7) Absence – of – errors fallacy: If the system built is unusable and does not fulfil the user’s needs and expectations then finding and fixing defects does not help.

 TESTING OBJECTIVES:

1. Testing is a process of executing a program with the intent of finding an error.
2. A good test case is one that has a high probability of finding an as yet undiscovered error.
3. A successful test is one that uncovers an as yet undiscovered error.
Testing should systematically uncover different classes of errors in a minimum amount of time and with a minimum amount of effort. A secondary benefit of testing is that it demonstrates that the software appears to be working as stated in the specifications. The data collected through testing can also provide an indication of the software's reliability and quality. But, testing cannot show the absence of defect -- it can only show that software defects are present.

Friday, 4 July 2014

ASSIGNMENT- 1 (SQA and Need of SQA)

1. What is Software Quality Assurance (SQA) ?
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.SQA processes tests for quality in each phase of development until the software is complete.
SQA encompasses the entire software development process, which includes processes such as requirements definition, software design, coding, source code control, code reviews, software configuration management, testing, release management, and product integration. SQA is organized into goals, commitments, abilities, activities, measurements, and verifications.

2. What are the SQA principles?
Two principles included in Quality Assurance are: "Fit for purpose", the product should be suitable for the intended purpose; and "Right first time", mistakes should be eliminated.
Other principles are:
1. define the expected output or result.
2. donot test your own programs.
3. include test cases for invalid or unexpected conditions.
4. Inspect the results of each test completely.
5. Donot perform test assuming that no errors will be found.
6. The probability of locating more errors in a module is directly proportional to number of errors already found in that module.
7. Test the program to see if it does what it is not supposed to do and what it is supposed to do.

3. What are the benefits of SAQ?

1. Higher reliability
2. Greater customer satisfaction:
3. Overall life cycle cost of software reduced
4. Software requires less modification after SQA
5. Achieve sign-off more quickly.
6. Reduce the time and money spent on rework.
7. Build trust and respect.
8. earn a reputation for excellence.
9. win word-of-mouth business.
10. nuture ongoing improvement.

4. What is the need of SAQ?
1. Reduced cost of maintenance
2. Increased customer satisfaction
3. Reduced cost of development

5. What is the budget of SAQ?

The budget of SAQ is –
1.    Standard % QA in Software Development costs around 30% to 40%.
2.    Cost of quality = cost of conformance + cost of non – conformance.

6. What is Quality Assurance?
Quality Assurance (QA) is a way of preventing mistakes or defects in manufactured products and avoiding problems when delivering solutions or services to customers. QA is applied to physical products in pre-production to verify what will be made meets specifications and requirements, and during manufacturing production runs by validating lot samples meet specified quality controls. QA is also applied to software to verify that features and functionality meet business objectives, and that code is relatively bug free prior to shipping or releasing new software products and versions.

7. What is Quality Control?
Quality control (QC) is a procedure or set of procedures intended to ensure that a manufactured product or performed service adheres to a defined set of quality criteria or meets the requirements of the client or customer.
This approach places an emphasis on three aspects:
1.    Elements such as controls, job management, defined and well managed processes, performance and integrity criteria, and identification of records
2.    Competence, such as knowledge, skills, experience, and qualifications
3.    Soft elements, such as personnel, integrity, confidence, organizational culture, motivation, team spirit, and quality relationships.

8. Explain the difference between QA and QC ?








Tuesday, 1 July 2014

SQA and Need of SQA

QUALITY 

Quality software is reasonably bug-free, delivered on time and within budget, meets requirements and/or expectations, and is maintainable.

Software Quality Assurance(SQA)

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.SQA processes tests for quality in each phase of development until the software is complete.
SQA encompasses the entire software development process, which includes processes such as requirements definition, software design, coding, source code control, code reviews, software configuration management, testing, release management, and product integration. SQA is organized into goals, commitments, abilities, activities, measurements, and verifications.

Need of SQA

1. Reduced cost of maintenance
2. Increased customer satisfaction
3. Reduced cost of development

Benefits of SQA

1. Higher reliability
2. Greater customer satisfaction:
3. Overall life cycle cost of software reduced
4. Software requires less modification after SQA
5. Achieve sign-off more quickly.
6. Reduce the time and money spent on rework.
7. Build trust and respect.
8. earn a reputation for excellence.
9. Win word-of-mouth business.
10. Nuture ongoing improvement. 

Quality control

Quality control (QC) is a procedure or set of procedures intended to ensure that a manufactured product or performed service adheres to a defined set of quality criteria or meets the requirements of the client or customer.
This approach places an emphasis on three aspects:
1. Elements such as controls, job management, defined and well managed processes, performance and integrity criteria, and identification of records
2. Competence, such as knowledge, skills, experience, and qualifications
3. Soft elements, such as personnel, integrity, confidence, organizational culture, motivation, team spirit, and quality relationship.

Quality Assurance 

Quality Assurance (QA) is a way of preventing mistakes or defects in manufactured products and avoiding problems when delivering solutions or services to customers. QA is applied to physical products in pre-production to verify what will be made meets specifications and requirements, and during manufacturing production runs by validating lot samples meet specified quality controls. QA is also applied to software to verify that features and functionality meet business objectives, and that code is relatively bug free prior to shipping or releasing new software products and versions.