Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

README: "Excluding other parameters" section: "using up" combinations #101

Open
dan-tripp opened this issue Apr 19, 2023 · 8 comments
Open

Comments

@dan-tripp
Copy link
Contributor

There something I don't understand in the README.

It's under "Excluding other parameters" - the idea of "using up" combinations. eg.:

  1. In these cases we do not want to 'use up' any testable values for other parameters.
  2. as it would ... use up P2/P3 combinations
  3. no P2 and P3 combinations are used up for the -1 test

As far as I can tell, "using up" means that a certain P2/P3 combination appears in a certain test X, along with P1 == -1, and that P2/P3 combination appears in no other tests. For brevity, I'll call this downside "masking". (Elsewhere, like in the "Pairwise Testing in Real World" paper, "masking" means something more specific: when "one invalid input prevents another invalid input from being tested" (emphasis mine). I hope it's okay if I ignore that for now.)

The "dummy value technique" (as compared to the "~" operator technique), has no advantage in terms of masking. That is: both techniques solve the masking problem. Here's where I get confused. Why does the section on the "dummy value technique" repeatedly claim that one of it's benefits is that it solves the masking problem? I would understand if it said that the "dummy value technique" is another way of solving the masking problem - i.e. it's an alternative to the "~" operator technique. But it doesn't say that.

There's much I could be missing here. I hope someone can shed light on it.

I'll be glad to submit a PR for the documentation. (I'm free to do so because unlike #96 I'm working on my own time now, not my employer's time)

Love the tool. I'm giving a talk on PICT and combinatorial testing in general at a conference a few weeks from now.

@jaccz
Copy link
Member

jaccz commented Apr 20, 2023 via email

@dan-tripp
Copy link
Contributor Author

You're helping, no question! I will read this a few more times and respond here again.

@dan-tripp
Copy link
Contributor Author

It seems that the dummy value technique has two benefits:

Benefit 1: "don’t set them [i.e. the valid params] to any values I provided in the model"
Benefit 2: "don’t “use up” my good values for a case where software doesn’t care about their setting"

Here's where I don't see it your way yet: it seems to me that negative testing does not have benefit 1 and does have benefit 2. So (it seems to me) that the dummy value technique is related to negative testing.

I hope I'm correct in saying that negative testing has benefit 2. I say that because this model:

P1: -1, 0, 1
P2:  A, B, C
P3:  X, Y, Z

... produces this output:

P1  P2  P3
0   A   Y
0   B   Z
0   C   X
1   A   X
1   A   Z
1   B   Y
1   C   Y
-1  A   Y
-1  B   X
-1  C   Z

... and in that output, the combinations "B X" and "C Z" are "used up".

This model:

P1: ~-1, 0, 1
P2:  A, B, C
P3:  X, Y, Z

... produces this output:

P1   P2  P3
~-1  A   Y
~-1  B   X
~-1  C   Z
0    A   Y
0    B   Z
0    C   X
0    C   Z
1    A   X
1    A   Z
1    B   X
1    B   Y
1    C   Y

... and no combinations are "used up" in that output.

If I'm right so far: it seems to me that these two techniques are closely related. And the techniques can be closely related, even though the kinds of users and models that motivate using one technique over the other are quite different.

I would even go so far as to say that the 'dummy value technique' can be seen as an extension of 'negative testing'. That is: negative testing will get you half-way there, in terms of doing what you want to do with that "NA" model. It will give you benefit 2 (but not benefit 1), and then when you're going through your test cases you just have to ignore P2 and P3. You can treat them like "don't care" values (to borrow a term from ACTS).

What do you think?

@jaccz
Copy link
Member

jaccz commented Apr 24, 2023 via email

@jaccz
Copy link
Member

jaccz commented Apr 24, 2023 via email

@dan-tripp
Copy link
Contributor Author

(Sorry, deleted my comment. Here it is again:)

I find this example (with parameter names like MobileOS, Browser, and so on) to be less artificial than the current example in the PICT docs (which has the parameter names P1, P2, P3). So maybe I could distill this MobileOS example into a PR for the PICT docs, to replace the "P1, P2, P3" example.

I'll try to do that - unless, of course, you think it's not worth doing. I defer to your expertise.

@dan-tripp
Copy link
Contributor Author

Excellent. Thank you for your time on this. Not sure when, but I'll try to deliver something of value on this.

@dan-tripp
Copy link
Contributor Author

I made a PR. I had a hard time understanding the "3rdPartyRenderingEngine" part of your model, so I borrowed a model from Introduction to Combinatorial Testing by Kuhn et. al (page 48) with "DotNetVersion". Let me know what you think.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants