We’re human. We make mistakes. When organizations punish people for these mistakes, it can feel senseless as outcomes from this punishment increase errors. Fear of repercussions increases the risk of errors and slows down releases. Tests help us change how to talk about the work and reduce that fear. Rather than expecting individuals to be perfect all the time and work from a place of fear, as a team, we build safety nets that help us work from confidence.
Often overlooked or misunderstood, testing is a critical set of work for system administrators. Testing helps you deliver a working product, eliminates single points of knowledge, and increases confidence that problems won’t easily make it to end-users.
There is also an expectation for every engineer to have fundamental knowledge about all areas of the product lifecycle. For companies to adopt continuous testing, you must do your part in applying testing principles and practices in your scope of work.
Testing is a broad subject, so in this chapter, I focus on general testing principles. By the end of this chapter, you’ll know the difference between linting, unit, integration, end-to-end, and exploratory testing and how to assess a project’s overall testing strategy.
Later chapters will address specific types of testing work that sysadmins do, including:
Testing in production,
Failover and capacity testing, and
Security and compliance testing.