Tools for V&V

Tools for Version Control

Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later.

Local Control System:

Many people’s version-control method of choice is to copy files into another directory. This is very common because it is so simple, but it is also incredibly error prone. It is easy to forget which directory you’re in and accidentally write to the wrong file or copy over files you don’t mean to.

Centralized Version Control Systems:

These systems have a single server that contains all the versioned files, and a number of clients that check out files from that central place.

Git:

  • Provides strong support for non-linear development.
  • Distributed repository model.
  • Compatible with existing systems and protocols like HTTP, FTP, ssh.
  • Capable of efficiently handling small to large sized projects.
  • Pluggable merge strategies.
  • Toolkit-based design.

CVS:

  • Client-server repository model.
  • Multiple developers might work on the same project parallelly.
  • Keeps a historical snapshot of the project.
  • ‘Update’ command to keep local copies up to date.
  • Can uphold different branches of a project.

Tools for Testing

HPE Unified Functional Testing

 HPE Unified Functional Testing offers testing automation for functional and regression testing for software applications, and offers various features like:

  • Integration with Mercury 
  • Error handling mechanism
  • Creation of parameters for objects, checkpoints, and data-driven tables

Selenium

Selenium is a testing framework to perform web application testing across various browsers and platforms like Windows, Mac, and Linux. Selenium helps the testers to write tests in various programming languages like Java, PHP, C#, Python, Groovy, Ruby, and Perl.

Tools for process administration of V&V

Notion:

A very innovative tool that serves as a all-in-one workspace. It supports many features, for productivity, design, and of course, task management. An alternative to Jira, and great for managing the status of processes. It also supports markdown.

Jira:

Jira is a great software management tool that is widely used in many companies. It is very robust and offers many features that help the management of tasks and processes, and it can be integrated with other tools.

Software Testing

Software Testing is the process of evaluating and verifying that a software product or application does what it is supposed to do. The benefits of testing include preventing bugs, reducing development costs and improving performance.

There are four main levels of testing:

  • Unit Testing: Validating that each software unit performs as expected. A unit is the smallest testable component of an application. In an object-oriented environment, this is usually at the class level, and the minimal unit tests include the constructors and destructors.
  • Integration Testing: Ensuring that software components or functions operate together. Normally the former is considered a better practice since it allows interface issues to be located more quickly and fixed.
  • System Testing: System testing tests a completely integrated system to verify that the system meets its requirements.
  • Acceptance Testing: This includes one of the next types:
    • User acceptance testing
    • Operational acceptance testing
    • Contractual and regulatory acceptance testing
    • Alpha and beta testing

While we are testing software, we have to assume different roles, so the job can be done correctly:

  • Manager: The manager is the responsible of defining the testing activities, check the team has the necessary resources to perform the testing activities, prepare the status report of testing activities, interact with clients.
  • Test Engineer: The test engineer has to understand what needs to be tested. Also, he decides the way it is tested, informs the test leader about what resources will be required for the testing activities, and many more.

Testing Environments:

  • Setup of test server with support of needed applications
  • Network setup
  • Test PC setup for running the software product
  • Provide bug reporting tools
  • Create test data for testing environment

To test the software, there are different techniques, here I write some of them:

  • Boundary Value Analysis (BVA)
  • Decision Table Based Testing
  • State Transition
  • Error guessing

Verification and Validation of Software (V&V)

In Software Development, the terms verification and validation are used very often. We use these concepts almost every day while we are working in some project. The thing is, that they have different meanings and many people think that this is a synonym. Let’s define each:

  • Verification: The evaluation of whether or not a product, service, or system complies with a regulation, requirement, specification, or imposed condition. It is often an internal process. Contrast with validation. Simply “Are we building the system right? Concerned with the team for the customer”
  • Validation: The assurance that a product, service, or system meets the needs of the customer and other identified stakeholders. It often involves acceptance and suitability with external customers. Contrast with verification. Simply “Are we building the right system? Concerned with the customer”

How is it used in SDLC phases:

PhaseVerificationValidation
Requirements ElicitationThe analyst should verify that each requirement is unique and it has a purpose and origin, as well he/she verify that the requirements are doable, in scope, and testable.The analyst should validate the requirements with the customer to better understand them through different analysis techniques.
Architecture & DesignThe architect and software designer will verify that the software designs are meeting the non-functional requirements, for example, performance and usability.If the software has a UI, should be validated with the customer and the analyst to ensure meeting the customers’ requirements and their expectations.
Implementation (Coding)Similarly, during implementation and coding, the developers start doing unit and integration test for their code, and they may have peer review and static code analysis.During the implementation, the developers may find part of the requirements is not clear or incomplete, they may need to validate that with the customer.
TestingIn this phase, testing and quality team should test the requirements and ensure that all test cases have been passed, all functionalities are working fine and there is enough and acceptable code coverage.The testing team should ensure that the software meets the business requirements and is fit for use by building the user acceptance test cases and validate it with the customers.
DeploymentAuditing of installation and configuration of the environment, run smoke tests to ensure everything is working fine with each release.Making sure that the software is working after installation and configuration.
Operational SupportVerify that the software is up without downtime, there are no data issues and logs are clear.Validating that the software operation is smooth. There are no logical errors or something is broken, evaluate the changes and new requirements.

International Standard For V&V Regulations

ISO 9001 Quality management systems – Requirements requires verification and validation to be planned and carried out and records kept.

IEEE 1012 – Standard for Software Verification and Validation provides a comprehensive how-to for software V&V planning and execution.

Planning V&V

This action includes the commencement, arrangement of reaction, contract, arranging, execution and control, survey and assessment, and conveyance and finish exercises, honesty levels, and so on.

Software Review

Software review is an important part of the software life cycle, assisting engineers in validating quality, functionality and other vital features and components in the software. Software review consists of testing the product and making sure that it meets the requirements stated by the client.

Some important points about software review:

  • Improves the productivity
  • It’s more effective
  • Plans time and costs
  • Eliminate bugs and garbage in the code

There exist three types of software review:

  • Software Peer Review: Focuses on the process of assessing the technical content and quality of the product, conducted by the author of the work product along with some other developers.
  • Software Manager Review: Software Management Review evaluates the work status. In this section decisions regarding downstream activities are taken.
  • Software Audit Review: It’s a type of external review in which one or more critics, not part of the development team, organize an independent inspection of the software product and its processes to assess their compliance with stated specifications and standards.

Software review is a very important part of SDLC, it is very useful to eliminate some errors at early stages of the development, some version controllers have tools that can help you with software review.

As for the processes and activities we usually have in software review:

  • Entry Evaluation
  • Management Preparation
  • Review Planning
  • Preparation
  • Examination and Exit Evaluation

The role of standards in Software Quality

The role of standards in Software Quality

CMMI

This was created for the U.S. Department of Defense to assess the quality of their softwares. CMMI is not used only for software, but also in other companies.

It is based in three areas:

  • Proccess development
  • Service establishment and managment
  • Product and service acquisition

These are the levels of the CMMI:

TSP/PSP

This model is a complement to the CMMI. The PSP model is oriented to work yourself, then the TSP is made to work and improve for teams,and the CMMI is Organizational.

This is very nice because first of all you need to know how to work alone, and then you can learn to work in teams.

ISO-15504

This model establishes requirements for an evaluation of process. Any requirements can be applied to evaluations models, so this can be applied to any product, not just softwares.

This model contains a reference that defines a process and capability dimension and can be divided in five categories:

  • Customer-supplies
  • Engineering
  • Supporting
  • Management
  • Organization

This model is the most “formal”, because it is approved and applied by many organizations. Also, it is the most “complicated” model, so this guarantees that the product will be very well qualified.

MOPROSOFT

It is a process reference model developed in Mexico, this standard is composed of four parts:

  • Part 01 Concepts and products definition
  • Part 02 Process requirements (MoProSoft)
  • Part 03 Process implementation guidelines
  • Part 04 Evaluation principles (EvalProSoft)

The MoProSoft process model consists of three layers or categories:

  • High Management: contains the Business Management process.
  • Management: composed of the Process Management, Projects Management and Resources Management processes.
  • Operation: includes the Specific Project Management process (SPM), Software Development and Maintenance process (SDM).

IDEAL method

The IDEAL model is named for the five phases an organization runs through in performing a change initiative: Initiating, Diagnosing, Establishing, Acting, Learning.

It’s an organizational improvement model which serves as a kind of roadmap for initiating, planning, and implementing process improvement actions for defect reductions.

This model is similar to the waterfall method, you first detect your problems, then you prepare a plan of action and then you follow it.

Software Quality

SOFTWARE QUALITY

When we are developing an app, it is very important that we make sure it works as we want. We must check that every one of our requirements is correct. For this, we use the Software Quality.

When we talk about software quality we refer to similar concepts:

Software Quality Atrributes Aproach

Focus on Process

Software Quality focus on the whole process of software development, this as its name says, ensure the quality of the whole process. Software development is done by different stages, thats way in order to achieve quality, you need to ensure that in the processes of a software product every step is done careful and target to satisfy the customers requirements.

Ensuring Software Quality

Making sure everything in the project works in an excellent way is hard to get. That’s why there exist many methodologies that help us to be sure our work is doing perfect.

The Quality Assurance

This method implements a systematic plan of all actions needed to provide adequate confidence that an item or product conforms to establish technical requirements:

  • Plan:
    • Plan and establish the process related objectives and determine the processes that are required to deliver the product.
  • Do
    • Development and testing of Processes and also “do” changes in the processes
  • Check
    • Monitoring of processes, modify the processes, and check whether it meets the predetermined objectives
  • Act
    • Implement actions that are necessary to achieve improvements in the processes

The role of standards in Software Quality

One way of measuring software quality is precisely through standards, for example we have the Software ISO standard. The standards are a way to define how are we going to be working or on what we need to focus. It is a process that assures that all software engineering processes, methods, activities and work items are monitored and comply against the defined standards, and they are approved by some organisation.

Welcome To my blog

This blog is for my Software Quality and Testing class. My name is Luis Eduardo Núñez Altamirano and I am studying Computer Systems Engineering at Tecnológico de Monterrey in Guadalajara, Mexico.

I will be posting and updating new content and every time will be a different topic, according to what we see in the class, but all related to the Testing and check the Quality of softwares.

Topics:

  • Software Quality
    • Defining Software Quality
    • A focus on process
    • Ensuring Software Quality
    • The role of standards in Software Quality
  • Models and Standards for Software Process Improvement
    • CMMI
    • TSP/PSP
    • ISO-15504
    • MOPROSOFT
    • IDEAL method
  • Verification and Validation of Software (V&V)
    • V&V in the life cycle of software development
    • International standards for V&V of Software
    • Planning V&V
    • Administration of a V&V Plan
  • Software Review
    • Definition and characteristics of review
    • Activities and roles for each review
    • How to review the key work products: plans, requirements, design, and code
  • Software Testing
    • Software testing process
    • Types and levels of testing
    • Activities and roles in testing
    • Testing environments
    • Test Case Design techniques (open and closed views)
    • Process for control and management of defects in artifacts
  • Tools for V&V
    • Tools for version control
    • Tools for testing
    • Tools for process administration of V&V

I hope I learn a lot of things along this semester. Thanks for reading.