Tuesday, April 22, 2014

Advantages and disadvantages of transition from Developer to Tester [Personal Thinking]



When it comes to the question of whether developers should change their career path to be testers or not, there are many different points of view. Some people think that this is a bad idea. However others claim that this is a great evolution. I believe both developers and testers are required to own different mindsets and variety of set points of skills. Shifting from a developer to a tester will have pros and cons.

Advantages:
One of the first crucial advantages is automation testing works. Moving to testing career, some developers think that their programming skills will go down the drain. Is this correct? No, this conception is an enormous mistake. If developers know Java language, they can learn and work with Selenium tool in automation test. If they have experience in database, they can join ETL database testing projects. With programming competence, they are able to automate much of what they do. Furthermore, they could take different roles in various projects such as unit test writing, coding review, coding analysis, etc. These are prudential in most projects. In the Agile era, automation test is now dominating testing projects. Nowadays, people produce many powerful testing tools and build useful test automation frameworks. Manual testers totally leverage these to create automation scripts easily. However, without programming knowledge, they won't be able to create complex test scripts and strong test suites. To overcome these, automation testers with high programming skills are always mandatory. In attempts to meet project expectations, they are able to think about the powerful open source tools such as Selenium, Watir, Cucumber, JMeter, etc. and even commercial tools - QTP, SilkTest, TestComplete, etc. to set up fantastic and effective test suites, and to form good test automation frameworks. However, this is once in the blue moon if testers do not have experience in programming languages. Obviously, with programming skills, developers will boost automation testing activities to be more effective and bring about significant success to automation projects.
Another advantage is ability to quickly understand technologies and system architectures. Developers have more experience in design architecture, up-to-date technologies than testers. As a matter of fact, it's easy for developers to adapt and to learn new technologies and to understand design architecture. As a result, they will define a better testing approach. For instance, if a system is designed and it uses technologies: .NET, MVC model, database load balancing, they might ask and self-answer questions: what are strengths and weaknesses of a MVC model? Which areas do testing activities need to consider with load balancing?
In relation to bug detection, to some extent, developers are likely to detect more critical defects - in connection with architecture, database design, security, etc. than testers do. By virtue of design, coding and database experiences, developers have a tendency to hook into the system to find out difficult issues. These issues might affect the whole system architecture. Sometimes, it takes a giant effort to fix these kinds of issues. Definitely, their findings tremendously give rise to improvement of final product quality.
In terms of effective bug communication, unlike testers, when detecting a defect, developers tend to look for the root cause and provide good information. By means of information, the developer who implements the feature linked to this defect will easily narrow down the scope and fix this issue quickly.

Disadvantages:
Although transition from a developer to a tester has many benefits, this change also confronts many challenges. In order to be a good tester, the developer must eliminate following obstacles by training and hand-on activities.
The first important drawback is lack of testing mindset and testing methodology. The developers' whole mind is to develop a piece of code which matches requirements directly. They are not really worried about the side effects. By contrast, testers have to use various techniques to find whether the code is developed properly as required or not. The developers seem to look at one road only. Unlike them, the testers will try to search for infinite paths from departures to destination and check if all paths are working properly. The testers act as real users and test all the system areas which the developers cannot do. As a result, due to the different mindsets, the developers are often missed test cases and test scenarios in association with UI, UX and alternative flows when designing and performing tests. Absolutely, it is not easy to change their mind to adapt to new requirements immediately. This process takes at least one year with effective trainings and useful hand-on works. However, in efforts to acquire knowledge and with their passion, I believe that the developers will grasp valuable experiences to fulfill this imperfection.

Secondly, developers tend to look down when they become testers. I often encounter developers who think they are at downside as they are in testing. They think testing is the lowest level on the software career ladder. Moreover, many people such as Senior Managers, Project Manager and Technical Architect also have the same thought. Well, that is a huge "Myth" and I will discuss it in a different topic. In real life, many companies are aware of quality and always say, "We are highly concerned about our product quality." Nevertheless, turning to their actions, when they divide their project budget into departments, they put the lowest amount into quality assurance department and they also first cut off right away this budget when there is any financial issue. In some cases, the testers are considered as weak and garbage staffs. In software industry, developers somehow face this challenge on the top their head when they shift to testers. From where I stand, being looked down on happens at the first stage only. Afterward, when they identify their purposes, their passion, set point of expectations, and are used to performing daily testing tasks, this cons will disappear incidentally.
Finally, keeping motivation is also an extreme obstacle of changing from developer to tester. At development site, after finishing coding a function or module with a piece of code, developers will move to implement another function with different codes. This makes developers refresh and they feel like learning up-to-date technologies and knowledge. Therefore, they have a sense of motivation. Instead, at the testing side, sometimes they have to execute regression of a module repeatedly. This results in a lot of boring tasks. Furthermore, if they have been digging in manual tests and working for a project for a long time. Definitely, they will degrade their inspiration and motivation when taking such a depressing task. In fact, losing motivation happens in all areas and people ignore what they are working on. People should come up with a best approach to keep themselves motivated.

Neutral:
Last but not least, one of fundamental questions in your mind "Is it correct for a tester to get higher average salary than that of a developer?" Hold on a second. Before answering this question, if you are a developer, you should ask yourself, "Why I should switch to a tester?" Absolutely, no matter what you do, your attitude, your purpose and your passion will tremendously contribute to your future success. Actually, the salary and benefit depend on a variety of circumstances: the size, the structure of the company you work for, the position, the workforce demand, the competence, the current job market, etc., Thus, it is said that testers can receive higher salary than that of a developer and vice versa. What's more, talking about working freelance chances, many developers are worried about this transition. They are afraid of their programming skills which will be dissolved and be fossilized in a long run. This leads to a decrease in their chance to participate in this workforce. However, there are nowadays a vast community to ready support both developers and testers. I think there are the same opportunities to take whatever they want. Many developers are paid more than testers but a lot of testers can earn better than developers. In addition, although testing is not considered important somewhere, many software companies in Vietnam treat developers and testers alike in my point of view.

Conclusion:
To sum up, development is an interesting and hectic job while testing is a fantastic and high responsible work. Transition from developer to tester always has pros and cons. If you like testing and want to become a top-notch tester, I'm sure that you can earn better with more job prospects. You have to embark on building your testing skill sets from scratch. You not solely learn new testing techniques and testing methodology but also change your mindset to adapt to new things. However, to some extent, you can expand your knowledge in business domain specific such as health-care, insurance, etc., Moreover, as a tester, you are able to get a boarder exposure to overall system than a standard developer and you can enrich your experience in automation testing tools, performance testing. Thanks to this, your career is much more flexible with great opportunities. It's not easy to make a change career path but you should make up your mind. With your passion, and taking advantage of your knowledge, you can be a test lead and eventually a test manager, a test architect or a director someday - who knows!

                                                                                                                        
                                                                               Thao Vo

Monday, April 21, 2014

Test Automation Strategy


As last topic I have mentioned: http://howtesting.blogspot.com/2014/03/what-would-be-software-testing-trends.html (What would be the Software Testing trends in the next 5 years?) Most company want to deliver higher quality in less time with fewer resources. And near future, there are multiple projects with big data and application in cloud. Need to we find strategy for long road: Test Automation Strategy
1. What we needs to be done
  • Dedicated focus - Find a solution to the testing problem
  • Find a long-term and cost-effective solution
  • Comprehensive coverage against requirements
  • Follow a "common standard" across the organization/product team/project team
2. We need to build framework or commercial tool
What have you plan when you want to build framework?
  • Scope of auto work
  • Auto architecture (review, evaluate, design)
  • Developer (design, programming)
  • Tester (should do manual test and create scripting)
Below is table that describe advantage/dis-advantage points when building framework
Advantage
Dis-Advantage
  • Easy to apply your project
  • Easy to customize
  • Utilize skills of developer
  • Overcome limits that Open source does not have or have yet.

  • Take more time and cost
  • Skills design of automation architectures are limited and make more complex framework. It’s become heavy and difficult extended it.
  • Difficult to apply different projects (different types as Web, Telecom, Hardware driver, …)
  • Quickly outdated because heavily investing and wrong way make to difficulty fixing, less invest no catch up new projects with high technology.


     Example:
      Dis-advantage: You try to create a framework based on another tools and you believes to build it successful. And you make everything to development it. But this framework could not progressed and stopped.

      Advantage: You have strong team who will build a framework is so good, it is easy reuse and maintenance. (^_^)

3.  You want to use open source tool
  •  Out-of-date
  • Basics
  • Difficult to use
  • Need good programming skills
4. Conclusion:
Besides, many tool works well but they operate separately, not integrated with each other. We should be develop FW or call Wrapper to combine them together. I see that open source tools which people rarely do all the functions which you needed, you want to use to combine many different tools, different company, different data, different how to use it. In general, if the project is small, short-time (6months – 1 year), you can develop the small FW or wrapper to save time for manual. Major projects or big team do the automation FW. I think it take a lot of money to build it. And you buy a commercial tool (can buy a key of tools).
Example: you want to test web, there are functional, performance/load, web services, database… but no one open source combine all types test, you should incorporate selenium, soap UI, load test(free), … but they do the different company.

HoaLe