Hi all :), this new topic involves tools that helps with Software Verification & Validation (V&V) focused on testing, but first, we need to do or usual sequence of learning something new, defining what is this!
When we talk about verification & validation, we talk about completely different things when we aboard testing, let’s define both of the concepts specified by the IEEE standard:
“A test of a system to prove that it meets all its specified requirements at a particular stage of its development.”Definition of Verification by IEEE-STD-610
“An activity that ensures that an end product stakeholder’s true needs and expectations are met.”Definition of Validation by IEEE-STD-610
There is a key difference between the two concepts, verification is involved “at a particular stage of its development”, while verification is at “an end product stakeholder’s true needs and expectations are met“. In simpler terms, we verify that our software is working during our development, and then validate once the product is finished that it meets the requirements.
Plutora on their blog has a great post defining the key distinctions of both of them and has an excellent visual resource as a Venn diagram of the task that are performed in each one of them:
In the rest of this blog, I will share many tools that are helpful to work in a project while also providing ways to verify and validate your project if you want to go to that extend.
Version control is an essential tool that is widely use today, when you start studying your Software Engineer career you need to learn this tool because of how helpful it is for collaboration. Most of the big companies use this to control the version of their products and that the developers keep creating more features without affecting the live product. As a summary, version control allows the following:
- Work with multiple people continuously on a project.
- Have a history of the changes that are done in the code and you can access them later!
- You can work on different versions at the time and divide it in features.
- It can integrate the work from different teams into one whole project.
Sounds great! So, can I use it? The answer is yes, it’s open source, completely free to use, we are going to see one of the most common used ones, which is Git.
This is a free open source version control system that is widely used, it’s the most common one you will find everywhere and it’s a must know at least of it’s existence. Many other version control systems has some other tweaks and improvements depending on the requirements that are needed, but for general purposes, Git is the system to go to.
The way Git works is to handle every change as “snapshots”, that way, every time a rollback or applying a change is needed, just changes between these two snapshots. For example, let’s say that your Hello World program prints “Hello World!” (duh) and you submit it using git, let’s call it Snapshot 1, then you want to change the program, instead of printing that you want to print “Hello everyone!”, once you do this change you create Snapshot 2 and submit to the repository, the way to Git to update the most recent one is to change the Snapshot from 1 to 2.
IBM has a great post talking how Git works technically, I will recommend to go in depth of the basics of the system to learn a little bit more about this important tool.
To learn Git there are a lot of resources out there, here are a few of them:
On my experience, one of the version control systems that I have used in the industry is from Google, it’s called Piper, it’s built to handle billions of lines of code in a single repository, you can read more about this on a Wired article by Cade Metz where he talks about Google’s repository.
The frameworks that automate testing have been increasingly appearing over the last few years, specially due to their high demand, one of the ones I have used before is Selenium.
Selenium is automated browser interaction tester, it can help to do complex tests that can be time consuming to do by hand, for example, let’s say that you want to verify the login of the user to a shopping cart, it can be quite hard sometimes to do all of that process just by code, that’s how Selenium comes to play, it can help makes all these things easier in a testing environment and you can “record” the actions that you want the test to perform.
There are many resources to learn from thanks to it’s high popularity, one that I personally prefer is from the documentation section of SauceLabs, explaining with details and examples the way it works and how to use it.
Apart from Selenium, there are many tools that are available that you can search for that suit your needs, some examples:
- Katalon Studio: RESTful APIs, web services, etc.
- IBM Rational Functional Tester: Web, .NET, Java, Visual Basic, Siebel, SAP, Adobe Flex, etc.
- Many others
Tools for Administration of V&V
Administration is quite a challenge when it comes to applications that involve multiple team members, and of course, when an engineer sees a problem it will find a way to create a tool to automate it, to illustrate an example of one of the most famous tools out there, I am going to talk briefly about Kualitee.
This is a web-based test management tool, it supports manual and automated testing, giving a great dashboard and full control of the test workflow. When you are managing a project, often you need to setup a development pipeline to try to avoid errors or problems that can harm the product in the future, and this is what this tool tries to help. Some of the cool features in has are:
- Mobile application support, with logs & assigned bugs.
- Create your own automated testing, manage and execute it from a single tool.
- CI and other 3rd party integrations, including Selenium for web testing 🙂
- Manage the project, test cases, track issues, report tools, etc.
In software development, testing and management are really important tasks that we take for granted on the school, we do not really care about those things on the projects we normally do for a class, but on the industry is a must, starting to learn about these tools that we have available it’s a great way to be prepared for what is coming for those you doesn’t even know about Git, hopefully this can help as a starting point to find what you are passionate about 🙂