Words of Caution: When i say “Technical skills” please don't confuse it with “Test Automation” knowledge only. It more and the less has become a standard in the industry to presume that knowing QTP or RFT is same as having technical skills.
To start with, for a tester to be successful following are the 3 most important components which you should never forget:
In this blog post, we will talk about the second most important component “Technical Skills” which is only next to “Testing Skills & Aptitude” for a tester to be successful in the next decade.
In last decade or so, testing has been tagged and given the title of an easy profession where non-technical candidates (who aren’t capable of writing or understanding the code) can write some test cases and execute them to find issues. It was considered having domain knowledge to understand the business is sufficient to be a successful tester.
In last 5 yrs, automation has become the talk of the town as it has become a successful marketing tool to win more projects by showing huge ROIs benefits of million of dollars to the customers. We have also witnessed the same trend by the emergence of specialized commercial testing tools by big players like IBM, HP & Microsoft in this arena.
Lot of candidates in testing do have technical skills but they don't hone it or have stopped using them because of the popular perception that “its not test‘s job to write/read code”. The max they do is automation (where record/playback is most popular and only a few percentage (<20%) can truly write automation code to validate the application)
Because testing is considered a second fiddle to Development and the best minds get/shift into development, testing community is lagging seriously on candidates with strong technical skills.
Test automation is a subset of a broader category “Technical Skills” and now (more than ever), importance is being given to other technical skills other than test automation which are becoming mandatory to become a successful test professionals at organizations.
Following 10 are the skills / activities / tasks where technical skills of a tester is tested
(you might have read many of these in your testing training / process tutorials but now time has come to start exercising these)
1. Requirement Feasibility:
Don’t get surprised, there is not typo error here. You read it all right that requirement analysis ALSO requires you to have technical skills to understand if the requirements expected by the customer are POSSIBLE or not. Lot of times there are “technology constraints” and unless you understand the underlying technology you run a risk of committing on a requirement which can’t be implemented and you must know that telling customer on the last day wont be such a great idea.
Its not only dev job to call out technical constraints. In fact test can call out if a particular requirement is too unrealistic or ambitious to be implemented if they understand the technology well.
For ex. I can tell the business upfront that a specific multi select tree control is not present in c# and we need to think of an alternative.
2. Scalability Study (Hardware/Software):
Your app used to work fine and then a new functionality was added and then in the next release all of a sudden the app started hanging or the batch job is taking infinite time. If you have had experience something similar to this, you are a victim of “hardware/software constraints” which was not thought in advance.
Lets say the users have increased to million from thousand and you hardware RAM and Processor is not enough to handle so much traffic
Your RDBMS cant handle more than 10000 concurrent connections.
So it is must for you to understand your platform (hardware + software) and their boundary limits so that you can avoid surprised and downtimes in production leading to SLA misses and customer dissatisfaction.
3. Design consideration
When is the last time you were in a design meeting where you contributed to the translation of the requirements into design or more importantly, when you helped avoiding developers to commit a design blunder where let’s say they misunderstood the requirement and the flow was incorrect.
Unless you understand the development models and don't participate in high level and low level designs meetings you wont understand what’s happening “behind-the-scenes”.
It can also help you to write better test cases by understanding the flow of the system and how modules are integrated. Black box testing is not sufficient always when the architecture & the flow becomes complex as not all implementation details are captured in the functional specifications.
Technical design documents should also be evaluated by the testing team where say why Approach A is preferred over other options considered like Approach B or C.
4. Code walkthrough & Inspection
This might give nightmares to many test professions. They just hate looking at the code but believe me you can find lot of bugs by inspecting the code even before the code is dropped to testing. This static testing can save lot of time by avoiding a buggy code to be dropped to test.
You must understand the syntax and semantics of the language being used (C#, java etc) and ask the right questions to find out any memory leak or incorrect loop/condition clause being used in the code
5. Unit Testing & Integration Testing
Okay I wont start a debate by saying test should do unit testing but you will surely come across a situation in your long testing career when you will agree that knowing unit testing help a big deal.
For example, how do you do code coverage now? Unless you know all the inputs/outputs, all the main flows and branches, all the conditions and exception handling code, we cant write good scenarios to exercise critical code paths.
6. Performance tuning
With more and more focus now given on customer satisfaction, performance testing is something now which goes without saying and every customer expects it by default. It is extremely critical now for test team to ensure that the performance is well within customer’s expectations and with high traffic OR volume of data the application would respond within the SLA agreed at the time of signing-off requirements (as part of acceptance criteria).
Unless test teams are familiar with performance counters of the operating system and the the software / technology being used, bottlenecks and potential issues cant be determined.
Also when you want to simulate real-world scenario say to simulate 100000 concurrent users, the knowledge of session management and other technical concepts are must.
Many a times the queries / code are not optimized and it is also important to understand if the code written is efficient or not and also if there is a better way of writing the code which can improve the product’s performance.
8. Security testing
With the increasing number of virus attacks and the risk involved with losing highly confidential customer data or any possible frauds, tester’s contribution has become very crucial.
How can you test your application for SQL injection if you aren’t good at SQL?
How would you test your application for exposing any confidential data if you aren’t good at encryption/decryption algorithms or understanding different masking techniques?
How do you ensure which port shouldn’t be open/closed unless you understand the networking concepts well.
These are just some high level examples trust me security testing is much more than that and now constitutes of many modern & advanced techniques like fuzzing etc
9. Deployment & Prod Support
We are the gatekeepers of the application. It goes from our hand to Support folks for UAT & Production deployment. If we don't understand the configurations setting or environment pre-requisites to run our applications, chances are there that business would lose lot of their precious time waiting for your dev team to come and rescue you.
I am sure you don't want to end up there and its critical to understand the installation and configuration setting, troubleshooting tips and common FAQs
For example, there was a permission issue which was holding your user from using the application and you just don't know how to give the appropriate permission. Believe me it can be very embarrassing and frustrating at times.
That’s your lucky chance to build credibility with business and Support folks and help them get-going without wasting any amount of time.
And just because I haven’t kept at top of the list doesn't mean its less important than any of the above activities. Its the most important activity only next to manual testing but lot has been written about it and there is much more understanding and awareness about test automation in the industry now and hence I am keeping this short.
With this I am closing this post and i hope this will provide a quick checklist to the testers to become ideal testers-of-future.