Quality Assurance
By Solis Tech
Software Quality Assurance Made Easy
nd Edition
Table Of Contents
Introduction
I want to thank you and congratulate you for downloading the book , Quality Assurance: Software Quality Assurance Made Easy .
This book contains proven steps and strategies on how to implement Software Quality Assurance.
Software quality assurance evolved from the quality assurance in industrial production in the 1940s. With the introduction of computers and the development of applications, it has become an important aspect of software development. In this book, you will learn about the various concepts of software quality assurance and its application in your workplace.
Chapter 1 talks about the definitions of software quality assurance and quality control. It is necessary that you understand what it is so that you can fully grasp the other fundamental concepts. Chapters 2, 3, and 4 discuss the three software quality assurance models, namely the Capability Maturity Model Integration, the Six Sigma Model, and the ISO 90003 Model.
Chapter 5 talks about various activities of software quality assurance while Chapter 6 discusses the Software Quality Assurance Plan. Chapter 7 talks about Software Reliability Testing. Chapter 8 discusses the ways you can implement software quality assurance in an existing environment.
In Chapter 9, you will learn how you can ensure that the software produces quality outputs. Chapter 10 teaches you how to develop and run software testing while Chapter 11 talks about the timing of the software release. In Chapter 12, you will learn about using automated testing tools.
Thanks again for downloading this book, I hope you enjoy it!
Chapter 1: Definition Of Software Quality Assurance And Software Testing
Software quality assurance is part of the process of software development. It includes the improvement and monitoring of the process. It also follows the processes, procedures, and standards. Furthermore, it ensures the resolution of problems discovered. In effect, it focuses on the prevention of problems.
Software testing, on the other hand, includes the operation of the application or system under controlled conditions, which must include all abnormal and normal conditions. The primary goal of software testing is to know what can go wrong when unexpected and expected scenarios occur. Its focus is on the detection of problems.
Companies differ in assigning responsibilities for quality assurance and software testing. There are organizations that combine both responsibilities to a single person or group. However, it is also common to have various teams that combine developers and testers. Project managers lead such teams. The decision to either combine or separate responsibilities depends on the companys business structure and size. Human beings or machines can perform software testing.
Some projects do not require a group of testers. The need for software testing depends on the projects context and size, the development methodology, the risks, the developers experience and skill, and other factors. For example, a short-term, low-risk, and small project with expert developers, who know how to use test-first development or thorough unit testing, may not require software test engineers.
In addition, a small or new IT company may not have a dedicated software testing staff even its projects have a need for it. It may outsource software testing or use contractors. It may also adjust its approach on project development and management by using either agile test-first development or more experienced programmers. An inexperienced project manager may use his developers to do their own functional testing or skip thorough testing all together. This decision is highly risky and may cause the project to fail.
If the project is a huge one with non-trivial risks, software testing is important. The use of highly specialized software testers enhances the ability of the project to succeed because different people with different perspectives can offer their invaluable contribution because they have stronger and deeper skills.
In general, a software developer focuses on the technical issues to make a functionality work. On the other hand, a software test engineer focuses on what can go wrong with the functionality. It is very rare to come across a highly effective technical person, who can do both programming and testing tasks. As such, IT companies need software test engineers.
There are various reasons why software may have bugs. First, there is no communication or miscommunication as to the applications requirements. Second, the software is very complex so an inexperienced individual may have a difficult time understanding the software application. In addition, the software may be a big one and includes big databases, data communications, security complexities, different remote and local web services, and multi-tier distributed systems.
Third, there are programming errors. Fourth, the requirements of the software change because the end-user requests for them. In some cases, this end-user may not be aware of the effects of such changes, which can result in errors. The staffs enthusiasm is affected. Continuous modification requirements are a reality. Quality assurance and software test engineers must be able to plan and adapt continuous testing to prevent bugs from affecting the software.
Fifth, time pressures can be difficult to manage. Mistakes often occur during crunch times. Sixth, people involved in the project may not be able to manage their own egos. Seventh, the code has poor documentation or design. It is difficult to modify and maintain codes that are poorly written or documented. Bugs can occur if IT companies do not offer incentives for developers to write maintainable, understandable, and clear codes. Most companies offer incentives when they are able to finish the code quickly. Eighth, the use of software development tools can also result to bugs.
How Quality Assurance Evolved
In 1946, the US Occupation Forces established the Quality Movement in Japan. The movement follows the research of W. Edwards Deming and the Statistical Process Control papers. The methods discussed by the research and papers pertained to industrial production. Each process of production has an output with a required specification and a verifiable main product. The Quality Control group measures the output at different production stages. It ensures that the output falls within the acceptable variances.
The Quality Assurance group does not part in the production process. It audits the process to ensure compliance with the established standards and guidelines. It gives its input for the continuous improvement of the process. In a manufacturing setup, it is easy to differentiate between quality assurance and quality control. These methods become the norm in manufacturing. Since they work in industrial production, they spawned the birth of software quality control and software quality assurance.
Quality Attributes of Software
Hewlett Packards Robert Grady developed the common definition of the Software Quality Attributes. The FURPS model identified the following characteristics: functionality, usability, reliability, performance, and supportability (FURPS).
The functional attributes pertain to the features of the software. They answer the question about the purpose of the software instead of its use. The reason for the softwares existence is different from the concerns about its reliability, look and feel, and security. The usability attributes are characteristics pertaining to user interface issues like consistency, interface aesthetics, and accessibility.
The reliability attributes include recoverability, accuracy, and availability of the system while performance attributes pertain to issues like startup time, recovery time, system response time, and information throughput. Supportability addresses issues like localizability, scalability, installation, configurability, compatibility, maintainability, adaptability, and testability. The FURPS model evolved into FURPS+ to include specification of constraints like physical, interface, implementation, and design constraints.
Next page