This content is part of the Essential Guide: Why -- and how -- BizDevOps is going to change everything

Here's what you need to know -- and do -- to be a more technical tester

Want to be a better tester? It's not about coding, it's about reading the code. Expert Matthew Heusser takes you through the step-by-step process of setting up a Unix server.

The "more technical tester" series explains computer science concepts to those without a computer science degree. Designed to help testers, project managers and other analysts understand what is happening "under the hood," the series combines knowledge with practice exercises. This training -- on servers and networks -- will take about 10 minutes to read or perhaps $50 and a few hours to gain real expertise as the reader will set up a server from scratch.

When testers talk about being "technical," they usually mean they write code. The implication being that those who do not write code are doomed to click buttons without understanding and filing bug reports that the great hero who does write code must fix.

Thinking of testers as investigators makes things a little more expansive. Instead of seeing a problem on the screen, a technical tester can investigate to see if the problem was in the code on the screen or the back-end server. Instead of a "screen freeze," the tester can report a JavaScript exception in doallthethings.js on line 49 (with screenshot), or that the API call failed, or that it returned nothing at all -- is the server subdomain name really supposed to be boogs? Looks like it should be books?

All those things are about becoming a more technical tester. It is about understanding more about more things.

Let's get started with Unix. Even if your team only uses Windows, even for servers, it will be a good exercise in the kind of work that more technical testers do. I'll provide an overview of how to create a server, log in, set up a basic web server using WordPress and used command-line Linux to create a program in C.

Learn basic Unix

Windows power users are familiar with the command-line - dir to get a directory list, cd to enter a directory and so on. Unix is the text interface of the majority of web servers in the world; Linux is basically a Unix clone, while Mac OS X is formally Unix certified.

To explore Unix, you need to have a Mac, download virtual machine software (such as VirtualBox) or have a server somewhere to telnet or SSH to. Telnet is an older method of connecting that sends data in clear text. SSH encrypts traffic, tells you if the server's information has changed and even allows you to connect with authorized keys instead of hard-typing a password each time.

Here are a few classic Unix commands:

Command Action
cd Change directory
Mkdir Make directory
cp Copy
ps Process status (tell me about this shell script)
ps -ef Process status(tell me everything running on this system)
cat [file_name]        Print out a file
grep Search for text in a file or output

 There are many more Unix commands. To learn about one, just type man <command_name> from the command line, without the brackets. Man is short for manual and provides detailed information about how to use the command and all the switches, such as -ef.

The real power of Unix isn't that it is yet another command line. Instead, it is the culture of a large number of tiny programs that work together, piping the output from one command into another. For example ps -ef lists all the processes running on a system -- and it can be a huge list. The command ps -ef | grep program_name first makes the list, then pipes that output to grep, searching for just the program you are looking for. Here is an example of what the screen will look like and my attempt to create a director

Create a directory using UNIX
SSH into a rented server

Of course, to connect, you'll need a server to connect to. Before talking about cloud computing, where servers are created and load balanced automatically based on demand, you need to first use a single server. Let's talk about that next.

Set up a practice server

First, you need to set up a server that you can use to practice with code. HostGator, 1&1 and GoDaddy are popular hosts that rent server space by the month or year. When you set up the server, it will have an IP address, such as Ideally, you should obtain a domain name, such as, so that it's easier to find instead of a number.

I created a GoDaddy account with a month of hosting for about $11. Once the account is paid, login and setup a cPanel account -- it's a visual way to manage your web account and domain name.

Extra credit: Set up a server in the actual cloud, Amazon's EC2, or else install Apache (a web server) or WordPress (a way to easily manage static web pages) on your rented server. Get the server to say "hello world" and your name and tell your friends.

Speaking of hello world, let's get back to SSH and write a simple program in C.

Write a program in C

SSH to your server (ssh -l username <ENTER>), log in and edit the sample hello.c  program file. Use the pico text editor, a Linux standard. Enter the code shown below into the editor.

Sample hello.c file
Edit the sample hello.c file

Then enter control-O to save and control-X to exit. After exiting, the next step is to compile, creating an executable program that you can run. Enter the following code at the cursor:

gcc -o hello hello.c

Then enter ./hello to run the program. The dot-slash means "in the current directory."

The point here for a technical tester isn't to be able to write code, as much as to read code and understand the compile-run process. Most high-level languages are actually easier to read and more powerful than C.

For bonus points, get a copy of The C Programming Language and write a non-trivial program -- one that reads data from a file and counts the number of words in it. On a team that uses UNIX extensively, learn to edit with the vim editor.

Better yet, run Linux on your own computer for free.

Set up Linux

Oracle's VirtualBox is a free hypervisor for Windows, Mac and Linux. (Hypervisor is a fancy term for software that can run other operating systems inside of a computer, virtually.) From Oracle's website, download VirtualBox, run it, then select New > Linux > Version (select at least version 2.6). VirtualBox has the disk images to install Linux natively. (Note that if you want to install a version of Windows, you'll need a disk image and possibly a license key. Luckily, Microsoft has made free test versions of Windows.)

Once you've installed Linux, log in. In my example below, you can see that I selected a version of Linux that has a GUI. Launch a terminal, then go to the command line, edit and run hello.c.

A terminal session in Linux on VirtualBox
A terminal session in Linux on VirtualBox

From here, the next things to explore are how the server and browser interact (the back end) along with the basics of HTML, CSS and JavaScript, or the front end. I'll get to that in part two of this series.

Next Steps

It's time to own your software testing career

Here's what should be on your resume

Will certifications help your career?

Dig Deeper on Topics Archive