Skip to content

Commit 444a23e

Browse files
refine: trim Testimize EP to BVA + security invalids only
Disabled allowValidEquivalenceClasses (AI picks better context-aware values from the docs). Kept allowInvalidEquivalenceClasses but trimmed to security/injection patterns and type-confusion invalids that the AI might not consistently include: XSS, SQLi, SSTI, format-mismatch, overflow strings, invalid dates (Feb 29 non-leap), protocol abuse. Removed all generic valid EP classes ("user@example.com", "Hello World", 42, etc.) — these add noise to the prompt without improving test quality over what the AI generates with domain context. Testimize now contributes: precise BVA boundaries (math, not AI guess) + security-focused invalid patterns + multi-field pairwise combinations. The AI handles valid EP and normal invalid EP from documentation context.
1 parent d0ebd08 commit 444a23e

File tree

1 file changed

+68
-106
lines changed

1 file changed

+68
-106
lines changed
Lines changed: 68 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
{
1+
{
22
"testimizeSettings": {
3-
"seed": 12345, // used for random data generation
4-
"locale": "en", // open TestValueGenerationSettings.cs to see all supported localizations like "en", "fr", "de", "bg", "pl"
3+
"seed": 12345,
4+
"locale": "en",
55
"includeBoundaryValues": true,
6-
"allowValidEquivalenceClasses": true,
6+
"allowValidEquivalenceClasses": false,
77
"allowInvalidEquivalenceClasses": true,
88
"abcGenerationSettings": {
99
"totalPopulationGenerations": 20,
@@ -22,10 +22,7 @@
2222
"inputTypeSettings": {
2323
"Email": {
2424
"PrecisionStep": "1",
25-
"ValidEquivalenceClasses": [ "user@example.com", "contact@domain.net" ],
2625
"InvalidEquivalenceClasses": [
27-
"invalid-email",
28-
"plainaddress",
2926
"@missingusername.com",
3027
"missingdomain@",
3128
"user@.com",
@@ -34,179 +31,144 @@
3431
},
3532
"Phone": {
3633
"PrecisionStep": "1",
37-
"ValidEquivalenceClasses": [ "+11234567890", "+442071838750" ],
3834
"InvalidEquivalenceClasses": [
39-
"12345",
40-
"0000000000",
41-
"abcdefg",
4235
"+123",
43-
"+359 888",
44-
"+359888BADNUM",
45-
"(123) 456-7890-ext"
36+
"abcdefg",
37+
"+359888BADNUM"
4638
]
4739
},
4840
"Text": {
4941
"PrecisionStep": "1",
50-
"ValidEquivalenceClasses": [ "Hello World", "Sample Input" ],
5142
"InvalidEquivalenceClasses": [
52-
"",
53-
" ",
54-
"\n",
55-
"\t",
56-
"!@#$%^&*()",
57-
"超长文本超长文本超长文本",
5843
"<script>alert('XSS')</script>",
59-
"' OR 1=1 --"
44+
"' OR 1=1 --",
45+
"${7*7}",
46+
"{{constructor.constructor('return this')()}}"
6047
]
6148
},
6249
"Password": {
6350
"PrecisionStep": "1",
64-
"ValidEquivalenceClasses": [ "StrongP@ssw0rd1", "Another1#Valid" ],
65-
"InvalidEquivalenceClasses": [ "12345", "password", "abc", " " ]
51+
"InvalidEquivalenceClasses": [
52+
"password",
53+
"12345678",
54+
" "
55+
]
6656
},
6757
"Boolean": {
6858
"PrecisionStep": "1",
69-
"ValidEquivalenceClasses": [ "true", "false" ],
7059
"InvalidEquivalenceClasses": [
71-
//"yes",
72-
//"no",
73-
//"1",
74-
//"0",
75-
//"",
76-
//"maybe"
60+
"yes",
61+
"1",
62+
"",
63+
"maybe"
7764
]
7865
},
7966
"Integer": {
8067
"PrecisionStep": "1",
81-
"ValidEquivalenceClasses": [ 0, 42, -100, 100000 ],
82-
"InvalidEquivalenceClasses": [ "abc", "", "999999999999999999999", "-999999999999999999999" ]
68+
"InvalidEquivalenceClasses": [
69+
"abc",
70+
"",
71+
"12.5",
72+
"999999999999999999999",
73+
"1e10"
74+
]
8375
},
8476
"Decimal": {
8577
"PrecisionStep": "0.01",
86-
"ValidEquivalenceClasses": [ 10.5, -100.75, 0.00, 9999.99 ],
87-
"InvalidEquivalenceClasses": [ "NaN", "infinity", "text", "", null ]
78+
"InvalidEquivalenceClasses": [
79+
"NaN",
80+
"infinity",
81+
"text",
82+
"",
83+
"--5.0"
84+
]
8885
},
8986
"Percentage": {
9087
"PrecisionStep": "0.01",
91-
"ValidEquivalenceClasses": [ 0.0, 50.5, 99.99, 100.0 ],
92-
"InvalidEquivalenceClasses": [ -1, 101, "text", "" ]
88+
"InvalidEquivalenceClasses": [ -1, -0.01, 100.01, 101 ]
9389
},
9490
"Currency": {
9591
"PrecisionStep": "0.01",
96-
"FormatString": "C2", // .NET currency format, e.g., "$123.45"
97-
"ValidEquivalenceClasses": [ 0.0, 19.99, 100.00, 99999.99 ],
98-
"InvalidEquivalenceClasses": [ -5, "free", "text", "" ]
92+
"FormatString": "C2",
93+
"InvalidEquivalenceClasses": [ -5, -0.01, "free", "" ]
9994
},
10095
"Date": {
10196
"PrecisionStep": "1",
102-
"PrecisionStepUnit": "Days", // Supported units: "Days", "Months", "Years"
103-
"FormatString": "yyyy-MM-dd", // ISO format
104-
"ValidEquivalenceClasses": [ "2024-01-01", "1990-12-31", "2025-03-26" ],
105-
"InvalidEquivalenceClasses": [ "not-a-date", "13/32/2020", "" ]
97+
"PrecisionStepUnit": "Days",
98+
"FormatString": "yyyy-MM-dd",
99+
"InvalidEquivalenceClasses": [
100+
"not-a-date",
101+
"13/32/2020",
102+
"2023-02-29",
103+
"0000-00-00"
104+
]
106105
},
107106
"Time": {
108107
"PrecisionStep": "15",
109-
"PrecisionStepUnit": "Minutes", // Supported units: "Seconds", "Minutes", "Hours"
110-
"FormatString": "hh\\:mm", // .NET TimeSpan format
111-
"ValidEquivalenceClasses": [ "00:00", "12:30", "23:59" ],
112-
"InvalidEquivalenceClasses": [ "24:00", "99:99", "noon", "" ]
108+
"PrecisionStepUnit": "Minutes",
109+
"FormatString": "hh\\:mm",
110+
"InvalidEquivalenceClasses": [ "24:00", "99:99", "noon", "-01:00" ]
113111
},
114112
"DateTime": {
115113
"PrecisionStep": "1",
116-
"PrecisionStepUnit": "Minutes", // Supported units: "Seconds", "Minutes", "Hours", "Days", "Milliseconds"
117-
"FormatString": "yyyy-MM-ddTHH:mm:ss", // ISO 8601
118-
"ValidEquivalenceClasses": [ "2024-10-01T10:30:00", "1999-12-31T23:59:59", "2025-03-26T00:00:00" ],
119-
"InvalidEquivalenceClasses": [ "tomorrow", "32/01/2022 25:00", "not-a-datetime", "", null ]
114+
"PrecisionStepUnit": "Minutes",
115+
"FormatString": "yyyy-MM-ddTHH:mm:ss",
116+
"InvalidEquivalenceClasses": [
117+
"tomorrow",
118+
"32/01/2022 25:00",
119+
"2023-02-29T12:00:00"
120+
]
120121
},
121122
"Week": {
122123
"PrecisionStep": "1",
123-
"FormatString": "yyyy-'W'ww", // ISO week number
124-
"ValidEquivalenceClasses": [ "2025-W01", "2024-W52", "2023-W12" ],
125-
"InvalidEquivalenceClasses": [ "2025-W60", "2024-W00", "not-a-week", "" ]
124+
"FormatString": "yyyy-'W'ww",
125+
"InvalidEquivalenceClasses": [ "2025-W60", "2024-W00", "not-a-week" ]
126126
},
127127
"Month": {
128128
"PrecisionStep": "1",
129-
"FormatString": "yyyy-MM", // HTML5 <input type="month">
130-
"ValidEquivalenceClasses": [ "2025-01", "2024-12", "1999-07" ],
131-
"InvalidEquivalenceClasses": [ "2025-13", "1999-00", "March 2025", "" ]
129+
"FormatString": "yyyy-MM",
130+
"InvalidEquivalenceClasses": [ "2025-13", "2025-00", "March 2025" ]
132131
},
133132
"Address": {
134-
"PrecisionStep": "1", // number of characters added/removed during boundary offset
135-
"ValidEquivalenceClasses": [
136-
"123 Main St, Springfield, IL 62704",
137-
"456 Elm St, Apt 5B, New York, NY 10001"
138-
],
139-
"InvalidEquivalenceClasses": [
140-
"",
141-
"No Address",
142-
"ZZZ"
143-
]
133+
"PrecisionStep": "1",
134+
"InvalidEquivalenceClasses": [ "", "ZZZ" ]
144135
},
145136
"GeoCoordinate": {
146137
"PrecisionStep": "0.01",
147-
"FormatString": "F6", // Decimal with 6 digits after the dot
148-
"ValidEquivalenceClasses": [
149-
"42.6975,23.3242",
150-
"48.8566,2.3522",
151-
"-33.8688,151.2093"
152-
],
138+
"FormatString": "F6",
153139
"InvalidEquivalenceClasses": [
154140
"NaN,NaN",
155-
"999,999",
156-
"text",
157-
"42.6975",
158-
"42.6975,",
159-
""
141+
"91.0000,0.0000",
142+
"0.0000,181.0000",
143+
"text"
160144
]
161145
},
162146
"Username": {
163147
"PrecisionStep": "1",
164-
"ValidEquivalenceClasses": [
165-
"john_doe",
166-
"user123",
167-
"qa_tester",
168-
"dev_user1"
169-
],
170148
"InvalidEquivalenceClasses": [
171149
"admin!",
172-
"user name",
173150
"root$",
174-
""
151+
"<script>",
152+
"a"
175153
]
176154
},
177155
"URL": {
178156
"PrecisionStep": "5",
179-
"ValidEquivalenceClasses": [
180-
"https://www.google.com",
181-
"http://example.org",
182-
"https://sub.domain.co.uk"
183-
],
184157
"InvalidEquivalenceClasses": [
185158
"www.google.com",
186-
"http:/invalid.com",
187159
"ftp://wrong.protocol",
188160
"://missing.scheme.com",
189-
""
161+
"javascript:alert(1)"
190162
]
191163
},
192164
"Color": {
193-
"ValidEquivalenceClasses": [
194-
"#FF0000",
195-
"#00FF00",
196-
"#0000FF",
197-
"#123ABC",
198-
"#000000",
199-
"#FFFFFF"
200-
],
201165
"InvalidEquivalenceClasses": [
202166
"FF0000",
203167
"#GGGGGG",
204168
"#12345",
205-
"#1234567",
206-
"red",
207-
""
169+
"red"
208170
]
209171
}
210172
}
211173
}
212-
}
174+
}

0 commit comments

Comments
 (0)