XML Formats (GUITAR 2.0)
[ GUI Structure (.GUI) ]
[ Event Flow Graph (.EFG) ]
[ Label Map (.MAP) ]
[ Test Case (.TST) ]
Note: + means it repeats 1 or more times;
* means it repeats 0 or more times;
GUI Structure (.GUI)
<BeginDump>
+<GUI>
<Menu>
<Title/>
+<Component>
<Item/>
<Invokeslist>
*<Item/>
</Invokelist>
</Component>
</Menu>
<Title/>
<Class/>
<Enabled/>
<Visible/>
<Modal/>
<Rootwindow/>
<Width/>
<Height/>
<X/>
<Y/>
+<Component>
<Title/>
<Class/>
<Enabled/>
<Visible/>
<Terminal/>
<Width/>
<Height/>
<Activeevent/>
<X/>
<Y/>
<Dimx/>
<Dimy/>
<Valuelist/>
<Invokeslist>
*<Item/>
</Invokeslist>
</Component>
</GUI>
</BeginDump>
The GUI structure has many GUI windows. For each GUI window, we put
information inside a <GUI></GUI> tag. It has 3 parts:
menu information (inside <Menu></Menu>), window
information (from <Title/> to <Y/>), and component
information (inside <Component></Component>).
Menu Info:
<Title> is the name of the menu;
<Component> is the components contained in the menu, either another menu or menu item;
if it is menu item, inside <Component>, <Item> shows the name of the menu item, <Invokeslist>
lists whether the menu item will invoke another window, give the window name as <Item>,
otherwise, nothing inside <Invokeslist>;
if it is another menu, inside <Component>, it recursively uses <Menu> format;
Window Info:
<Title> - Name of the window;
<Class> - Class of the window;
<Enabled> - true/false, whether the window is enabled or not;
<Visible> - true/false, whether the window is visible or not;
<Modal> - true/false, whether the window is modal or modeless;
<Rootwindow> - true/false, whether the window is root window or not;
<Width> - width of the window;
<Height> - height of the window;
<X> - X coordinate of the window;
<Y> - Y coordinate of the window.
Component Info:
<Title> - Name of the component;
<Class> - class of the component;
<Enabled> - true/false, whether the component is enabled or not;
<Visible> - true/false, whether the component is visible of not;
<Terminal> - true/false, whether the component is the terminal (closes the window) or not;
<Width> - width of the component;
<Height> - height of the component;
<Activeevent> - true/false, whether the component is active (operatable) or not;
<X> - X coordinate of the component;
<Y> - Y coordinate of the component;
<Dimx> - rows of textfield;
<Dimy> - cols of textfield;
<Valuelist> -
<Invokeslist> - uses <Item> to record the window name the component invokes;
Event Flow Graph (.EFG)
<EFG>
+<GUIEFG>
<Guilist>
+<Guiid/>
</Guilist>
+<Row>
<Guiid/>
<Compid/>
<Type/>
<Name/>
<Terminal/>
<Depth/>
<Eventtype/>
<Invokeslist>
*<Item/>
</Invokeslist>
+<Entry/>
</Row>
</GUIEFG>
</EFG>
An EFG contains one or more <GUIEFG>.
In each <GUIEFG>,
<Guilist> - uses <Guiid> to record what GUI IDs are included in the GUIEFG
<Row> - each row records a component info in the GUIEFG
<Guiid> - the GUI ID the component belongs to;
<Compid> - the component id is in the GUI;
<Type> - the type for the component: 1 - component; 0 - menu;
<Name> - the name of the component;
<Terminal> - TRUE/FALSE, whether the component represents a terminal event (closing the window) or not;
<Depth> - -1 if the type is 1; if type is 0 (menu), represents the depth of the menu;
<Eventtype> - 0 - left click; 2 - set text;
<Invokeslist> - uses <Item> to record the window name the component invokes;
<Entry> - total |components in the GUIEFG| of entries, with value 0/1; 0 - component not linked; 1 - component linked;
Label Map (.MAP)
<Labelmap>
+<Label>
<Name/>
+<Map>
<Valid/>
|-<Guiid/>
+|-<Compid/>
|_<Type/>
</Map>
</Label>
</Labelmap>
A Label map contains one or more <Label>.
In each <Label>,
<Name> - name of the component;
<Map> - represents a component (may have the same name, but with some indexes added)
<Valid> - always TRUE;
<Guiid> - the GUI ID the component belongs to; ---|
<Compid> - the component ID in the GUI; ---| <Guiid>, <Compid> and <Type> are repeated if the component needs menu openning or window openning event to reach;
<Type> - type of the component, 1 - component, 0 - menu;--|
Test Case (.TST)
<Testsuite>
<Mode/>
<Testcase>
+<Menu> | +<Component>
<Window/> | <Window/>
<Nonterminal/> or <Terminal/> |or <Nonterminal/> or <Terminal/>
</Menu> | <Eventtype/>
| <EventValue/>
| </Component>
+<Miscellaneousinfo>
<Time/>
<Memory/>
</Miscellaneousinfo>
</Testcase>
</Testsuite>
A <Testsuite> contains one test case. it uses <Mode>
to record the test case generation method (MANUAL, RANDOM, STRUCTURAL,
SE, or SES). The <Testcase> is a sequence of events. An event
is represented either by <Menu> or <Component>
depending on the type of the current component.
For <Menu>,
<Window> - the name of of the window where the event performs on;
<Nonterminal>/<Terminal> - the name of the event, depends on whether the event is a nonterminal/terminal event;
For <Component>,
<Window> - the name of of the window where the event performs on;
<Nonterminal>/<Terminal> - the name of the event, depends on whether the event is a nonterminal/terminal event;
<Eventtype> - the event type, LEFTCLICK/SETTEXT;
<Eventvalue> - UNKNOWN if event type is LEFTCLICK, the value to be set into text filed if type is SETTEXT.
If the <Mode> is MANUAL, <Miscellaneousinfo> will be attached to each event.
For <Miscellaneousinfo>,
<Time> - time when the event performed;
<Memory> - free memory when the event performed.