How to work as quality assurance (QA) – Part 2

 QA  Comments Off on How to work as quality assurance (QA) – Part 2
Jun 272011
 

If you don’t yet know what an SQA job is, please read the part 1

Features.

There are always some important aspects of a feature that MUST be tested and some that are optional or informal (e.g. “The feature can also work in that way but it’s not required by design”). Few thing must or can be known for a feature:

  • Sotware requirements.
  • Hardware requirements.
  • Customer requirements
  • Limitations.

Optionally for testing recommendations can also be taken:

  • Development documents.
  • Informal documents such as forum talks, e-mail listings, foreign experience and other sources not in the design notes.
  • Improving previous tests not originally designed for this specific feature.

Ways to test a feature.

  1. Parameter testing, we already mentioned that can be completely automated.
  2. Negative parameter testing. Also completely automatable.
  3. White box testing. We know how the feature is supposed to work and its internals by observing the code itself. This testing method is suitable for QA engineers that can analyze the code of the developers and provide some possible break points.
  4. Black box testing. We don’t know what exactly the features is supposed to have as input and what output it provides. This method is suitable for proven software or device hackers that can find a way for penetrating the service or the system tested. Sometimes a small script sending random parameters to the feature can find a major bug or critical memory leak.

Implementation of the feature. (unit testing)

Every feature is a part of a system. Having the feature working in the system can sometimes unravel even more bugs. An Inter Process Communication bug or even wrong parameters between 2 features in a system can lead to another major bug missed while testing the feature alone. While the feature is not fully integrated in the whole system, we can’t be sure it works @ 100% so we make another tests. An example of this can be a system driver implementing the VLAN support. We know we can assing this feature per device physical port but never tried to set it on a virtual port, because virtual ports are different feature designed for routing protocols. If we only tested the feature on physical ports, we can’t be sure it works on virtual ports etc.

Dialog between systems.

The next step in feature testing is when we are happy how the system implements this new feature.

In most features, an interactive dialog between two systems is what actually the feature does. In the VLAN example I make often in this article, this would be the dialog between 2 ports on neighbouring systems:

2 systems

2 systems

So, there will also be the additional tests in a system setup between 2 or more systems. Those tests will include the protocol acceptance between them, the right encapsulation of the packets, control sums and their decoding, the timings, delays and many others that can’t be tested if one system or the feature alone is under test.

Some black box testing can be done also. We can inject wrong dialog between the 2 systems and see how they behave. What time it takes to resume normal operations and possible security breaches if a dialog is broken and spoofed dialog is injected instead of the expected one.

Dialog with higher level features.

The same example as before. Imagine the newly implemented VLAN feature has to be tested to build an MSTP ring in a larger scale of  4 core switch units with one dozen more border/demarcation switch units outside the main ring. This example is one of the projects I work on often. The features we test are not as simple as the VLAN, but it takes big networks built in a lab and often new bugs pop up, so It really pays having a big system to test a basic feature. Test cases such as this last one takes lot of time to develop and the actual test can take also lot of time.

It is really important though.

Dialog with foreign or competitor systems. (compatibility)

One also very important test case, that also includes having much more expensive lab equipment. Imagine a ring with Cisco, 3Com, HP, Extreme networks and Telco systems core switches. All of them have implementation of Virtual LAN per port. You can make a simple test case for multi Vendor testing or even an MSTP ring, R-APS ring or MPLS mesh. It takes time to develop and additional knowledge of the competition’s equipment.

MOST if not ALL of the QA labs have such test cases. Your management team should be aware of the trends in the other brands and will probably have some units in the lab for compatibility tests.

 Posted by at 7:42 pm

How to work as quality assurance (QA) – Part 1

 QA  Comments Off on How to work as quality assurance (QA) – Part 1
Jun 272011
 

I had to switch jobs 9 months ago, because my ex-boss almost got bancrupt because of the World Economic Crisis, so he was unable to pay me anymore. It took some research in the job market. Took me 2 months to choose what to do next. I’ve been jack-of-all-trades IT, support, programmer, manager, etc. Never been a QA in my life, so when the guys from Telco System called, I’ve said to myself “Why not? Never been a QA in my life.” 

Ever wondered what the QAs are actually doing? I’ve done some research before the interview. The top google picks were around the so called Standard ISO 9001 for quality. Not telling much about what is expected from me to do. Not a single diagram what’s what. Not a single test plan to see an example. I’ve been a bit unprepared on the interview but managed well 😉
I am writing this artice, so anyone in future searching “How to” or “What is” QA to have some ideas in his mind on what exactly is QA and how to live with it.

Introduction.

Software development and testing is done in some few overlapping steps, some of them lead to others, while some of them take the whole process back to the workbench to rewrite from scratch. It sometimes takes 3 months for a feature to enter the Development cycle and exit as a qualified and approved for publishing or selling to the customer.

Software Test Cycle

Software Test Cycle

If you ever managed to look in this process while working as an IT or developer, you already know how many bugs are coded. Statistics gathered by leading development companies say that the code initially has at least 10 defects per ~500 lines or 20-25 bugs per KLOC (Kilo Lines Of Code) and every few fixes raise another (new) bug. By looking in the diagram you can say that the process is not straight forward. You may get a bug back for development and the developers can make a fix and take it back for you to analyze and retest. At least that is what an SQA team is doing. Testing, analyzing and providing feedback on the bugs found.

Quality vs quantity.

Every bug has it’s own weight and severity. If a bug is very severe (a critical one that can’t be left because the feature is actualy not working) that bug is served from the development team with highest priority. Cosmetic bugs (e.g. a misspelling or a typo in the interface) can be always served later. The product/feature is ready when all major bugs are resolved and all the visible minor bugs are taken care of.

However, if the QA team focuses on catching all the minor bugs and missing even one severe bug, the whole process will be tainted and meaningless.

Automation.

The minor bugs can be found by automated testing software that is developed solely for this purpose. There is rarely any ready-out-of-the-box testing suite, so most of the companies have a QA developers that work on the test automation itself. Automated testing catches most of the minor bugs and provides “sanity” for a future testing. e.g If the system does not boot with the newly compiled software – future testing is obviously not sane. This minor version gets back to the developers for a review and recompilation.

There are very good script languages able to login remotely to a testing unit, apply new configuration and check results such as TCL, Python, Perl and others.

The QA job is to actually run the automated tests on every minor release and check if all the basics are working.

Manual testing.

That’s the bread and butter of this profession. For every new feature there must be a new test plan written. The test plan consist of test cases. By definition any test case should test only one aspect of the feature or only one of its parameters. A few steps example:

  1. Configure VLAN Id 200 on port 1/1/1
  2. Check that the running device configuration has the line.
  3. Configure out of range [1..4095] VLAN ID .
  4. Check that error message pops up.
  5. Check that the running device configuration does not have the line.

The QA job is to design a good plan stretching to all the feature parameters and options and write test cases for every and each one of them. Test cases can be either just a parameter chec, negative check or mixed as this one. The good test plan has all the checks and the negative cases possible.

Some examples of the above can be found in specific QA forums, but the information is scarce because every product has it’s own testing strategies and some of the information regarding the testing or the product, can be also well protected secret.

Interested? Than keep reading.

 Posted by at 7:42 pm