Software testing

Process

First of all, the process of software testing is never ending, because the product always need to be improved and every time you do it you need to test it again. Now lets talk about the steps of the software testing process.

  1. Planning
  2. Creation of scenarios
  3. Preparation of test environment and data creation
  4. Run the scenarios
  5. Reporting results

Software testing is an iterative process and continues after the software is completed.

Types and levels

When we say testing, we see that there are different types of tests. Test types have a per-category in terms of levels, types and processes. Each type of test can be an article in its own right or even a book

Activities and roles

Test lead/manager: A test lead is responsible for:

  • Defining the testing activities for subordinates – testers or test engineers.
  • All responsibilities of test planning.
  • To check if the team has all the necessary resources to execute the testing activities.
  • To check if testing is going hand in hand with the software development in all phases.
  • Prepare the status report of testing activities.
  • Required Interactions with customers.
  • Updating project manager regularly about the progress of testing activities.

Test engineers/QA testers/QC testers are responsible for:

  • To read all the documents and understand what needs to be tested.
  • Based on the information procured in the above step decide how it is to be tested.
  • Inform the test lead about what all resources will be required for software testing.
  • Develop test cases and prioritize testing activities.
  • Execute all the test case and report defects, define severity and priority for each defect.
  • Carry out regression testing every time when changes are made to the code to fix defects.

Testing environments

A testing environment is a setup of software and hardware for the testing teams to execute test cases. In other words, it supports test execution with hardware, software and network configured.

Key areas to set up in Test Environment:

  • System and applications
  • Test data
  • Database server
  • Front-end running environment
  • Client operating system
  • Browser
  • Hardware includes Server Operating system
  • Network
  • Documentation required like reference documents/configuration guides/installation guides/ user manuals

Specification-Based or Black-Box techniques: create tests, primarly, by analysis of the test basis and tracing the bugs in order to know how the system behaves.

Structure-Based or White-Box techniques: code coverage, statement and decision coverage, and control flow test design technique.

Experience-Based techniques: based on the testers skill, perception, experience with similar applications, and experience with similar technologies.

Process for control and management of defects in artifacts

  1. Defect prevention
  2. Deliverable baseline
  3. Defect discovery
  4. Defect resolution
  5. Process improvement

Models and Standards for Software Process Improvement

Mastery 02

To help software process improvement, there are several models. These models evaluate the software product, project, quality, and drawback. All purpose is to control and optimize the software process. I am going to talk about some of the most populars.

CMMI

Capability Maturity Model Integration is a process level improvement training and appraisal program. CMMI was developed by a group from industry, government, and the Software Engineering Institute (SEI) at CMU. CMMI models provide guidance for developing or improving processes that meet the business goals of an organization.

CMM has 5 maturity levels to assess software process. They are Initial level, Repeatable level, Defined level, Managed level and Optimizing level.

Initial Level

Software processes are chaotic and the company could not assure the success when repeating the same kind of project.

Repeatable Level

The basic project management processes are established, which include software configuration management, software quality assurance, software subcontract management, software project tracking and supervision, software project planning and requirement management.

Defined Level

It focuses on engineering process. The management and engineering of software processes are integrated, which include peer review, inter-group coordination, software product engineering, integrated software management, training program, organisation process definition, and organisation process focus.

Managed Level

It concentrates on product and process quality, detail measures are used to control the process, which include the quality management and process measurement and analysis.

Optimizing Level

Continuous process improvement. It make the continual process improvement is enabled. It includes process change management, technology innovation and defect prevention.

The SEI published a study saying 60 organizations measured increases of performance in the categories of cost, schedule, productivity, quality and customer satisfaction.

TSP/PSP

PSP

Personal software process. It is a personal process that, being based on the principles of improvement, helps people to establish their personal goals, identify what methods they will use, measure their work and analyze the results, to adjust the methods they use to meet their goals.

PSP is a defined process to help perform the work better, whose objective is to obtain and report accurate and complete data of the work that is being done at an individual level, in order to improve the individual process, thus affecting to the performance of the entire team.

TSP

Team software process. It is a software engineering model that provides an emphasis on processes, products, and teamwork. The TSP is based on the principles of PSP to carry out the processes and principles of software engineering in a teamwork environment.

A defined strategy is required to work together in a coordinated manner, establish responsibilities and monitor progress. This is achieved by having common goals, agreeing on action plans and appropriate leadership.

The strengths / weaknesses of each team member and how they support team performance should be understood.

ISO-15504

Software Process Improvement Capability Determination.

ISO / IEC 15004 SPICES is a tool with the following objectives:

  • Propose and develop a software process evaluation standard.
  • Evaluate your performance by experimenting in the emerging software development industry
  • Promote the evaluation of software processes to the software industry worldwide.

The SPICE standard establishes requirements for an evaluation of processes and evaluation models, pretending that these requirements can be applied in any evaluation model in an organization.

In general, the requirements for process evaluation include:

  • Process evaluation
  • Process improvement
  • Evaluation of the capacity and / or maturity of the processes

MOPROSOFT

Modelo de Procesos para la Industria del Software. It is a model for the improvement and evaluation of the development and maintenance processes of software systems and products. Developed by the Mexican Association for Quality in Software Engineering through the Faculty of Accounting and Administration of the National Autonomous University of Mexico (UNAM) and at the request of the Ministry of Economy to obtain a Mexican standard that is appropriate to the characteristics of size of the vast majority of Mexican software development and maintenance companies.

The following criteria have been applied for the elaboration of this model:

  • The resulting process structure must be in accordance with the structure generally used by organizations in the software industry.
  • The model considers management as a provider of resources, processes and projects; as well as responsible for monitoring compliance with the strategic objectives of the organization.
  • The model considers the operation as the executor of software development and maintenance projects.
  • The model clearly and consistently integrates the essential elements for defining the processes and the relationships between them.
  • The model integrates the elements for engineering software products in a single framework that includes the precise support processes (verification, validation, documentation and documentation control).

Moprosoft is based on the ISO 9001: 2000 process models, in the CMM-SW level 2 and 3 process areas: CMM-SW v.1.1., In the general ISO / IEC15504 framework and in practices and concepts of PMBOK AND SWEBOK.

IDEAL method

When applying the IDEAL model it should be remembered that there are two components to a software process im-provement activity, a strategic component along with a tac-tical component

  • A strategic level, in which there are processes that are the responsibility of senior management.
  • A tactical level, in which processes are modified, created and executed by line managers and practitioners.

There are 5 phases on this model:

  • Initiating Phase
  • Diagnosing Phase
  • Establishing Phase
  • Acting Phase
  • Leveraging Phase

I found a very interesting guide in which there are recommendations and intructions to show how this model works and how to aply it on a real environment. I recommend you to take a look to understand each of the phases, I think is very useful.


IDEALSM: A User’s Guide for Software Process Improvement: https://resources.sei.cmu.edu/asset_files/Handbook/1996_002_001_16433.pdf

Defining software quality

Mastery 01

What is software quality ?

It is defined as a field of study and practice that describes the desirable attributes of software products. Software quality is also the degree of conformance to explicit or implicit requirements and expectations.

image from: https://www.scnsoft.com/blog/quality-management-optimization

Why is software quality important?

There are some ways that software quality can impact your business or your team.

Predictability: do it once and do it right, and there will be less re-work, less variation in productivity and better performance overall.

Reputation: building quality software bring reputation to the company or team; it becomes a part of their brand and it becomes the expectation people have of them.

Employee/teammates morale: the most productive and happy employees/teammates have pride in their work. Enabling employees to build quality software will drive a much higher level of morale and productivity.

 Customer satisfaction: a satisfied customer comes back for more and provides positives referrals. Generates customer loyalty.

Stonks | Know Your Meme
image from: https://knowyourmeme.com/memes/stonks

Process of software quality

Quality management: field that ensures the required level of quality is achieved in software product. It has 4 sub processes: quality assurance, quality planning, quality control and quality improvement.

Quality assurance: is a planned and systematic way of creating an environment to assure that the software product being developed meets the quality requirements. Implementation of well-defined standard practices and methods.

Quality planning: creation of quality assurance plan for a particular project. Organizational standards are selected which are applicable to a project. It should also involve the plan for quality control.

Quality control: activities and techniques to verify that the developed product is in conformance with the requirements. Identifies any bugs that might be present, meaning that it is a corrective process, falling under the quality assurance.

Quality improvement: analyze the feedback received from the quality control team. Identify any room of improvements in the existing standards and procedures.

Difference between quality assurance and quality control

These concepts may seem similar, but they are different and each one of them describes a different phase of the main process in software quality. The difference between QA and QC is that QA is conducted during the software development. In the other hand, QC is performed after the software has been developed.

Focusing on quality assurance

Quality assurance is the most important step or phase to achieve software quality because it is involved in how you are building your project, from the beginning of the software life cycle. We can tell that quality assurance is a subprocess of the main process to achieve software quality. I found an interesting picture that shows this process.

image from: https://www.scnsoft.com/blog/qa-process#qa-vs-qc

The role of standards in software quality

In order to maintain the order focusing on the quality assurance, infrastructure and requirements of a project there are some standards that help us to rule what do we need to do in order to achieve an acceptable level of quality. It is important to know that these standards often focus on the “What” to do instead of the “How”. There are many software quality standards, like CMMI or ISO-15504. I will talk deeply about them on my next mastery topic blog.

This was my summary of what I understand based on my investigation on each topic, if you want to go deeper on any of this subjects you can visit the website where I got the information in the first place.

References of the mastery blog:

https://asq.org/quality-resources/software-quality

Software Quality

https://smartbear.com/blog/test-and-monitor/5-reasons-why-software-quality-matters-to-your-bus/

https://reqtest.com/testing-blog/quality-assurance-vs-quality-control-differences-2/

https://www.tutorialspoint.com/software_quality_management/software_quality_management_standards_and_certificates.htm