TL;DR
Important part of test strategy is Platform in which application under test operates. For most applications this is operating system. In this post I will describe one unusual application environment.
Heuristic Test Strategy Model
Heuristic Test Strategy Model [source] was created by James Bach. It is excellent starting point for test strategy. Depending on your context, you will tailor this model and create your own instance. In Heuristic Test Strategy Model, you will find Platform under Product elements:
Everything on which the product depends (and that is outside your project).
• External Hardware: hardware components and configurations that are not part of the shipping product, but are required (or
• optional) in order for the product to work: systems, servers, memory, keyboards, the Cloud.
• External Software: software components and configurations that are not a part of the shipping product, but are required (or
• optional) in order for the product to work: operating systems, concurrently executing applications, drivers, fonts, etc.
• Internal Components: libraries and other components that are embedded in your product but are produced outside your project.
• Product Footprint: The resources in the environment that are used, reserved, or consumed by the product (memory, filehandles, etc.)
Heuristic Test Strategy Model is excellent source of testing ideas.
Testing In Accelerated System
I use public transport as much as possible. In Zagreb we have ZET, and many busses drive on natural gas. Several years ago, ZET installed ticketing system based on RFID technology:
How to test this system? I will describe one test idea that is based on Platform and that I discovered by accident. In order to validate your ticket, you first need to select ticket type. Ticket type describes how long you can ride and has different price. After that, you need to press your card in lower part of ticket machine, and payment is automatically done. For me, this action usually takes up to 5 seconds.
Bus is Accelerated System.
For example, when a car starts from a standstill (zero velocity, in an inertial frame of reference) and travels in a straight line at increasing speeds, it is accelerating in the direction of travel. If the car turns, an acceleration occurs toward the new direction. The forward acceleration of the car is called a linear (or tangential) acceleration, the reaction to which passengers in the car experience as a force pushing them back into their seats. When changing direction, this is called radial (as orthogonal to tangential) acceleration, the reaction to which passengers experience as a sideways force. If the speed of the car decreases, this is an acceleration in the opposite direction of the velocity of the vehicle, sometimes called deceleration.[Wikipedia]
So while I am doing ticket validation and charge, I am in Accelerated System, bus starts to accelerate, and I am under force action that pushes me in opposite direction of acceleration (this could be very dangerous). And I triggered following test activity (experiment), by pure chance:
I entered the bus as last passenger.
I selected 30 minute ticket.
I pressed my ticket card in the reader area.
Bus accelerated.
I was pushed by acceleration force.
Card was remove too soon.
Ticket reader reported that transaction failed, card reader did not get enough time to read the card (timeout). There was message: “Please put card again at the card reader area”
Acceleration stopped as bus achieved required speed.
I pressed again card to card reader.
Transaction was successfully done.
Conclusion
It is highly possible that this scenario would be triggered for other passengers. Risk is that card is charged for failed transaction. (I did not check my card balance). Using HTSM, you get high coverage for important testing ideas. You will become skillful software tester, and you will not need pure lack to do important testing.