A while ago, I was testing some features, which contained state diagram with four operation states. I name the operation states to support the story. The operation states are Provision, Activate, Deactivate and Withdraw. With an operation you go from one state to the other state. The requirements stated that all these features were using these operation states. During my test I found out some strange behavior with one of the features. I executed a Provision operation request to make a transition to another state. No problems. In line with the design requirement, I executed an Activate operation request. The response stated “Service is already activated”. Hmmm. Continue with a Deactivate operation request. No problem. than I executed a Withdraw operation request. The response stated “Service is already deactivated”. What is happening here? I called the architect and presented him this observation. While discussing the situation, we found out that Provision and Activate were executing exactly the same request. The same counted for Deactivate and Withdraw. Strange. The architect looked into the ETSI technical specifications (Note that I work in the telecom industry). There we found some information showing that the state diagram was a bit different than in our own design requirements. We came to the conclusion that we were facing a simple copy paste error of the design. Several features were using this state diagram. Only this specific feature was using a part of the state diagram. The developer re-used the code to build this specific feature, and the problem exposed itself during my tests.
Last week, I was creating a session report of some observations I made. I wanted to make clear what happened. I provided some extra information. I copy and pasted some responses in my report. I filed a bug and attached the session report to the bug report. The developer reacted to me with the following. “The structure in the response is wrong. Not sure if it is a copy/paste miss, or if the system actually behave like this. Needs further investigation”. I executed the test again, but now looked at the information during all transition states. Damn, the developer was correct. A copy paste error on my side.
What brings this to me as an extra? The Copy-Paste heuristic. If something is copied and pasted for other purposes, you will find problems.