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.
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:
|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
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 184.108.40.206. Ideally, you should obtain a domain name, such as techtarget.com, 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.
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.
It's time to own your software testing career
Here's what should be on your resume
Will certifications help your career?