Jul 212011
 

There are really no key requirements for you to be hired as QA in any company. At least I’ve never worked as one before but was hired for my history as system administrator and developer.
I have also done some tests in the past that were needed for my work, but have never seen a real test plan and have never written one or followed one. In my past work, everything we write was tested by ourselves. It was not a separate job, but was part of the work process. You write, you test.(If you have not read the previous 3 articles, you may find part 1 describing the basics of the QA workflow, part 2 getting some details on the ways of How to test as QA and part 3 describing few details of the actual methods of testing. In all cases, those methods may vary a bit in the company that will hire you in their ranks.)
The job description and requirements themselves, may surprise you. That’s what was written in the Job Advertisement I saw when applying:


Telco Systems (a subsidiary of BATM Advanced Communications) is a well-known manufacturer of a wide range of switches and routers destined for telecommunications and corporate networks. BATM specializes in the design and implementation of network equipment for IP switching and routing, and provides means for high-speed data transfer over optical and copper media. The company offers products with highest throughput, reliability and quality along with technical support for broadband transmission of video, voice and digital data over IP.

Telco Systems is looking to recruit a QA (Software Quality Assurance Engineer).

As part of an international team of software engineers you will:

  • Design, develop and perform testing procedures for verification of state-of-the-art embedded systems software for a range of network applications;
  • Maintain detailed testing documentation;
  • Be involved in the full implementation cycle of specific modules in Telco’s integrated whole-range-of-platforms networking operating system
  • Help Software developer teams in testing of comprehensive functionality
  • Help Technical support teams in initial on-site installation of new or enhanced modules
  • Maintain sophisticated knowledge in relevant networking standards, be part of the new features design brainstorming sessions

Requirements:

  • Willingness to develop testing procedures
  • Strong analytical abilities and troubleshooting skills
  • Experience in Unix/Linux environment
  • CCNA finished course is an advantage
  • QA experience is an advantage
  • Experience in networking is an advantage
  • Experience in script languages is an advantage
  • Fluent in English

Benefits:

  • A challenging and dynamic area of work involving competition against world’s leaders in networking
  • Professional environment, working in a team of qualified engineers;
  • Competitive remuneration package;

For most of Its part, this job advertisement, should not scare you. You don’t have to start from zero. In most cases someone has already made templates about everything you need to do and there will be someone to mentor over you and provide help until you are ready to go delve deeper. When I started learning what is required of me, there was already a big data base with test plans and detailed test cases. I only need to build over them. Testing documentation was already above 1700 pages and small work was required to keep it up to date only. The requirements were only guidelines of what a person should know to apply for this job, but were not all “must haves”. If a person is a good in what he/she does. No CCNA and no specific certificates are really needed. Only a desire to work. (one of my female colleagues does not even speak English well, but she is good technician and even English fluency is not 100% required in such cases).

Any experience in the field of the company products or relevant may be more than enough to start working as QA specialist in such company.

The salaries vary per country. The best payment goes in USA, ranging from 5 to 6 digits in year, while in India the salary varies from 100 to 600k rupees (14-to-100k EUR or 20-to-150k USD). It is normal for underdeveloped or developing countries the salary to be low. It is also normal for those countries to have LOTS of outsourced big companies. It is a shame, that in Bulgaria, those digits don’t even go Half-that-good. Our QA engineers are happy if they make 5 digits/year in EUR.

But I got away with this, and forget the important aspects of this work:

  • It is interesting!
  • It pays in another way – you learn new stuff.
  • It makes your mind very able to analyze problems.
  • It is not hard to do.
  • Takes about 6 months to learn, but is like the bicycle and swimming. You can’t forget It.
  • Gives you a firm grasp on some white hat techniques you can’t learn by normal means.
  • Helps you learn some script programming in the process.
  • Gives inner details of company products you can’t find in the WWW.
  • It is actually quite fun to break through someone else’s code and find nasty bugs.
  • Allows you to break it again after the developer decides “it’s working”.
  • Creates firm connections with 3 categories of IT specialists that can come handy in personal aspect if you want to evolve. Developers, System administrators and Technical writers.

So, IF you think this work is for you, go to your local Job market and apply to the 10 most promising QA entries there. I will try to help you with advices and ready test scripts in my blog.

Keep in touch 😉

 Posted by at 11:40 am
Jul 202011
 
How to find all executable files:


find / -type f -perm -o+rx

This can take quite a while, so you may want to pipe the results to less so you can search in them or instead of root directory to use /bin or /usr/bin.

How to automount USB memory stick devices with user rights.

Edit the line in /etc/group saying “plugdev” with your user name:

plugdev:x:83:root,yourusername

This way every time there is new USB device plugged in the system, you will see a new Icon on your desktop with its name and size. You need to restart udev as root by writing:

sudo /etc/rc.d/rc.udev reload
sudo /etc/rc.d/rc.udev restart

How to change DOS/Windows CR+LF to Unix (dos2unix)

If you don’t have this utility, use the following:

perl -pi -e 's/\r\n/\n/;' DosFilename.txt

How to strip configuration lines from the prompt

Imagine you have a switch configuration example like this:

DUT(config)#system monitor
DUT(config-monitor)#cpu-temperature
DUT(config-cpu-temperature)#log
DUT(config-cpu-temperature)#trap
DUT(config-cpu-temperature)#low-threshold 10
DUT(config-cpu-temperature)#no shutdown
DUT(config)#log ssh-console severity debug
DUT(config)#commit

You need only the configuration lines, without the prompts, so you easily copy&paste them later, when you need to set the switch. Executing this command and pasting results *(or piping them) will strip everything in left of the pound sign (including the sign):

cat | awk -F"#" '{ print $2 }'
or:
cat copied_manual.txt | awk -F"#" '{ print $2 }'

How to decode text to ascii codes for SNMP

Sometimes, walking an SNMP table may show you the following lines:


dot1agCfmMdRowStatus.7.100.111.109.97.105.110.53

This OID line is quite straight forward until the digits. Dot1ag means the standard 802.1ag (OAM CFM) and the status of the maintenance domain. For some reason the remaining text is in ASCII + char length. 7 is char length and the remaining ASCII codes mean “domain5”. I wrote some Perl script to convert strings to dot-digit format for this:

#!/usr/bin/perl -w

if (! $ARGV[0]) {die "There are no args";}

print $ARGV[0];
print " is equal to ";
@ascii_character_numbers = unpack("C*", $ARGV[0]);

print scalar(@ascii_character_numbers);

foreach (@ascii_character_numbers) {
    print ".";
    print $_;
}

print "\n";

Usage is:

unascii.pl testtest
testtest is equal to 8.116.101.115.116.116.101.115.116

Check the next tricks article too 😉

 Posted by at 10:03 am
Jul 152011
 

Slackware Linux uses udev to decide how to manage the recognized devices in your /dev/ directory. Also any hotplug devices are also handled by udev for loading the appropriate kernel modules and create(or enable) a /dev node for mounting purposes. Udev is doing quite well, except in 2 cases:

  • You need eth1 to actually be eth0 and eth2 to become eth1.

This is one of the cases, in which you have e.g. 1GBps NIC and want it to be exactly eth0 and 2 more that you need for your home network set. You already have the scripts to create NAT and they point to eth0 by default. It’s faster to switch NIC names than to rewrite the scripts.

  • Your motherboard died and you want your hard drive moved to another system so you keep working.

In this case, most if not all the new motherboard components will be recognized by udev but there will be one difference in one specific file at /etc/udev/rules.d/ this file is called 70-persistent-net.rules and is responsible for mapping the network cards by their manufacturing address (MAC address).

The file looks like this:

# PCI device 0x10ec:0x8139 (8139too)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:40:95:30:c5:7e", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x10ec:0x8139 (8139too)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:06:4f:29:49:f0", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x10ec:0x8139 (8139too)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:01:6c:e2:ff:d2", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"

And if you want the NICs remaped, the only thing that needs to be done is to set the option NAME in the end of each line to whatever you want your NICs to be set. This is about the first scenario.

The second scenario, when you place the hard drive to a new system with similar configuration, you will see the udev will actually displace the NICs. If your old system had eth0, eth1 and eth2 – now your system will have eth3, eth4 and eth5. Old/original NICs places will be kept (as if your broken machine will revive 😉 hahaha 😀 )

You need to set them back to point to eth0, eth1 and eth2 and no system reconfiguration will be needed (except in the case where your Video card is different, than you need to reconfigure X.org).

That’s basicly it. Modify /etc/udev/rules.d/70-persistent-net.rules and restart the udev process.

bash-4.1# /etc/rc.d/rc.udev restart

The next step is to make your configuration go back to what it was. It’s actually one command only if you have not changed anything else:

bash-4.1# /etc/rc.d/rc.inet1 restart

That way, your network should be back to what it was.

 Posted by at 6:00 pm