Again, I am remiss in my postings...too many irons in the fire these days. Two weeks ago, I posted a challenge to decompose a set of character data (The ANSI Latin 1 Character Set) into valid and invalid equivalence class subsets in order to test the base filename parameter of a filename passed to COMDLG32.DLL on the Windows Xp platform from the user interface using the File Save As... dialog of Notepad.
As illustrated below the filename on a Windows platform is composed of two separate parameters. Although the file name parameter of the Save As... dialog will accept a base filename, a base filename with an extension, or a path with a filename with or without an extension, the purpose of the challenge was to decompose the limited set of characters into equivalence class subsets for the base filename component only (the part outlined with green). (Of course, complete testing will include testing with and without extensions, but let's first focus on building a foundation of tests to adequately evaluate the base filename parameter first, then we can expand our tests from there to include extensions.)
As suggested in the earlier post, in order to adequately decompose this set of data within the defined, real world context (and not in alternate philosophical alternate universes) a professional tester would need to understand programming concepts, file naming conventions on a Windows platform, Windows Xp file system, basic default character encoding on the Windows Xp operating system (Unicode), some historical knowledge of the FAT file system, and even a bit of knowledge of the PC/AT architecture. The following is a table illustrating how I would decompose the data set into equivalence class subsets.
V1 – escape sequence literal strings (STX, SOT, ETX, EOT, ENQ, ACK, BEL, BS, HT, LF, VT, FF, CR, SO, SI, DLE, DC1, DC2, DC3, DC4, NAK, SYN, ETB, CAN, EM, SUB, ESC, FS, GS, RS, US, DEL)
V2 – space character (0x20) (but not as only, first, or last character in the base file name)
V3 – period character (0x2E) (but not as only character in the base file name)
V4 – ASCII characters punctuation (0x21, 0x23 – 0x29, 0x2B – 0x2D, 0x3B, 0x3D, 0x40, 0x5B, 0x5D, - 0x60, 0x7B, 0x7D, 0x7E) numbers (0x30 – 0x39)
alpha (0x41 – 0x5A, 0x61 – 0x7A)
V5 – Ox80 through 0xFF
V6 – 0x81, 0x8D, 0x8F, 0x90, 0x9D
V7 – Component length between 1 – 251 characters (assuming a default 3- letter extension and a maximum path length of 260 characters)
V8 – Literal string CLOCK$ (NT 4.0 code base)
V9 – a valid string with a reserved character 0x22 as the first and last character in the string
I1 – control codes (Ctrl + @, Ctrl + B, Ctrl + C, Ctrl + ], Ctrl + N, etc.)
I2 – escape sequence literal string NUL
I3 – Tab character
I4 – reserved words (LPT1 – LPT4, COM1 – COM4, CON, PRN, AUX, etc.)
I5 – reserved words (LPT5 – LPT9, COM5 – COM9)
I6 – reserved characters (/ : < > | ) (0x2F, 0x3A, 0x3C, 0x3E, 0x7C) by themselves or as part of a string of characters
I7 – reserved character 0x22 as the only character or > 2 characters in the string
I8 – a string composed of > 1 reserved character 0x5C
I9 – a string containing only 2 reserved characters 0x22
I10 – period character (0x2E) as only character in a string
I11 – two period characters (0x2E) as only characters in a string
I12 – > 2 period characters (0x2E) as only characters in a string
I13 – reserved character 0x5C as the only character in the string
I14 – space character (0x20) as only character in a string
I15 – space character (0x20) as first character in a string
I16 – space character (0x20) as last character in a string
I17 – reserved characters (* ?) (0x2A, 0x3F)
I18 – a string of valid characters that contains at least one reserved characters (* ?) (0x2A, 0x3F)
I19 – a string of valid characters that contains at least one reserved character 0x5C but not in the first position
I20 – string > 251 characters
I21 – character case sensitivity
I22 – empty
Discussion of valid equivalence class subsets
Of course, this is a partial list of the complete data set since the filename on a Windows Xp operating system can be any valid Unicode value of which there are several thousand character code points, including surrogate pair characters.
The first and by far the most complex step in the application of the functional technique of equivalence class partitioning is data decomposition. This requires an incredible amount of knowledge about the system. Data decomposition is an exercise in modeling data. The less one understands the data set, or the system under test the greater the probability of missing something. Next week we will analyze the equivalence class subsets to define are baseline set of tests to evaluate the base filename component.