Monday, June 7, 2010

Future of software testing

We don't know the future. Nobody does. However, I have been involved with software testing since 1998 and I have seen changes taking place. It used to be simple earlier. We received the requirements and designed simple test cases based on these requirements. Then we received the latest build of the application, execute our test cases and report discrepancies in bug reports. We did all of this as carefully and as fast as we could. As I experienced software testing first hand, I began to learn it. There were multiple approaches available to perform testing tasks. Each approach had its own pros and cons. There were multiple types of testing that we could do. Each of my team members had a different set of skills, strengths and weaknesses. It was not simple anymore. 3 or 4 years ago, I started following the online software testing communities. I read a lot of material and comments on hundreds of topics in software testing. I saw thought leaders in software testing repeatedly pointing us test practitioners to the basics. Over time, I have begun to consider software testing as quite complex and challenging. The good news is that software testing still has a long way to go before it truly matures.

Here is the list of my predictions. These are not revolutionary changes that are going to catch you all of a sudden. In fact, you can see some of these changes today. But, if you are aware that these changes could speed up or intensify in the coming future, then you have a better chance to prepare yourself to take advantage of them.

Prediction #1. Companies will demand more value for the testing resources they put in.
The recent downturn has shaken everyone. We have been forced to become savvier with our investments. The same is true for companies. Companies will demand a better testing service from their resources (in-house testing team or a vendor providing testing services). The companies will now demand:
a. Faster turnaround time
b. Greater coverage of specified and implied requirements
c. Testing in more perspectives (functional, performance, security, usability and so on)
d. Increased collaboration with all other teams involved in sales/ product development, software development, deployment and support
e. Lower costs (of test infrastructure (test environment), test tools and testing personnel)
f. More transparency of the test process

Prediction #2. Software testing will become more complex.
Keeping in mind the increased expectations of clients, the increasing complexity of applications and the increasing knowledge of test practitioners, software testing will become more complex. In future, testers will need to find answers to the following questions among others:
a. What are the most important business objectives of the application that I am testing?
b. What technologies does my application employ? How do I test each of those?
c. What test infrastructure will I need to test my application? How can I set those up with the least cost (of setting it up, using it, maintaining it and tearing it down)?
d. What tests would provide the best value against the cost of creating them?
e. How is my application integrated with other systems? How do I test various aspects of each integration?
f. What is the best test methodology that I can use?
f. Which of my communication provides the best value to other stakeholders?
g. How do I utilize my natural strengths in testing? How do I circumvent my natural weaknesses?

Prediction # 3. Crowd-sourcing will continue to become popular.
uTest is becoming more popular by the day. Today, uTest has more than 20,000 testers and a client list that includes Google and Microsoft. The clients of crowd-sourcing companies can buy just the testing services they need when they need them and even select the individual testers for the test. No wonder, many companies consider crowd-sourced testing services as viable alternatives to large in-house testing teams or inflexible testing services vendors.

Prediction # 4. In order to get hired and stay hired, testers will need to distinguish themselves from the crowd.
Today, there are masses of software testers. Their profiles and resumes look similar. If I were going to hire someone for my team, I would not like to just go for someone with the basic knowledge and skills. I would like to get the details. And, I would probably like to interview someone with substantial achievements. Someone who has "walked the extra mile". Someone who has achieved more than their counterparts at the same level. Be it extra-ordinary knowledge, uncommon or advanced skills or a solid recognition from testing experts.

Prediction # 5. Social skills and working style will become important.
Other than software testing knowledge and skills, testers will be required to be socially adept. They will be required not only to plan and test well, but also communicate well. They will be required to establish themselves as part of a team, support the team, speak up when required and influence others when required. In future, just testing won't do for the testers. They will also be required to collaborate effectively and strive to maintain long-term relationships with their extended teams. Further, testers will be required to show align themselves to the (stable or changing) business objectives and the team.

What do you feel? Do you think that you are ready for these changes? Are you going to take advantage of them? What other changes do you see on the horizon?

15 comments:

  1. Inder,

    Great article and to the point predictions in my knowledge. I agree to you in all the above points. As you are much senior to me, I just want to get your views on prediction # 1. In my opinion, testers are always expected to be more valued. During interviews also people asks anything. But in reality when it comes to work then the scene is very different. Just an example in every interview testers are asked about SQL and all but in reality for a developers used to provide the queries.

    Regards
    Amit

    ReplyDelete
  2. Hi Inder,

    Nice post,,

    But please put more light over Prediction # 4.

    As u said tester who walked extra mile is the one who will sustain.

    every where in this world this phrase is used to point of Intentional Negative of a Professinal..

    Even in apprisal also we use to listen this,,,"Well U have done good but we wont see u moving a extra mile"...

    But no manager define the length n scope on that single MILE ...???

    As u have done a good analysis on this,,,then i expect please define ,,,

    the extra mile for a Tester with example ...

    Like - for 2-3 Years of tester's - extra mile will be --- clearing some certification (which one exactly)....OR should be equiped with XYZ scripting.....etc etc..

    So lets make u r blog a bit productive then long decriptive ... :)

    ReplyDelete
  3. Hi Inder! I am interested in #4. Can you please specify the "uncommon or advanced skills" you would look for in a candidate? Thank you!

    ReplyDelete
  4. Good Article.
    Yes, I am ready for these changes. Infact these changes are invitable.

    ReplyDelete
  5. Inder could you plesae provide more information about UTest or Crowdsourcing.
    How it is benificial than the traditional techniques for the companies and testers?

    It will be great help if you can discuss pros and cons. Sure, we will also contribute.

    ReplyDelete
  6. Hi Sudarshan,

    Thank you for your comment. I think that I can get a feel of where you are coming from.

    Let us look at Prediction # 4 again. In order to get hired and stay hired, testers will need to distinguish themselves from the crowd. It is simple to see why. Let us say that there is a tester who is performing each of his/ her responsibilities well. Refer http://inderpsingh.blogspot.com/2010/02/what-are-responsibilities-of-software.html
    Should this tester be promoted or given higher responsibilities? May be. It depends on the circumstances e.g.
    1. The company has a higher position open and they need someone internal who they trust to perform the role.
    2. Another company is available to provide the better position.

    Even if the circumstances are favorable, it is possible that this tester is not suited to perform a higher role, say of a Test Lead.

    On the other hand, let us say that there is another tester who not only performs all the expected responsibilities well, but also performs some responsibilities of a Test Lead. Refer http://inderpsingh.blogspot.com/2010/03/what-are-responsibilities-of-software.html
    It is only a matter of time before the second tester is promoted. Why? Because s/he is capable of taking up higher level work and performs this work without being asked. If her/ his company were not willing to promote her/ him, s/he would see openings outside that seek her/ his capabilities.

    That was one example. I could give you other examples but please note that these things should be taken in context. The additional capabilities and performance should be aligned with the business objectives of the company if they were to make a difference. If getting a testing certification does make a substantial positive difference to your employability, then definitely go for it. However, things that impact the business directly tend to make more difference. Examples are:
    a. Maintaining and strengthening the rapport with the clients
    b. Designing testing frameworks that can be re-used in other projects
    c. Producing more complete but concise documentation (e.g. complex test plans)
    d. Prior experience with a vast number of test automation and test management tools
    e. Training other testers
    f. Analysis of test results
    g. Excellent management of self and other team members

    In summary, in order to progress you need to aim higher. You should aim higher even to stay at the same place because your colleagues and all other professionals are becoming smarter and better with time.

    Does this answer your question?

    ReplyDelete
  7. @Anonymous,

    I have already mentioned some potential benefits of crowdsourcing for companies under the Prediction # 3. Here are some
    potential cons. One way to manage these problems is to divide testing between in-house and crowd testers. It would be interesting to know about other ways the companies or crowdsourcing testing services providers address these problems.

    1. It is not certain if you are going to get the same tester to do the next test run. If you get a new group testing your
    application each time, you need to repeat the effort to educate them about your application, your business objectives and the
    kind of defects that have been discovered in the past.

    2. The other problem is figuring out the best way to divide up the work among your testers. Suppose, you provide access to
    your application to a team of 20 testers and you tell them that you will pay for each defect (anywhere in the application) that you accept. Now, let us say 15 out of 20 testers discover a particularly obvious defect. But, you will pay only the tester who submitted the bug report first. Now, the testers will likely test your application with the focus of finding new defects only. The easier new defects are found, the better. The faster new defects are submitted, the better it is for the testers. Therefore, you may find only the obvious defects being reported and you may find incomplete bug reports.
    Moreover, let us say that no defects were reported in Module X of your application. Does it mean that Module X is working perfectly? No. Maybe it was tedious working in Module X. Maybe, there were no "obvious" defects in Module X. Maybe, none of the testers tested Module X at length.

    3. Further, when you use crowdsourcing, you let people outside your organization know about your application's features and
    functionality. Not a huge problem if you are fairly advanced in your development cycle and your application would be
    available publicly when released.

    What other pros and cons can you think of?

    ReplyDelete
  8. What I'm seeing according to my own experience is that conditions in #5 are so important that creates conditions in #4, but probably testers that have conditions of #4 and have not conditions of #5 wouldn't survive.

    ReplyDelete
  9. @Javier,

    Indeed social skills and working style can be important differentiators in order to get hired and stay hired.
    Though, it may be easier for someone to strengthen and highlight their strong qualities and skills.

    ReplyDelete
  10. This is nice article..i am a software developer and i want to switch into rsoftware testing.is that possible to switch.I am a ruby and PHP developer.

    ReplyDelete
  11. Great article!

    In regards to Prediction #5, do you see software testers using online communities to collaborate with others?

    ReplyDelete
  12. You have mention wonderful information in this blog I like this information so much I am very glad to read this info.

    ReplyDelete
  13. @ Michael,

    Software testers are using online communities to collaborate and learn from others today. However, I know that many testers browse the online content but hesitate to ask questions and participate in the discussions. Participation in online communities also takes time. I am sure that in future, we will see tools that will allow us to learn from, participate in and contribute to online communities easily and quickly.

    Further, I also think that many companies will internalize the concept of online communities in the recent future.

    Everyone, thanks for your comments.

    ReplyDelete
  14. Without software testing,it is impossible to know the error and bug in your application and can't make an error free application.
    -online testing

    ReplyDelete