Take the 2-minute tour ×
Software Quality Assurance & Testing Stack Exchange is a question and answer site for software quality control experts, automation engineers, and software testers. It's 100% free, no registration required.

So currently at my company it is common practice to write test case high level steps before implementation. Myself and others find this to be a somewhat wasted effort. I often end up blowing away much of the steps when I write the final draft.

In my opinion the final draft is very quick to write once implemented.

So my question/problem to solve is, what can we better do with our time during this phase(pre-implementation)? What's a more constructive endeavor for this phase?

My current suggestion is to map the use case and data/control flow of the requirement being tested. That way writing the test case should be simple later because time was spent understanding the problem.

share|improve this question
add comment

3 Answers

up vote 14 down vote accepted

Well, first of all - congrats buddy, glad to know you work for customer / company with understanding that involving QA at early stages is definitely worth it!

I'll reveal below several related points from my own experience of managing QA team (up to 10 FTE) involved in testing of fairly big project, where reqs page count was about 1000 pages and more, and business logic complicated enough so that typical project investigation for QA team newcomer took about 2-3 weeks.

Many customers do believe that investment in any kind of test documentation is a waste of efforts in any case: indeed, during these hours we do not test and do not reveal any bugs, so what's the profit? Consider the following before making your mind! (:

  1. Creating test cases (or simply any kind of test documentation) at early project stages, like prototyping, reqs refinement, early DEV has one great advantage: at the very same time we test requirements! Bugs are expected there sometimes even more often than in the application itself, but cost of their fixing at early stages is several hours of BA / analyst instead of hundreds of hours of DEV work later. In my case initial team of 3 QAs involved in test cases creation 2 months before the first build saw the sunlight was able to reveal more than 500 reqs issues of different severity: from incorrect warning messages to contradictions in business process. All of these were easily handled by team of 3 analysts - compare to 40+ DEV team at active stage of implementation and actual app testing.
  2. At the same time, I must admit that many of early test cases were blown away from final suites. In fact, from about 2.5k+ of overall test cases count created before the 1st build only about 1.5k were included in running suites. Was that really worth it? Well, in addition to the above point related to reqs testing, by the time of 1st tests QA team itself was familiar enough with the functionality so that testing efforts for the same tests at the very start were only about 20-25% higher than later. Having in mind complexity of the system and unmovable project release dates (REALLY unmovable in our case!) any other approach was actually impossible, since for the team of any size project investigation would take the same 2-3 weeks. So, in our case that was the most important part of product investigation.
  3. Regarding test cases format and detail: sure thing creating detailed test cases at reqs refinement stage is not at all the best choice. In the described case we finally ended up with the following approach: at first short document with the high level description of test directions only, e.g. "For the document submission form: personal info details integrity, attachments availability for download and printed form version are tested using this and that sets of test data". Such document, which we called "Test Design" (our PM just liked that (: ) was then passed to analysts, who then crossed out, corrected and adjusted priorities for the described scenarios. Only after that stage (which took about 10-15% of time comparing to detailed test cases creation) such refined test approach was transformed to the detailed test cases. No doubts this is worth it when the logic is complex and project is huge. For me that looks just about the same as "My current suggestion is to map the use case and data/control flow of the requirement being tested." from the original question!)
  4. Do not neglect testing environment preparation or at least planning at this stage: this will help to avoid surprises later and save hours and even days of precious time at release week (besides, for me that was THAT project where true understanding of "hour lost at project start is that very same hour you so terribly miss at release date" came).

Perhaps the above is a bit broader than expected from the OP, but I hope some ideas will be helpful for anyone else. Sure thing actual approach at early stages with QA involvement depends on the project / team / complexity / release calendar, etc. - and therefore "test cases before the application" approach is doubtful for projects of small size / simple logic, but for big projects these QA efforts will make a definite overall profit when planned wisely.

share|improve this answer
1  
Both really great answers. Thanks a lot. I'll be referencing these as I write my proposal for a new process. –  AwayFromMyDesk Aug 10 '13 at 14:59
    
@AwayFromMyDesk You're welcome buddy, good luck with your proposal and projects! –  Peter L. Aug 11 '13 at 6:51
1  
+1 for testing env preparation. It hurts when you want to execute tests, and it is still not ready/broken, I know it. –  dzieciou Sep 8 '13 at 19:56
    
Atlassian recently blogged on their QA involvement starting at the planning stage: blogs.atlassian.com/2013/12/jira-qa-process –  user6385 Dec 23 '13 at 23:07
add comment

You're absolutely right to feel that your time in the early stages is best spent understanding the problem.

Mapping the use cases and data/control flow of the requirement is one good way of building up that understanding, and in doing so, you are also testing those requirements as you will discover questions that you want to ask, gaps and ambiguities that need to be clarified.

I would suggest that you also step back from the requirements doc and spend time understanding what value the system under test is meant to provide. This can be surprisingly hard to uncover by simply looking at lists of requirements - you may need to follow up with business analysts, or other representatives of the business to understand the motivation behind the requirements. (You might find that the business isn't actually all that clear about what value they want, or that different stakeholders have wildly differing and contradictory views on that. Be diplomatic here, and bear in mind your company culture. In some companies you'll be thanked for uncovering this kind of problem, in others, not.)

Without understanding what value the system is meant to provide, however, you don't have any way of designing your tests so that they are most likely to reveal risks to that value. And that is what your testing is for, isn't it? Not just to unquestioningly confirm each requirement and go no further?

Something else that I seek to do in early stages is to gain an understanding of the technology, especially if it's new to me. The depth I go to depends on the project - some require that I build up a reasonably good technical understanding in order to identify risks, others don't. I'm not just looking for risk though when I'm doing this - I'm often trying to understand what tools might be useful to me for exploring the system. Sometimes I write some of these tools ahead of time. I also think about what test data might be useful, what test environments I might require, and so on.

All of these things are more valuable than spending time on documenting something that you don't yet understand well enough.

share|improve this answer
1  
Great piece of valuable advice! May sign as well under to understand the motivation behind the requirements paragraph. My +1! –  Peter L. Aug 10 '13 at 10:53
add comment

The top tasks are:

  • Read and refine requirements
  • Prepare test cases
  • Map test cases to requirements
  • Create test data
  • Create test environment
  • In fact try to understand the complete application in depth
  • Tasks leftover from the previous sprint.

Visit Testers tasks before implementation for detailed description of each suggestion and see if it helps or not.

share|improve this answer
2  
Hi, Sachin. Linking to a blog post without any further information isn't really going to be much help. Could you expand your answer to say what you think this post adds to the other answers? –  Kate Paulk Sep 3 '13 at 18:52
2  
Hi @sachin-dhall - welcome to SQA. I agree with Kate, your answer doesn't add anything useful (generally we recommend that a good answer provides context for a link sqa.stackexchange.com/help/how-to-answer). Also, overt self-promotion such as linking to your own blog is generally frowned upon - it's okay to link a relevant article occasionally (with full disclosure!), but the one you've picked has no real relevant content, so it just looks like spam. Can you expand your answer so that it answers the poster's original question? –  testerab Sep 3 '13 at 21:39
    
I added main points of the linked article. Still it would be great to have content here, not there. –  dzieciou Sep 8 '13 at 20:03
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.