March 31, 2010

Software Test Automation Estimation (10+ factors which you should consider)

You may have seen my video, Test Estimation with formula example and questions and answers. In this post, we will discuss the factors that you should analyze in order to arrive at a realistic effort estimate for creating the test automation.

1. Knowledge transfer

Is your team new to the Application under test or would they need training or time with the application to be comfortable with it?
Is your team new to the chosen test automation tool(s)? Would they need training on the tool before they are productive with it?

2. Test automation environment

How long would it take to set up the test environment with the application and the tool for each team member in your test automation team?

3. The chosen tool's compatibility with your application

Do you need to perform a test tool evaluation before you begin automation?
How compatible is the chosen test automation tool with your application's technologies (e.g. does the tool recognize each type of object in your application, does the tool work fast with your application and so on)?

4. Test automation framework

Would you need to create a test automation framework from scratch?
Or
Would you need to use an existing test automation framework? How simple or complex is it to learn to use this existing test automation framework?

5. Test cases to be automated

Would you have the test cases available for automation? Are these test cases automatable?

6. Size of the automation

Considering the size of the test case, the speed of your application and the speed of the chosen test automation tool, how long would it take to automate each test case?
By how much would the usage of your test automation framework affect the effort of automating each test case?

7. Test data requirements

Would test data be available or would your team need to generate own test data?
Where would the test data be located?

8. Types of testing required

What kind of unit tests would be performed on your test automation script?
What kind of integration tests would be performed on the integrated automation scripts?
What kind of tests would be performed to check the validity of test data?
Do you need to create automation only for functional tests? Or for other tests as well e.g. performance tests?

9. Supporting automation

Would your team need to create automation for non-testing activities (e.g. creating a lot of dummy data within the application or emailing test logs to users)?

10. Version control and test automation builds

How slow or fast is the version control?
How long would it take to integrate the test automation created by each team member? How frequently would the test automation build be created?

11. Reviews

What test automation items would be reviewed e.g. test scripts, test data?
What will be the frequency of these reviews?
How long would it take to complete the reviews and re-work?

12. Maintenance

How frequently would the base lined test cases be updated? How long would it take to update your test automation suite in line with these changes?
How frequently would your team receive an updated application build? (Keeping your framework and your chosen tool's capabilities in mind), how long would it take to update your existing test automation?

Roles and Responsibilities of a Software Test Lead

This post is the second one in continuation to the earlier one, Software Tester Roles and Responsibilities.

I have explained the role of a Test Lead in my video, Test Lead Interview Questions and Answers systematically and with details and examples. First, view the Test Lead Interview Questions and Answers video. Then read below the common responsibilities of a Software Test Lead.

1. Be updated on the latest testing techniques, strategies, testing tools/ test frameworks and so on
2. Be aware of the current and upcoming projects in the organization
4. Plan and organize the knowledge transfer to the Software Test Engineers and self
5. Collect the queries related to the requirements and get them resolved by the business (e.g. the client, business analyst, product manager or project manager) assigned to the project
6. Plan, organize and lead the testing kick-off meeting
7. Scope the required tests
8. Design the required test strategy in line with the scope and organization standards
9. Create the software test plan, get it reviewed and approved/ signed-off by the relevant stakeholders
10. Evaluate and identify the required test automation and test management tools
11. Estimate the test effort and team (size, skills, attitude and schedule)
12. Create the test schedule (tasks, dependencies and assigned team members)
13. Identify the training requirements of the Software Testers
14. Identify any test metrics to be gathered
15. Communicate with the client or on site/ offshore team members, as required
16. Review the test cases and test data generated by the Software Test Engineers and get them to address the review comments
17. Track the new/ updated requirements in the project and modify testing artifacts accordingly
18. Determine, procure, control, maintain and optimize the test environment (hardware, software and network)
19. Get information on the latest releases/ builds from the development team/ the client
20. Create and maintain the required test automation framework(s)
21. Administer the project in the test management system
22. Administer the Application under test (e.g. add users for the tests), as required
23. Assign tasks to the Software Testers based on the software test plan
24. Check the status of each assigned task daily and resolve any issues faced by the team members with their tasks
25. Ensure that each team member is optimally occupied with work (i.e. each Software Tester should not be too overloaded or too idle)
26. Re-assign the testing tasks, as required
27. Track the assigned tasks with respect to the software test plan and the project schedule
28. Review the test automation created by the Software Test Engineers and get them to address the review comments
29. Own and maintain the test automation suite of the project
30. Schedule and execute the test automation on the project
31. Review defect reports  and assign valid defects to the relevant developer/ development manager
32. Assign returned defect reports and assist the concerned Software Test Engineer, as required
33. Ensure the resolved defects are re-tested
34. Consolidate and report test results to the concerned stakeholders
35. Be approachable and available to the Software Testers, as required by them
36. Update the software test plan, as required
37. Ensure that the test cases are updated by the Software Testers, as required
38. Ensure that the test automation is updated based on the updated test cases
39. Gather the decided test metrics
40. Escalate and obtain resolution of the issues related to the test environment and team
41. Plan, organize and lead team meetings and ensure action is taken based on the team discussions
42. Plan and organize training for the Software Testers
43. Review the status reports of the Software Testers
44. Review the time logged by the Software Test Engineers for various activities
45. Report the status to the stakeholders (e.g. the client, project manager/ test manager and the management)
46. Keep the Software Test Engineers motivated
47. Improve the test process based on the suggestions by others and own judgment
48. Manage own energy level and time

Note: These responsibilities may be tailored depending on the specific organization for which you are working. However, you should be aware of the responsibilities above so that you may perform well as a Test Lead.

Want to learn more? View the video Test Lead Interview Questions And Answers.

March 29, 2010

How to improve your skills as a software tester?

If you test software, you have likely considered improving your software testing skills. The answer to this important question is not limited to reading some articles, following some blogs and joining some forums. You should first be aware of the different actions you can take to develop your software testing skills. Then include these actions in your routine and be diligent in taking these actions regularly. Spend substantial time on these actions and you may see dramatic improvement in your skills. First, view the video, How to improve skills in software testing.

Building software testing skills

If you have viewed my video, Software tester job role, you would be aware of the major responsibilities explained therein. Your desired actions may be roughly mapped to the major skill categories below.

Testing knowledge Learn about the latest testing strategies, techniques, approaches and (developments in) testing tools. You can get some good information and insights from the popular software testing forums, tool vendors' websites, websites related to testing and software testing blogs.
You should also be aware of the latest development technologies used in your application and know programming (for the purpose of reviews and automation).
Understanding requirements Learn more about the business of your application. You can get more knowledge from the business people (e.g. clients, product managers, business analysts, domain experts and end users) and by reading (current and past requirements documentation, white papers, case studies, trade magazines and so on).
Planning There is a wealth of material on the topics of estimation and project planning on the web. The key is to apply the principles of project planning to your activities consistently.
Test design Do not be satisfied with just one or two test cases for each low-level requirement. Brainstorm more and more test ideas. Design test cases based on these test ideas.
Pay more attention to the design of test data. Consider interesting individual test data items and test data combinations. Do not limit yourself to just using one or more test data design techniques.
Test automation This is one area with the potential of a lot of improvements. For example, you can learn automating test cases that are difficult to automate, organize your test automation better, design or refine a test automation framework and automate testing activities that are being done manually at present.
Test execution Learn as much as you can about your application's production environment. You may get this knowledge from the IT/ Support/ Helpdesk team. Replicate the production environment as far as feasible as your test environment.
Change your pace deliberately when you execute tests. If you speed up, you may be able to get tests done quicker. Then if you slow down, you may be able to observe things that did not strike you before. Read my earlier post, How to find more or better bugs (12 tips to explode your bug count and/or severity)? for more tips.
Reporting (defect reporting, reporting test results and reporting status) Analyze the earlier reports created by you and others. Find ways to express the information more completely, accurately, concisely and better suited to the specific audience of your report.
Team playing Be more committed to your team.
Take ownership of your responsibilities (stand by what you say or do).
Respect your team members and help them out when you can.
Process improvement Always challenge the current test process in your mind. Research and suggest better approaches and tools to testing tasks.
Constantly learn from others in your team. Try to apply the knowledge you gain in your project immediately.
Time management Plan your day according to the priorities of the tasks at hand. Leave some time to refine your work. Take actions on the most important tasks first.
Self management Last, but not the least, always be in good health and high spirits. My father always tells me so. Believe me, it shows in your results.
And care about the fellow testers genuinely. Contribute to the software testing community whenever you get a chance.

Share more tips to improve our testing skills by putting in a comment.