what is Software Quality?π
✔ Software Quality is the degree of conformance to explicit or implicit requirements and expectations.
* Explicit: clearly defined and documented
* Implicit: not clearly defined and documented but indirectly suggested
* Requirements: business/product/software requirements
* Expectations: mainly end-user expectations
Different Views on Software Quality π
* Users’ View – conformance to SRS and expectations.
* Developers’ View – Reusing of the code
Adhering to developing standards and rules
Own Satisfaction
Software Quality Management Activities π
✔ Software Quality Management can be structured into three principal activities.
* Quality Assurance – The establishment of a framework of organizational procedures and standards which lead to high quality software.
* Quality Planning – The selection of appropriate procedures and standards from the framework and the adoption of these for a specific software project.
* Quality Control – The definition and enactment of processes which ensure that the project quality procedures and standards are followed by the software development team.
Quality Management & S/W Development π
Software Quality Attributes π
Software Testing π
* It is the process used to identify the correctness, completeness and quality of developed computer software.
* It is the process of executing a program/application under positive and negative conditions by manual or automated means. It checks for the:-
Specification
Functionality
Performance
Objectives π
✔ Uncover as many as errors(or bugs) as possible in a product.
✔ Demonstrate a given software product matching its requirement specification.
✔ Validate the quality of a software using the minimum cost and efforts.
✔ Generate high quality test cases, perform effective tests, and issue correct and helpful problem reports.
Error, Bug, Fault and Failure π
✔ Error – it is a human action that produces an incorrect result.
✔ Bug – the presence of an error at the time of executing a software.
✔ Fault – state of an software caused by an error.
✔ Failure – Deviation of the software from its expected results.
Verification vs Validation π
* Verification
The software should confirm to its specification. (Are we building the product right?)
* Validation
The software should do what the user really requires. (Are we building the right product)
Software Testing Process π
Test Data Generating Techniques π
✔ Equivalence Class Partitioning
this technique divides the input data of a software unit into partitions of equivalent data from
which test cases can be derived. In principle, test cases are designed to cover each partition
at least once. This technique tries to define test cases that uncover classes of errors.
✔ Boundary Value Analysis
in this technique tests are designed to include representatives of boundary values in a range.
Those inputs which belong to the same equivalence class as defined by the equivalence
partitioning theory would constitute the basis.
Exampleπ
A web form accepts passwords containing 5 to 10 characters.
Use equivalence class partitioning and boundary value analysis to derive test data for the above requirement.
Testing Methodologies π
✔ Black Box Testing
No knowledge of internal program design or code required.
Tests are based on requirements and functionality.
✔ White Box Testing
Knowledge of internal program code and design required.
Tests are based on coverage of program statements, paths and conditions.
Practice Question π
A web form accepts passwords containing 6-12 characters. And also the password should contain at least one numeric character and at least one special character.
Use equivalence class partitioning and boundary value analysis to derive test data for the above requirement and write 8 test cases to test the above requirement.
Levels of Testingπ
- Unit testing
- Integration Testing
- System Testing
1. Unit testing
Unit testing is a level of software testing where individual units/ components of the software are tested. the purpose is to validate that each unit of the software performed as designed. A unit is the smallest testable part of any software. It usually has one or a few inputs and usually a single output. In procedural programming, a unit may be an individual program, function, procedure, etc. In object-oriented programming, the smallest unit is a method which may belong to a base/ Superclass, abstract class or derived /child class.
Comments
Post a Comment