7 Software Testing Principles To Build the Best Customer Experience

Maged Koshty

Udemy for Business instructor and Managing Director of ExpertWave

September 5, 2019

Even among the most experienced development teams, errors find their way into software, creating a significant business risk for any organization. How can tech teams minimize product risk and ensure their software is shipped as error-free as possible? Dedication to software testing and quality assurance at every step of the software development life cycle. To create stable, well-functioning software, the importance of both manual and automated testing can’t be overstated. 

Software is everywhere in our lives. In our hands on our mobile devices, in transit at airports or in the car, and even caring for our loved ones in hospitals. Small miscalculations in software can have major ramifications on a business. Errors in code can risk a company’s reputation, finances, and may even reach the lives of human end users when considering software errors in medical, manufacturing, or airline industries.

The art of software testing

I think of software testing as an art. A tester or QA engineer must visualize how any user might interact with the software. In many cases, this requires imagining the worst-case scenario and testing for that. 

Quote on software testers

A strong test is not as simple as inserting a correct username and password into a web portal and looking for an error pop-up. Rather, a tester should ask, “Here’s a correct username and password, what can I do to cause an error?” Testers aren’t employed to confirm software performs as intended, their job is to break the software. While the designers, developers, and the rest of the product teams are building the software, the tester is looking for opportunities to break the software and create failures.

I may have a bias after years working in software testing, but I do believe software testers are the unsung heroes of technical teams. There’s much to learn from their process and attention to detail. In fact, every developer should learn to test their software in a process called unit or component testing. Why? One software project will be comprised of many components created at different times by different developers. Ideally, these components will be already be tested in isolation before integrated with the other components that make up the project. Training developers to build scripts for automated testing of their components makes the entire development process smoother and allows the QA specialists time to focus on more complex product issues. 

Traditionally, software testing is seen through two methodologies–manual and automated testing. Manual methods are commonly used for exploratory testing and usability testing, where human skills are required throughout the whole process. Automated testing is ideal for regression testing, load testing, performance testing, and repeated execution. In a recent survey by QASymphony, 40% of responding enterprise organizations expected to automate half of their software testing in the coming year. However, the rise of automated testing doesn’t diminish the need for onsite QA and testers. Automated techniques supplement the more complex priorities of the testing team. 

Software testing as an essential part of DevOps

DevOps is a popular development process using agile methodologies to bring continuous feedback into the software development life cycle by integrating the development and operations teams. This brings QA and testing much earlier into the development cycle.

As developers adopt component testing as practice, testers must also adapt to the integrated DevOps process by learning programming fundamentals. This is not only to assist with the automated tests developers create, but the embedded team structure also allows for quick iteration to keep project timelines in check. 

In addition to training developers on software testing fundamentals, an important way for organizations to verify technical teams’ software testing competence is through certifications. They’re a way for managers to ensure an organization is well-equipped to identify the greatest risks in a product’s code. A comprehensive certification like the ISTQB (from the International Software Testing Qualification Board) is a good baseline to develop a team’s skillset and to use as qualifications for building a testing team. Keep your team up to date with the latest software testing certifications; find out how Udemy for Business can help.

What is the ISTQB certification and who should take it?

The ISTQB Foundation Level certification is the industry’s leading certification for ensuring technical teams and their managers are well-equipped to identify software risks and discover bugs. Over 640,000 ISTQB certifications have been issued around the world. 

The ISTQB offers foundation, advanced, and expert certifications in core software testing subject matter, along with specialized certifications in topics like agile testing, automotive software testing, mobile app testing, and more that address the move towards DevOps as a practice in software development. The foundation level exam has no prerequisites; it’s designed for people breaking into the software industry with little-to-no previous tech experience. It covers how to design test cases, while advanced levels go deeper on test design techniques, test management techniques, and test automation. 

7 principles of software testing

In my Udemy ISTQB Foundation Level course, I cover the skills you and your team will need to excel on the ISTQB foundation certification exam. The course also examines why testing is such an important part of the development cycle whether or not an agile build process is in place. There are seven foundational principles for software testing that reinforce its importance in the development process. 

  1. Testing shows the presence of defects, not their absence — It’s important to note that not finding defects does not make your software bug-free. Because no software is without its defects, testers iterate on their tests to find as many defects as possible.
  2. Exhaustive testing is impossible — Testing all possible combinations of inputs and preconditions is not typically possible. Rather, teams and managers should prioritize testing based on risk analysis to the product and business.
  3. Early testing saves time and money — Testers don’t need to wait until the software is deployed to test it. Bugs discovered earlier in a product’s lifecycle are significantly cheaper and easier to address than if it were a customer-discovered bug. 
  4. Defects cluster together — Most software issues follow the Pareto Principle–80% of the issues stem from the same 20% of its modules. While there may be outliers to this, it’s a helpful rule for focusing testing. 
  5. Beware the Pesticide Paradox — This borrows from the idea in agriculture that using the same pesticide over and over again will lead to a decline in its efficacy. In the software world, this means that the usual test cases will eventually stop finding new defects. Review and revise tests regularly.
  6. Testing is context-dependent — A rinse-and-repeat testing model won’t work for all scenarios. For instance, a high-traffic ecommerce website must have different test cases than an inventory app used by warehouse staff.
  7. Absence of errors is a fallacy — Software without known issues doesn’t equal error-free software. Finding and fixing some defects won’t guarantee the software’s overall success. 

In the Internet of Things era, where software is ubiquitous in every part of our society, testing is an essential step in the development cycle. I encourage engineering managers to discuss the potential consequences of untested code with their teams and prioritize training in software testing. Start upskilling your team in the basics of software testing with my Udemy ISTQB Foundation Level course.

About the author:

Maged Koshty is the managing director of ExpertWave, a training and consulting company based in Cairo, Egypt. He has over 25 years of software development experience for companies like Apple, Corel, and ITWorx. Maged is an IEEE software engineering certified instructor and holds PMP, ISTQB CTAL, and PMI-Agile certifications.

About Udemy for Business:

Udemy for Business is a learning platform that helps companies stay competitive in today’s rapidly changing workplace by offering fresh, relevant on-demand learning content, curated from the Udemy marketplace. Our mission is to help employees do whatever comes next—whether that’s the next project to do, skill to learn, or role to master. We’d love to partner with you on your employee development needs. Get in touch with us at business@udemy.com

Top 10 Tech and Soft Skills Trending in 2019 thumbnail

Infographic

Based on data from 30+ million learners on Udemy, here are the fastest-growing top 10 tech & soft skills in 2019

More from Tech Skills Topic

Tech Skills

4 Ways Docker Makes Engineers More Efficient

Docker containers. If you’ve attended any tech conferences or read industry publications in the last few years, you’ll know that...

Tech Skills

React vs. Angular vs. Vue: Which is the Best JavaScript Framework?

When students ask which JavaScript framework to use for frontend website development projects—Angular vs React.js vs Vue.js, I have to...

Tech Skills

The New PMP Certification: People, Process, and Business

The Project Management Professional (PMP) certification is slated to change in December 2019, but what are the new changes and...