8

I have never worked as a QA but have some interest in the field and I received a task for an entry position which requires me to write a test case to fulfil this requirement (it's a messaging service):

1.Every person can have unlimited conversations and unlimited messages in a conversation.

There were a few other specifications which were simpler and I followed the test case, test scenario, expected results format of writing them, but I am unsure how would one test if something works for unlimited amount of data, in this case, infinite messages?

1
  • 3
    It is quite obvious this requirement can never be obtained by a realistic system, no matter how big. Test-Case: More messages than particles in the universe - will not be possible.
    – Falco
    Jan 13 at 15:35
6
  1. Every person can have unlimited conversations and unlimited messages in a conversation.

These are two use cases:

  1. Every person can have unlimited conversations
  2. Every conversation can have unlimited messages.

As one of the testing principle is :

Exhaustive testing is not possible .meaning you cannot test all the possibility for a system as the combination would be extremely large.

So in this case (infinite) is a uncountable and unachievable use case, what you can do as a quality enthusiast is to.

  1. Understand your userbase. See what is the average number of conversation kept in the app by your user. Say you figured out that on an average users will keep only last 100 conversations. ( If there is no average see what is the maximum conversation kept eg: User b had 10000 conversation which is the largest ever reported )

  2. Understand your userbase. See what is the average number of messages per conversation kept in the app by your user. Say you figured out that on an average users will keep only last 100 messages per conversation. ( If there is no average see what is the maximum message kept eg: User b had 10000 message in a conversation which is the largest ever reported )

  3. Now test n*2 times messages and conversation , where n is the max message or conversation.

  4. Most important: Each time create new n*2 message and conversation , don't clear old messages and converstaions. This gives you ever growing database which you can validate for ( near to infinite usecase) .

Update:

You can also choose to add N*2 messages to more than 1 conversation , say first 5 conversation ever added. This ensures that system works fine even when there are multiple conversations with ever growing near to infinite messages

9
  • 1
    Things like message conversations tend to have very long-tailed distributions. Most of the time you might get just get two or three messages in a conversation, and then you'll have an outlier with two or three hundred.
    – Mark
    Jan 13 at 22:23
  • @Mark how does it change the test approach mentioned could you elaborate
    – PDHide
    Jan 14 at 3:27
  • My point is that you don't get anything useful from looking at the average. If the average conversation thread has 35 messages, but there's an outlier conversation with 107,416 messages, you need to test the 107,416-message case; doing anything with the 35-message case tells you nothing.
    – Mark
    Jan 14 at 3:39
  • @Mark yes mark i agree (I mentioned that in the answer use the maximum )
    – PDHide
    Jan 14 at 3:40
  • Thank you for the input, it's very helpful to understand how to deal with such a scenario. I have one question in regards to point 4. Do you create a new n*2 using the result of the old n*2, thus realistically making it n*4, or do you test it only once the old N max values have been surpassed?
    – Tisho
    Jan 14 at 10:04
5

unlimited conversations and unlimited messages

something works for an unlimited amount of data, in this case, infinite messages

These two statements may mean different things.

There is no such thing as an infinite number of entities in a computer system because computers have physical limitations, in terms of memory, storage, processing.

What you can do is to create testing charters detailing how you can explore these limitations.

For instance,

Explore the application with the phone XYZ To discover how it handles keeping an extreme number of message loaded

Or

Explore the backend service to discover how it behaves when an extreme number of messages are stored for a single user

Then during your exploration, you will use your skills to try to force the target to these extreme conditions. Later you debrief the people who need this information so they can make decisions.

Test cases are good documentation for situations where you know what you want to know. You have a specific routine and a known expected result.

This is called checking. Testing is an open-ended performance to discover facts we don't know. Testing is exploration. (More about Testing versus Checking here)

4

You can't.

I see this as a question which should introduce performance / stress tests to determine the number of conversations / messages which still allows user to use the application and number of conversations / messages which the system can actually handle.

3
  • 2
    I see. In the case I don't have a report from current users, as suggested here by @PDHide, what number should I base my testing off or would the stress test involve incremental increase in messages/conversations count until the system can't handle it anymore?
    – Tisho
    Jan 13 at 14:58
  • 1
    You could estimate an upper bound by estimating your user-base and how much messages a user could produce in a certain amount of time. For example: IF a user has to type each message by hand, he will usually not be able to create more than 10 messages per second. So if the service is running 10 years, with a million users you will have 10*3600*24*365*10 messages per user and this number times a million for overall messages as a (vastly overestimated) upper bound.
    – Falco
    Jan 13 at 15:40
  • Thank you for the help, I will take try and implement this logic to the best of my knowledge. A bit of a side note question regarding test cases - is it acceptable to create a test case without test data, for example if I'm testing if X player can start a new conversation only if he has Premium package? There isn't a test data, as the steps include simply clicking the button "Message Now". In my mind, I need only a precondition that's being a Premium account available for testing.
    – Tisho
    Jan 13 at 16:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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