Software Testing Tutorial
- Introduction to Software Testing
- Principles of Software Testing
- Software Development Life Cycle (SDLC)
- Software Testing Life Cycle (STLC)
- Levels of Testing
- Database Testing
- Ad-hoc Testing
- Testing Types
- Test Closure Report Preparation
- Test Report Preparation
- ISTQB Organization and Certification Overviews
Manual testing is the process of manually testing software for defects. Quality is the degree of conformance to explicit or implicit requirements and expectations.
In context of manual testing, software quality refers to two related but distinct notions that exist wherever quality is defined in a business context:
- Software functional quality reflects how well it complies with or conforms to a given design, based on functional requirements or specifications. That attribute can also be described as the fitness for purpose of a piece of software or how it compares to competitors in the marketplace as a worthwhile product. It is the degree to which the correct software was produced.
- Software structural quality refers to how it meets non-functional requirements that support the delivery of the functional requirements, such as robustness or maintainability. It has a lot more to do with the degree to which the software works as needed.
In broader terms, the quality definition of “fitness for purpose” refers to the satisfaction of requirements. But what are requirements? Requirements, also called user stories in today’s Agile terms, can be categorized as functional and non-functional. Functional requirements refer to specific functions that the software should be able to perform. For example, the ability to print on an HP Inkjet 2330 printer is a functional requirement. However, just because the software has a certain function, or a user can complete a task using the software, does not mean that the software is of good quality. There are probably many instances where you’ve used software and it did what it was supposed to do, such as find you a flight or make a hotel reservation, but you thought it was poor quality. This is because of “how” the function was implemented. The dissatisfaction with “how” represents the non-functional requirements not being met.
Two approaches to software quality are prevalent
Defect Management Approach
A software defect can be regarded as any failure to address end-user requirements. Common defects include missed or misunderstood requirements and errors in design, functional logic, data relationships, process timing, validity checking, coding, etc.
The defect management approach is based on counting and managing defects. Defects are commonly categorized by severity, and the numbers in each category are used for planning. More mature software development organizations use tools such as defect leakage matrices (for counting the numbers of defects that pass through development phases prior to detection) and control charts to measure and improve development process capability.
Quality Attributes Approach
This approach to software quality is best exemplified by fixed quality models, such as ISO/IEC 25010:2011. This standard describes a hierarchy of eight quality characteristics, each composed of sub-characteristics:
- Functional suitability
- Performance efficiency
Additionally, the standard defines a quality in use model composed of five characteristics:
A fixed software quality model is often helpful for considering an overall understanding of software quality. In practice, the relative importance of particular software characteristics typically depends on software domain, product type, and intended usage. Thus, software characteristics should be defined for, and used to guide the development of, each product.
10.1 Basics of Quality
In the software engineering context, software quality reflects both functional quality as well as structural quality.
- Software Functional Quality: It reflects how well it satisfies a given design, based on the functional requirements or specifications.
- Software Structural Quality: It deals with the handling of non-functional requirements that support the delivery of the functional requirements, such as robustness or maintainability, and the degree to which the software was produced correctly.
- Software Quality Assurance: Software Quality Assurance (SQA) is a set of activities to ensure the quality in software engineering processes that ultimately result in quality software products. The activities establish and evaluate the processes that produce products. It involves process-focused action.
- Software Quality Control: Software Quality Control (SQC) is a set of activities to ensure the quality in software products. These activities focus on determining the defects in the actual products produced. It involves product-focused action.
Quality is needed in any software products. Any customer wants the product of highest quality.
Key aspects of quality for the customer include:
- Good design – looks and style
- Good functionality – it does the job well
- Reliable – acceptable level of breakdowns or failure
- Durable – lasts as long as it should
- Good after sales service
- Value for money
These all pointers are described in detail as follows.
Good design – looks and style
It is very important to have a good design. The application or product should meet all the requirement specifications and at the same time it should be user friendly. The customers are basically attracted by the good looks and style of the application. The right color combinations, font size and the styling of the texts and buttons are very important.
Good functionality – it does the job well
Along with the good looks of the application or the product it’s very important that the functionality should be intact. All the features and their functionality should work as expected. There should not be any deviation in the actual result and the expected result.
Reliable – acceptable level of breakdowns or failure
After we have tested for all the features and their functionalities it also very important that the application or product should be reliable. For example: There is an application of saving the students records. This application should save all the students records and should not fail after entering 100 records. This is called reliability.
The software should have consistency across the application or product. Single software can be multi dimensional. It is very important that all the different dimensions should behave in a consistent manner.
Durable – lasts as long as it should
The software should be durable. For example if software is being used for a year and the number of data has exceed 5000 records then it should not fail if number of records increases. The software product or application should continue to behave in the same way without any functional breaks.
Good after sales service
Once the product is shipped to the customers then maintenance comes into the picture. It is very important to provide good sales services to keep the customers happy and satisfied. For example if after using the product for six months the customer realizes to make some changes to the application then those changes should be done as fast as possible and should be delivered to the customers on time with quality.
Value for money
It’s always important to deliver the product to the customers which have value for money. The product should meet the requirement specifications. It should work as expected, should be user friendly. We should provide good services to the customers. Other than the features mentioned in the requirement specifications some additional functionality could be given to the customers which they might not have thought of. These additional functionalities should make their product more user friendly and easy to use. This also adds value for money.
Quality can be further described using these topics below:
Quality Assurance is defined as the auditing and reporting procedures used to provide the stakeholders with data needed to make well-informed decisions.
It is the Degree to which a system meets specified requirements and customer expectations. It is also monitoring the processes and products throughout the SDLC.
Quality Assurance Criteria
Below are the Quality assurance criteria against which the software would be evaluated against:
Quality control is a set of methods used by organizations to achieve quality parameters or quality goals and continually improve the organization’s ability to ensure that a software product will meet quality goals.
Quality Control Process
The three class parameters that control software quality are:
The total quality control process consists of:
- Plan: It is the stage where the Quality control processes are planned
- Do: Use a defined parameter to develop the quality
- Check: Stage to verify if the quality of the parameters are met
- Act: Take corrective action if needed and repeat the work
Quality Control characteristics:
- Process adopted to deliver a quality product to the clients at best cost.
- Goal is to learn from other organizations so that quality would be better each time.
- To avoid making errors by proper planning and execution with correct review process.
Software Quality Management
Software Quality Management ensures that the required level of quality is achieved by submitting improvements to the product development process. SQA aims to develop a culture within the team and it is seen as everyone’s responsibility.
Software Quality management should be independent of project management to ensure independence of cost and schedule adherences. It directly affects the process quality and indirectly affects the product quality.
Activities of Software Quality Management includes
- Quality Assurance: QA aims at developing Organizational procedures and standards for quality at Organizational level.
- Quality Planning: Select applicable procedures and standards for a particular project and modify as required to develop a quality plan.
- Quality Control: Ensure that best practices and standards are followed by the software development team to produce quality products.
Software Quality Metrics
Software metrics can be classified into three categories
- Product metrics: Describes the characteristics of the product such as size, complexity, design features, performance, and quality level.
- Process metrics: These characteristics can be used to improve the development and maintenance activities of the software.
- Project metrics: This metrics describe the project characteristics and execution. Examples include the number of software developers, the staffing pattern over the life cycle of the software, cost, schedule, and productivity.
Some metrics belong to multiple categories. For example, the in-process quality metrics of a project are both process metrics and project metrics.
Software quality metrics are a subset of software metrics that focus on the quality aspects of the product, process, and project. These are more closely associated with process and product metrics than with project metrics.
The points below summarize the topics as discussed:
- Quality is the degree of conformance to explicit or implicit requirements and expectations.
- Defect Management approach and Quality Attributes Approach are two approach to find software quality.
- Functionality quality and structural quality comprise software quality.
- Software quality management (SQM) is a management process that aims to develop and manage the quality of software in such a way so as the best ensure the product meets the quality standards expected by the customer.
- Software quality metrics helps estimating the progress, quality and health of a software testing effort.