The Difference Between Verification and Validation in Software Testing

The Difference Between Verification and Validation in Software Testing
The Difference Between Verification and Validation in Software Testing

Learning the difference between verification and validation is essential for any software engineer. Both elements of the software development life cycle (SDLC) are critical to high product quality. Software verification and validation require engineers to answer different questions.  

Computer scientist Barry Boehm offers a clear difference between verification and validation. In Boehm’s construction, each process asks a distinct question (source):  

  • In verification, engineers ask, “Am I building the product right?” 
  • In validation, engineers ask, “Am I building the right product?”  

During the verification stage, software professionals determine if their work matches technical specifications. The validation stage evaluates whether a product meets the goals of consumers and clients.  

You will see the difference between verification and validation as you progress through your career. To start down this path, it is helpful to understand how software verification and validation became the industry standard. 

Difference Between Verification and Validation: Origins

Early computers followed simple code to complete basic tasks. As computers and programs evolved, new complexities and demands strained at the limits of available software.  

SDLC processes emerged from the Cold War relationship between computer scientists and government agencies. An expensive error in America’s space race against the Soviet Union led to the development of software verification and validation. 

Mariner I and the Need for Software Verification and Validation

The National Aeronautics and Space Administration (NASA) led America’s efforts to reach space. NASA experienced struggles in the years prior to the historic Apollo 11 landing on the moon in 1969.  

On July 22, 1962, NASA planned to send Mariner I on a quick pass of Venus. Mariner I and its accompanying Atlas rocket lifted off and crashed within minutes. The cause of Mariner I’s crash was a missing hyphen in the onboard computer’s code (source).  

Including the hyphen would have continued Mariner I’s mission as originally designed. The missing hyphen directed the rocket to adjust downward toward the ground based on radar direction (source).  

Scientists and designers involved in Mariner I did not know the difference between verification and validation. In fact, current standards of software verification and validation did not exist. Avoiding similar failures in the future drove a massive push for testing standards in the public and private sectors. 

Difference Between Verification and Validation: Early Standards

The National Institute of Standards and Technology (NIST) studied software verification and validation standards post-Mariner I. Verification and validation guidelines spread from the public to private realms through standards like (source):  

  • 1970 U.S. Air Force standards for nuclear weapon systems software
  • 1978 Software development standards for U.S. Navy computers
  • 1983 Software industry guidance for validation, verification, and testing
  • 1986 Software verification and validation plans for all software types 

Over a 25-year period, the difference between verification and validation went from non-existent to well-defined. We can look at NASA’s current standards for software verification and validation to view lessons learned from Mariner I. 

NASA Defines the Difference Between Verification and Validation

NASA’s Systems Engineering Handbook helps its staff understand the difference between verification and validation.  NASA instructs readers to use verification throughout the development of a system. The handbook’s definition of verification is (source):  

“Verification of a product shows proof of compliance with requirements — that the product can meet each ‘shall’ statement as proven through performance of a test, analysis, inspection, or demonstration (or combination of these).  

NASA places an emphasis on validation testing for end products in simulated environments. The difference between verification and validation is made clear by NASA’s definition of validation (source):  

“Validation of a product shows that the product accomplishes the intended purpose in the intended environment — that it meets the expectations of the customer and other stakeholders as shown through performance of a test, analysis, inspection or demonstration.”  

Both software verification and validation can take place at any point in a system’s life. The primary difference between verification and validation is the purpose of each exercise. Verification determines if a product meets specifications, while validation determines if the system is useful to the typical user. 

Difference Between Verification and Validation: Processes

Computer scientists and software companies have further advanced software verification and validation since the 1970s. An early advocate for verification and validation approaches used today was Winston Royce.  

Royce was a computer scientist who published Managing the Development of Large Software Systems in 1970. The manuscript detailed seven phases typical of any system’s development (source):  

  • System requirements
  • Software requirements
  • Analysis
  • Program design
  • Coding
  • Testing
  • Operations 

Royce argued that iteration from step to step should be restricted to the next step. For example, iteration should take place between analysis and program design or coding and testing. Royce viewed iterations across multiple steps as inefficient and ineffective.  

Managing the Development of Large Software Systems acted as a predecessor to the Waterfall development standard. Waterfall draws on five adjustments suggested by Royce to improve project success (source):  

  1. Program design comes first
  2. Document every element of design
  3. Do every step twice
  4. Plan, control, and monitor testing
  5. Engage the customer in the development process 

Software developers and engineers still use versions of Royce’s methods in current projects. Strict adherence to the Waterfall method has become less common as it works best on large-scale projects. The Royce-inspired approach still offers the following advantages:  

  • Durable enough to survive personnel changes
  • Instills discipline through each step
  • Iteration allows for design adaptation
  • Establishes milestones necessary for the corporate environment

Additional Software Verification and Validation Methods

The difference between verification and validation in Waterfall is enhanced because of a deliberate design process. In recent years, development teams have gone in different directions to define their work.  

Robert Half evaluated the software industry and found five additional development processes. These methods include (source):  

  • Agile
  • Lean
  • Iterative
  • Spiral
  • DevOps 

A common thread among these different approaches to software verification and validation is speed. We also see the difference between verification and validation after learning about each process.  

Agile in a software context places its emphasis on fixing small errors throughout development. Failing fast and early means that developers focus on adding value to software instead of fixing basic problems. Understanding the difference between verification and validation in Agile is important as each step happens in a hurry (source).  

Agile is a subset of Lean principles taken from the manufacturing sector. In Lean, software verification and validation meets the primary goal of eliminating resource waste. An efficient and speedy development process leads to satisfied customers (source).  

Iterative and Spiral methods for software development reliant on repetition. Projects that use the Iterative approach create a new software version at each stop along the SDLC. Spiral-based projects place products through multiple rounds of planning, risk analysis, engineering, and evaluation reviews (source). 

DevOps teams deploy automation, continuous feedback, and process improvement techniques for maximum efficiency. A DevOps project requires advanced knowledge of software verification and validation to meet ambitious timelines. In some cases, these tasks are assigned to automated systems to open developer time for high-level projects. 

Difference Between Verification and Validation: Impacts

The Mariner I crash is an early example of how software verification and validation can avert costly failures. Mariner I was estimated to cost $80 million to develop and revealed NASA’s early struggles (source).  

Failure to understand the difference between verification and validation techniques is not NASA’s problem alone. The software industry lost $59.5 billion in bugs in 2002. The costs of poor software verification and validation grew to $1.1 trillion in 2016 (source).  

The long-term costs of poor processes include waning customer loyalty and reputational harm. A look into the recent past shows how major companies have been impacted by avoidable software glitches. 

Differences Between Verification and Validation: Notable Errors

AT&T’s long-distance calling system experienced a nationwide shutdown in January 1990. A software update included a bug that shut down relay switches. The telecommunications company lost $60 million in fees during the nine-hour shutdown (source). 

Software verification and validation failures turned Microsoft users into pirates in August 2007. The company’s Genuine Advantage system determined that Vista users received their copies illegally. An early version of Genuine Advantage was applied to Vista, creating embarrassment for the software giant (source). 

Apple’s competitor to Google Maps unveiled in 2012 featured missing landmarks and misplaced streets. Apple Maps was developed in a rush and lacked adequate software verification and validation. Google Maps remains dominant among consumers because of a thorough development process (source). 

These failures and others go beyond understanding the differences between verification and validation. You can avoid costly errors by keeping the potential costs of flawed processes in mind. 

Difference Between Verification and Validation: Skills

Software verification and validation are vital steps in the projects completed by developers and engineers. The difference between verification and validation becomes common knowledge after years of development. Your success in software development depends on building skills in high demand by employers.  

What Technical Skills Are Employers Looking For? 

Tech job site Hired reviewed interview data for 98,000 software developers around the world in 2019. An important outcome of this survey was the gap in programming language knowledge and demand. Software engineers favored the following languages (source):    

  • JavaScript (63%)
  • Python (44%)
  • Java (38%) 

By contrast, interview requests from employers showed demand for other languages (source):  

  • Go (9.2 requests per candidate with skill)
  • Scala (8.5 requests per candidate with skill)
  • Ruby (8.2 requests per candidate with skill) 

Understanding multiple languages makes you an invaluable resource in the software development process. You know how to turn software verification and validation results into product changes. 

What Interpersonal Skills are Employers Looking For? 

LinkedIn studied the skills most sought after in more than 20 million job listings in 2019. Software engineers and developers obviously need technical skills to succeed in their work. To rise above the competition, however, you will need interpersonal skills that encourage team success.  

Your interpersonal skill set should adopt the following top results from LinkedIn (source):  

  • Creativity
  • Persuasion
  • Collaboration
  • Adaptability
  • Emotional intelligence 

It is easy to see why these skills work well in the SDLC context. Persuasion, collaboration, and emotional intelligence allow you to keep colleagues on track to project completion. Creativity and adaptability are critical skills for completing software verification and validation benchmarks.  

Learning Software Verification and Validation

Understanding the difference between verification and validation shows a sophisticated knowledge of software development processes. You can strengthen your curiosity, knowledge, and technical skills with an advanced degree. After graduation, you are ready to lead software projects from start to finish.  

Baylor University offers a Masters in Computer Science Online ideal for future software developers. The Software Engineering track emphasizes software architecture, testing, and design skills on demand in the industry.  

As an emerging software professional, you have a lot of options for graduate education. Baylor University provides a strong return on investment for promising engineers like you. 

The Benefits of a Baylor University Degree

Baylor’s programs put graduates on the right path thanks to a stellar reputation. U.S. News & World Report’s 2020 rankings show how higher education experts view the school (source):  

  • No. 42 in Most Innovative Schools
  • No. 75 in Best Value Schools
  • No. 79 in National Universities 

Your search for the right program need not rely on a single data source. Forbes placed Baylor among the nation’s best schools with rankings including (source):  

  • No. 108 in Research Universities
  • No. 141 in Private Colleges
  • No. 202 in Top Colleges 2019 

The Online Masters in Computer Science prepares you for the workplace with courses like software verification and validation. A Baylor University degree on your resume puts you in contention for the industry’s top jobs.  

Begin the next stage of your software engineering career today by reaching out to an enrollment advisor.