Software Quality Assurance

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πŸ‘‡
  1. Unit testing
  2. Integration Testing
  3. 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

Popular posts from this blog

Data Structures