Are you doing testing without requirements? Are you doing testing as per the instructions given by development team? In this post we will discuss – 1. Some common risks/issues that you might face while testing the software without requirements, 2. Ways to tackle those risks and 3. Alternative ways of testing.
On the fly development, pressurized deadlines, changing user requirements, legacy systems, large systems, varied requirements and many more are known influences for many a project manager to discard or not update the functional specification document. While a project manager/requirements manager may be aware of the system requirements, this can cause havoc for an independent test team.
More so, with ever expanding teams, temporary resources, a large system may not be documented well enough or sometimes not at all, for the tester to form complete scenarios from the functional specification (if present) document.
This can pose a great risk to the testing of the system. Requirements will never be clearly understood by the test team and the developers will adopt an ‘I am king’ attitude, citing incorrectly working functionality as the way the code or design is supposed to work. This can confuse end development and you may have a product on your hand that the business doesn’t relate to, the end users don’t understand and the testers can’t test.
Dealing with a system that needs to be tested without functional specifications requires good planning, smart understanding and good documentation – lack of which caused the problem in the first place.
Before I begin describing some ways in which you can tackle the problem – here are a few questions you could be asking yourself:
- What type of Software testing will be done on the system– unit / functional / performance / regression?
- Is it a maintenance project or is it a new product?
- From where have the developers achieved their understanding of the system?
- Is there any kind of documentation other than functional specification?
- Is there a business analyst or domain knowledge expert available?
- Is an end user available?
- Is here a priority on any part of the functionality of the system?
- Are there known high-risk areas?
- What is the level of expertise of the development team and the testing team?
- Are there any domain experts within your test team?
- Are there any known skill sets in your team?
- Are you considering manual/automated testing?
All of the questions should help you identify the key areas for testing, the ignorable areas for testing, the strong and weak areas of your team. Once you ascertain the level of skills and expertise in your team, you have choices available to choose from.
Some common risks/issues that you might face while testing the software without requirements are: –
- Half baked development – expected, since your requirements aren’t sufficient
- Inexperienced resources.
- Unavailable functional knowledge in your team.
- Ability to comprehend diagrammatic representation in various ways.
- Inadequate time to document functionality properly.
- Unavailability of business analysts, developers, and team architects.
- Constantly changing requirements.
- Level of detail required may be too high and time to produce the detail maybe be less.
- Conflicting diagrams/views arising from ambiguous discussions with business analysts and developers (yes, this is possible!)
And some ways to tackle the risks are: –
- Know your team strength.
- Know the technical “modules” as developed by the developers.
- Collate the modules or decompose them further, depending on the type of testing you plan to do. For e.g. a system test will require you to combine modules while a unit test might require you to break down a module to extensive detail.
- Assign modules as per person strength and knowledge.
- Maintain a clean communication line between the team, developers and the business analysts.
- If the above is done, changing your documentation to match the ever-changing requirements should be possible, although- beware, it could create havoc with your estimates.
- When conflicts arise, make sure to discuss it out with the parties involved. In case that is not possible, refer to prototypes- if any. If there are no prototypes, validate it from an end user and the desired business approach/need.
- To avoid ambiguous interpretation of diagrams or documents, make sure to determine standards for your teams to follow. In case of diagrams, choose those approaches, which are clean and analysis free. When a diagram is open for analysis, it is open for interpretation, which may lead to errors. Maintaining error free documentation and tracking of the same can be painful for a large project.
- If level of detail required is high with limited time on your hands, document the basics – i.e. a very high-level approach and update the test cases as you go ahead with testing.
- Unfortunately there is little you can do in terms of inexperienced resources or inadequate functional knowledge expertise within your team. Be prepared to hire outside help or build up the knowledge by assigning a team member to the task.
Alternative Ways of Testing
If there is absolutely no time for you to document your system, do consider these other approaches of testing:
User/Acceptance Testing: User Testing is used to identify issues with user acceptability of the system. The most trivial to the most complicated defects can be reported here. It is also possibly the best way to determine how well people interact with the system. Resources used are minimal and potentially requires no prior functional or system knowledge. In fact the more unknown a user is to the system, the more preferred he is for user testing. A regressive form of user testing can help uncover some defects in the high-risk areas.
Random Testing: Random Testing has no rules. The tester is free to do what he pleases and as he seems fit. The system will benefit however, if the tester is functionally aware of the domain and has a basic understanding of business requirements. It will prevent reporting of unnecessary defects. A variation of random testing – called as Monte Carlo simulation, which is described as generation of values for uncertain variables over and over to simulate a model can also be used. This can be used for systems, which have large variation in input data of the numbers or data kind.
Customer Stories: User/Customer stories can be defined as simple, clear, brief descriptions of functionality that will be valuable to real users. Small stories are written about the desired function. The team writing the stories will include customer, project manager, developer and the tester. Concise stories are hand written on small cards such that the stories are small and testable. Once a start is made available to the tester, available functional and system knowledge can help speed up the process of testing and further test case development.
In the end, all one requires is careful thought, planning and mapping out of tasks before one actually begins testing. Testers and Test Analysts usually react by pressing the panic button and begin testing – which ultimately leads to complete chaos and immeasurable quality of the product. Clear thinking with valid goals will help you and your product achieve desirable quality. You might