Software Testing and Introduction to quality
Introduction, Nature of errors, an example for Testing, Definition of Quality , QA, QC, QM and SQA , Software Development Life Cycle, Software Quality Factors
Testing usually depends upon the detection of the faults remaining from earlier stages, in addition to the faults introduced during coding itself. Due to this, different levels of testing are used in the testing, process; each level of testing aims to test different aspects of the system. The basic levels are unit testing, integration testing, and system and acceptance testing. These different levels of testing attempt to detect different types of faults.
Nature of errors
Functionality is a way the software is intended to behave. Software has a functionality error if something that you expect it to do is hard, awkward, confusing, or impossible.
These errors occur in communication from software to end-user. Anything that the end user needs to know in order to use the software should be made available on screen.
Missing command errors:
This happens to occur when an expected command is missing
Syntactic errors are misspelled words or grammatically incorrect sentences and are very evident while testing software GUI. Please note that we are NOT referring to syntax errors in code. The compiler will warn the developer about any syntax errors that occur in the code
Note the misspelled word ‘Cancel’:
Note the grammatically incorrect message:
Error handling errors:
Any errors that occur while the user is interacting with the software needs to be handled in a clear and meaningful manner. If not, it is called as an Error Handling Error.
Take a look at this image. The error message gives no indication of what the error actually is. Is it missing mandatory field, saving error, page loading error or is it a system error? Hence, this is an ‘Error Handing Error’.
These errors occur due to any of the following reasons:
● Bad logic
● Incorrect formula
● Data type mismatch
● Coding errors
● Function call issues , etc.
Control flow errors:
The control flow of a software describes what it will do next and on what condition.
For example, consider a system where user has to fill in a form and the options available to user are: Save, Save and Close, and Cancel. If a user clicks on ‘Save and Close’ button, the user information in the form should be saved and the form should close. If clicking on the button does not close the form, then it is a control flow error.
Definition by IEEE
- The degree to which a system, component, or process meets specified requirements.
- The degree to which a system, component, or process meets customer or user needs or expectations.
1.5 Definition of QA, QC QM and SQA
|Quality Assurance||Quality Control|
|QA includes activities that ensure the implementation of processes, procedures and standards in context to verification of developed software and intended requirements.||It includes activities that ensure the verification of a developed software with respect to documented (or not in some cases) requirements.|
|Focuses on processes and procedures rather than conducting actual testing on the system.||Focuses on actual testing by executing the software with an aim to identify bug/defect through implementation of procedures and process.|
|Process-oriented activities.||Product-oriented activities.|
|Preventive activities.||It is a corrective process.|
|It is a subset of Software Test Life Cycle (STLC).||QC can be considered as the subset of Quality Assurance.|
QM- 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 while also meeting any necessary regulatory and developer requirements, if any Software quality managers require software to be tested before it is released to the market, and they do this using a cyclical process-based quality assessment in order to reveal and fix bugs before release. Their job is not only to ensure their software is in good shape for the consumer but also to encourage a culture of quality throughout the enterprise.
Quality management activities
Software quality management activities are generally split up into three core components: quality assurance, quality planning, and quality control. Some like software engineer and author Ian Sommerville don’t use the term “quality control” (as quality control is often viewed as more a manufacturing term than a software development term), rather, linking its associated concepts with the concept of quality assurance. However, the three core components otherwise remain the same.
By setting up an organized and logical set of organizational processes and deciding on that software development standards — based on industry best practices — that should be paired with those organizational processes, software developers stand a better chance of producing higher quality software. However, linking quality attributes such as “maintanability” and “reliability” to processes is more difficult in software development due to its creative design elements versus the mechanical processes of manufacturing. Additionally, “process standardization can sometimes stifle creativity, which leads to poorer rather than better quality software.”
This stage can include:
- encouraging documentation process standards, such as the creation of well-defined engineering documents using standard templates
- mentoring how to conduct standard processes, such as quality reviews
- performing in-process test data recording procedures
- identifying standards, if any, that should be used in software development processes
Quality planning works at a more granular, project-based level, defining the quality attributes to be associated with the output of the project and how those attributes should be assessed. Additionally, any existing organizational standards may also be assigned to the project at this phase. Attributes such as “robustness,” “accessibility,” and “modularity” may be assigned to the software development project.] While this may be a more formalized, integral process, those using a more agile method of quality management may place less emphasis on strict planning structures. The quality plan may also address intended market, critical release dates, quality goals, expected risks, and risk management policy.
The quality control team tests and reviews software at its various stages to ensure quality assurance processes and standards at both the organizational and project level are being followed. (Some like Sommerville link these responsibilities to quality assurance rather than call it quality control.) These checks are optimally separate from the development team so as to lend more of an objective view of the product to be tested. However, project managers on the development side must also assist, helping to promote as part of this phase a “culture that provides support without blame when errors are discovered.” In software development firms implementing a more agile quality approach, these activities may be less formal; however, a switch to agile methods from a more formal quality management structure may create problems if management procedures aren’t appropriately adapted.
- release testing of software, including proper documentation of the testing process
- examination of software and associated documentation for non-conformance with standards
- follow-up review of software to ensure any required changes detailed in previous testing are addressed
- application of software measurement and metrics for assessment
What is SDLC?
The Software Development Lifecycle is a systematic process for building software that ensures the quality and correctness of the software built. SDLC process aims to produce high-quality software which meets customer expectations. The software development should be complete in the pre-defined time frame and cost.
SDLC consists of a detailed plan which explains how to plan, build, and maintain specific software. Every phase of the SDLC lifecycle has its own process and deliverables that feed into the next phase.
Here, are prime reasons why SDLC is important for developing a software system.
- It offers a basis for project planning, scheduling, and estimating
- Provides a framework for a standard set of activities and deliverables
- It is a mechanism for project tracking and control
- Increases visibility of project planning to all involved stakeholders of the development process
- Increased and enhance development speed
- Improved client relations
- Helps you to decrease project risk and project management plan overhead
Also Read: Types Of Threads In Operating System
The entire SDLC process divided into the following stages:
- Phase 1: Requirement collection and analysis
- Phase 2: Feasibility study:
- Phase 3: Design:
- Phase 4: Coding:
- Phase 5: Testing:
- Phase 6: Installation/Deployment:
- Phase 7: Maintenance:
In this tutorial, I have explained all these phases
Phase 1: Requirement collection and analysis:
The requirement is the first stage in the SDLC process. It is conducted by the senior team members with inputs from all the stakeholders and domain experts in the industry. Planning for the quality assurance requirements and recognization of the risks involved is also done at this stage.
This stage gives a clearer picture of the scope of the entire project and the anticipated issues, opportunities, and directives which triggered the project.
Requirements Gathering stage need teams to get detailed and precise requirements. This helps companies to finalize the necessary timeline to finish the work of that system.
Phase 2: Feasibility study:
Once the requirement analysis phase is completed the next step is to define and document software needs. This process conducted with the help of ‘Software Requirement Specification’ document also known as ‘SRS’ document. It includes everything which should be designed and developed during the project life cycle.
There are mainly five types of feasibilities checks:
- Economic: Can we complete the project within the budget or not?
- Legal: Can we handle this project as cyber law and other regulatory framework/compliances.
- Operation feasibility: Can we create operations which is expected by the client?
- Technical: Need to check whether the current computer system can support the software
- Schedule: Decide that the project can be completed within the given schedule or not.
Phase 3: Design:
In this third phase, the system and software design documents are prepared as per the requirement specification document. This helps define overall system architecture.
This design phase serves as input for the next phase of the model.
There are two kinds of design documents developed in this phase:
High-Level Design (HLD)
- Brief description and name of each module
- An outline about the functionality of every module
- Interface relationship and dependencies between modules
- Database tables identified along with their key elements
- Complete architecture diagrams along with technology details
- Functional logic of the modules
- Database tables, which include type and size
- Complete detail of the interface
- Addresses all types of dependency issues
- Listing of error messages
- Complete input and outputs for every module
Phase 4: Coding:
Once the system design phase is over, the next phase is coding. In this phase, developers start build the entire system by writing code using the chosen programming language. In the coding phase, tasks are divided into units or modules and assigned to the various developers. It is the longest phase of the Software Development Life Cycle process.
In this phase, Developer needs to follow certain predefined coding guidelines. They also need to use programming tools like compiler, interpreters, debugger to generate and implement the code.
Phase 5: Testing:
Once the software is complete, and it is deployed in the testing environment. The testing team starts testing the functionality of the entire system. This is done to verify that the entire application works according to the customer requirement.
During this phase, QA and testing team may find some bugs/defects which they communicate to developers. The development team fixes the bug and send back to QA for a re-test. This process continues until the software is bug-free, stable, and working according to the business needs of that system.
Phase 6: Installation/Deployment:
Once the software testing phase is over and no bugs or errors left in the system then the final deployment process starts. Based on the feedback given by the project manager, the final software is released and checked for deployment issues if any.
Phase 7: Maintenance:
Once the system is deployed, and customers start using the developed system, following 3 activities occur
- Bug fixing – bugs are reported because of some scenarios which are not tested at all
- Upgrade – Upgrading the application to the newer versions of the Software
- Enhancement – Adding some new features into the existing software
The main focus of this SDLC phase is to ensure that needs continue to be met and that the system continues to perform as per the specification mentioned in the first phase.
Popular SDLC models
Here, are some most important phases of SDLC life cycle:
The waterfall is a widely accepted SDLC model. In this approach, the whole process of the software development is divided into various phases. In this SDLC model, the outcome of one phase acts as the input for the next phase.
This SDLC model is documentation-intensive, with earlier phases documenting what need be performed in the subsequent phases.
The incremental model is not a separate model. It is essentially a series of waterfall cycles. The requirements are divided into groups at the start of the project. For each group, the SDLC model is followed to develop software. The SDLC process is repeated, with each release adding more functionality until all requirements are met. In this method, every cycle act as the maintenance phase for the previous software release. Modification to the incremental model allows development cycles to overlap. After that subsequent cycle may begin before the previous cycle is complete.
In this type of SDLC model testing and the development, the phase is planned in parallel. So, there are verification phases on the side and the validation phase on the other side. V-Model joins by Coding phase.
Agile methodology is a practice which promotes continue interaction of development and testing during the SDLC process of any project. In the Agile method, the entire project is divided into small incremental builds. All of these builds are provided in iterations, and each iteration lasts from one to three weeks.
The spiral model is a risk-driven process model. This SDLC model helps the team to adopt elements of one or more process models like a waterfall, incremental, waterfall, etc.
This model adopts the best features of the prototyping model and the waterfall model. The spiral methodology is a combination of rapid prototyping and concurrency in design and development activities.
Big bang model
Big bang model is focusing on all types of resources in software development and coding, with no or very little planning. The requirements are understood and implemented when they come.
This model works best for small projects with smaller size development team which are working together. It is also useful for academic software development projects. It is an ideal model where requirements is either unknown or final release date is not given.
Software Quality Factors
What is Software Quality Metrics?
The word ‘metrics’ refer to standards for measurements. Software Quality Metrics means measurement of attributes, pertaining to software quality along with its process of development.
The term “software quality metrics”illustrate the picture of measuring the software qualities by recording the number of defects or security loopholes present in the software. However, quality measurement is not restricted to counting of defects or vulnerabilities but also covers other aspects of the qualities such as maintainability, reliability, integrity, usability, customer satisfaction, etc.
Why Software Quality Metrics?
- To define and categorize elements in order to have better understanding of each and every process and attribute.
- To evaluate and assess each of these process and attribute against the given requirements and specifications.
- Predicting and planning the next move w.r.t software and business requirements.
- Improving the Overall quality of the process and product, and subsequently of project.
Software Quality Metrics: sub-category of Software Metrics
It is basically, a subclass of software metrics that mainly emphasizes on quality assets of the software product, process and project. Software metric is a broader concept that incorporates software quality metrics in it, and mainly consists of three types of metrics:
- Product Metrics:
It includes size, design, complexity, performance and other parameters that are associated with the product’s quality.
- Process Metrics:
It involves parameters like, time-duration in locating and removing defects, response time for resolving issues, etc.
- Project Metrics:
It may include number of teams, developers involved, cost and duration for the project, etc.
Methodology Of Software Quality Metrics
The methodology behind software quality metric is as under:
- Identify and prepare the list of possible requirements of quality, and subsequently, assigning direct metric, such as understanding, learning and operation time, to each of these requirements.
- Apply metrics framework, along with the cost-benefit analysis.
- Implementing metrics via collecting and defining data to compute metric values.
- Interpret and analyse the results, to ensure the fulfilment of requirements.
- Validate the metrics through validation methodology and thereafter proper documentation of the results.
Features of good Software Quality Metrics
- Should be specific to measure the particular attribute or an attribute of greater importance.
- Comprehensive for wide variety of scenarios.
- Should not consider attributes that have already been measured by some other metric.
- Reliable to work similarly in all conditions.
- Should be easy and simple to understand and operate.
It is not possible to manage anything until you can’t measure it. Software quality metric provides an effective way to manage the quality of the larger processes of Software Development Life Cycle (SDLC) along with task of managing the software quality throughout the development cycle.
1- Product operation:
Correctness is the extent to which a program satisfies its specifications.
Reliability is the property that defines how well the software meets its requirements.
Efficiency is a factor relating to all issues in the execution of software; it includes considerations such as response time, memory requirement, and throughput.
Usability, or the effort required locating and fixing errors in operating programs.
2- Product transition:
Portability is the effort required to transfer the software from one configuration to another.
Reusability is the extent to which parts of the software can be reused in other related applications.
3- Product revision:
Maintainability is the effort required to maintain the system in order to check the quality.
Testability is the effort required to test to ensure that the system or a module performs its intended function.
Flexibility is the effort required to modify an operational program.
Thank you so much for reading. Share this notes with your mates who needs this.