Good understanding of what is expected is key to effective testing.Understanding is a non-linear activity, it is about identifying the various elements and establishing connections between these. In the process of connecting these information, missing information is identified, leading to intelligent questions. Seeking answers to these questions aids in deepening the understanding.

Information elementPotential question(s)
MarketplaceWhat marketplace is my system addressing?
Why am I building this application? What problem is attempting to solve? What are the success factors?
Customer typeAre there different categories of customers in each marketplace?
How do I classify them? How are their needs different/unique?
End user (Actor)Who are the various types of end users (actors) in each type of customer?
What is the typical/max. number of end-users for each type?
Note: An end user is not necessarily a physical end user, a better word is ‘actor’
Requirement
(Use case)
What does each end user want? What are the business use cases for each type of end user?
How important is this to an end user - what is the ranking of a requirement/feature?
AttributesWhat attributes are key for a feature/requirement to be successful (for an end user of each type of customer)?
How can I quantify the attribute i.e. make it testable?
FeatureWhat are the (technical) features that make up a requirement (use-case)?
What is the ranking of these?
What attributes are key for a successful feature implementation?
How may a feature/requirement affect other feature(s)/requirement(s)?
Deployment environmentWhat does the deployment environment/architecture look like?
What are the various HW/SW that make up the environment?
Is my application co-located with other applications?
What other softwares does my application connect/inter-operate with?
What information do I have to migrate from existing system(s)? Volume, Types etc.D
TechnologyWhat are the components?
What technologies may/are used in my applications?
Languages, components, services...
ArchitectureWhat are the various components and how are they interconnected?
What are the various interfaces?
Usage profileWho uses what?
How many times does a end user use per unit time? i.e. #/time
At what rate do they use a feature/requirement?
Are there different modes of usage (end of day, end of month) and what is the profile of usage in each of these modes?
What is the volume of data that the application should support?
Behaviour conditionsWhat are the conditions that govern the behaviour of each requirement/feature?
How is each condition met - what data (& value)drives each condition?