I’ve been a Linux user for a while and I’ve been a tester for a while and I always thought that the two are basically connected and since I am mostly testing in Linux environment right now I decided to state publicly my opinion on why learning Linux is vital for testers and how they could benefit from this.
Why is learning Linux is important for you as a tester?
We all switch positions occasionally and when we find a suitable offer in technical skills part it says something like that:
- Good knowledge of network protocols (TCP/IP, ICMP, UDP, etc)
- Good knowledge of at least one scripting language is a plus (Python, Perl, Ruby)
- Knowledge in OS – Windows or Unix
Now, I know that you’re probably noticing that only the last one mentions Linux/Unix, so what does the other two have to do with learning Linux. Well, that’s the coolest part, by learning Linux, you are actually developing your skills and knowledge as a tester. Here’s why:
- Linux is an open source OS and allows you to poke as deeper as you wish (normally until you break stuff so bad, the only way to fix it is re-install), which is a need rooted in our testing mindset – to explore things and look how deep we could inspect them. So, in the context of network protocols, you have plenty of ways and tools in Linux to learn and have a “hands on” experience and by that improve your knowledge on a topic that’s vital for testers and IT professionals in general.
- Learning Linux, you are practically learning scripting language on the fly, because the “language” of commands you are using in terminals and consoles is a script language itself (bash, zsh, ksh, etc). It all looks like you are making yourself a great favour by learning Linux, but most importantly…
Open code means an open mind.
It’s a long topic and I won’t get too deep in it, but there’s a great valuable lesson in using Linux and learning Linux and it’s in the power of community. It opens you to the world of open source software which is huge and profound and complex … and annoying sometimes, but it could always teach you something. Many important testing tools are open source as well – Selenium for example.
I believe that the most valuable lesson that you could gain by learning Linux is how to figure out solutions for your problems on your own. And I think that’s a skill that’s really valuable in software industry at all. Because let’s be honest, when you are a rookie, dealing with Linux is such a pain in the ass. I mean, you come from Windows where everything is restricted and polite and gives you alert messages and you step into a totally non-dummy proof OS where you could practically mess up stuff so bad, that you will wonder what the fuck happened.
Then you have the Linux community, which is mostly consisted of trolling geeks that will answer to your problem with – “READ THE FUCKING MAN PAGE !!!”, like you know wtf a man page is. No, there’s cool and helpful guys, of course, but all that has its own charm, because it drives you to be more independent, to act, to search, to explore, to investigate. All these skills are really important for a tester, because we all know that if we bump into an issue, we could ask a senior or a lead for advice, but that doesn’t really develop our skills very good, on the other hand dealing with problem, finding solutions, sharpens our skills just like grinder sharpens a sword.
Natural drive to explore.
It’s a concept that was many times covered by Richard Stallman in his talks and lectures – the freedom to explore and change the insides of a tool or operating system you are using. This is not only essential for your career as an engineer, but as a tester, too. It is our distinct skill to be able to try to disassemble stuff, bring back components in different order and then fix them. We are, as everyone in technology, scientists and in order to develop, we must experiment. The best way to experiment is by learning what you are dealing with, it’s functions and components, if we don’t count reverse engineering, of course.
Another great reason to learn Linux, besides the fact that 90% of the servers in the world are running it, is one really awesome skill set, that’s highly valued and really rare in software testing and this is security and penetration testing. And to cover these, there’s a great Linux distribution called Kali Linux, you can find it here: https://www.kali.org/
Basically Kali is a fully functional Linux distribution, which is loaded with any possible security, penetration, packet sniffing or social engineering tool you could think of. Of course, because security testing is so bad ass, this doesn’t come packed with a ribbon and with a nice and shiny UI, oh no. Almost any tool in Kali is a command line tool, meaning you will have to learn scripting, writing specific commands, etc. But this is definitely something that pays off, and the more you dig in it, the more tech savvy you become.
Here’s a small intro to Kali, including setup and installation on Vbox, by a fellow blogger. And here is a whole blog, dedicated to Kali Linux, for the more advanced users.
How to start learning Linux.
And after we concluded, that learning Linux is important, there comes the big question – how do we start? Well, starting is easy, just download it install it on a VM or as a live CD and give it a try. And here I hear people screaming, “but how, it’s complicated, it’s hard to use, you have to know the commands, only admins can use it…”. This is in the past, Linux nowadays has nice user interface, easy installer (Next, Next, Ok, Finish) and many other Windows like features. The thing is, sooner you forget about them – the better. Because when you have to use Linux to log into a server, there won’t be a GUI, so get used to the console, it’s nice and easy, just a bit weird in the beginning.
So, what distribution should you pick? Well, there are thousands of them, but here are my suggestions:
- Easy to install and use – junior level – Ubuntu, Mint, CentOS – these are really user-friendly and meant to be easy to use.
- A bit more complex – intermediate level – Fedora, Debian – these are, let’s say, the above’s big brothers, it might be a better idea to dive into them if you have previous Linux experience.
- The elders – senior level – Arch, Slackware – these are intentionally hard to use, at least to a novice user. The reason is, they want to keep things as Unix-like as possible and as simplistic as possible. You have a lot to learn from them, because you have to do almost everything manually – disk partitioning, configuring interfaces, installing GUI, if you want one, etc. Definitely a must see, but you need to arm yourself with a lot of patience and knowledge.
Here are some resources for the novice Linux-ers:
In this blog topic I wrote about edx.org‘s course, I’ve finished it, it’s awesome and a great beginning for total noobs in Linux.
If you like a more visual tutorials – Eli The Computer Guy is your man. This guy is amazing, really good at explaining stuff in a simplistic and understandable manner, obviously knowledgeable in various OSs and networking, protocols, programming and I don’t know what more, but he has a whole section on Linux, with nice tutorials.
Nixcraft, is a great blog, where almost every problem you search for has solution, with really cool examples and explanations.
Of course, there’s a lot of paid courses and programs to learn and certify about Linux, but I am just trying to give an introduction including free and accessible materials here.
So, don’t forget to comment and share with your friends… and don’t forget to use Linux – open source, means an open mind. Good luck! 🙂
1 thought on “Learning Linux as a tester.”