TestComplete 4 Sneak Peek - Log and Project File Formats Part 3
Test and Monitor | Posted November 29, 2005

In part 3 of this blog I am discussing the Project file structure (.mds).


As mentioned in part 2, the Log files are not the only files that have the "open" XML formatting. All of the project files also have this format. So without further delay, lets get started:


Project File Structure (.mds)


The file structure includes the following fields that are stored in the root section:

  • the signature field contains the identifier of the files type.
  • the version field contains the version of the files data format.

    For example:


    The following list of sections store information:


  • The config section contains the configuration data of the project.
  • The language field contains the key of the project script language for the whole project.

    For example the config section would look like:


    The identifiers of languages supported by TestComplete are stored in the tcConst.pas file. Identifiers of supported scripting languages (used by the Syntax subsystem) are as follows:

  • langID_VBScript: TGUID = '{897793E3-73F3-4895-A956-3D41D3A24A45}'; // VBScript
  • langID_JScript: TGUID = '{E42909F2-4390-4F5D-94B8-FABF59BABFCE}'; // JScript
  • langID_DelphiScript: TGUID = '{9E432E59-33EF-4EAA-95C6-63FC35AF69EE}'; // DelphiScript
  • langID_CPPScript: TGUID = '{16EA48F7-F0F6-48A6-B1FA-743F420D4630}'; // C++Script
  • langID_CSScript: TGUID = '{90813F19-086D-4670-83BC-DB51386DC224}'; // C#Script


    The child list section contains information about child elements. Information about each child element is in a separate subsection. The subsection name is in the item%d format. Subsections contain the following data:


  • the item data subsection contains PersistentInfo, which is saved directly by a child element.
  • the type field contains the type of the child element.
  • the typename field contains a string representation of the type of the child element.
  • the key field contains the key of the child element.
  • the index field contains the ordinal number of the child element.

    Here is an example of the child list section that contains two child elements (Script and Events):


    The test data section of a project file contains data of the Test Items type. The key field in this section contains a unique data identifier. The child list section contains a list of subsections for each element of a given data type. The subsection name is in the item%d format. Subsections contain the following data:


  • the key field contains the element key.
  • the index field contains the ordinal number of the element.
  • the name field contains the Name value.
  • the description field contains the Description value.
  • the enabled field contains the Enabled value.
  • the timeout field contains the Timeout value.
  • the stoponerror field contains the Stop on error value.
  • the count field contains the Count value.
  • the test moniker field contains the moniker of the test to be run.
  • the child list subsection contains information about child elements.

    Here is an example of the test data section, which contains two elements (one of these elements is a child of the other):


    Below is a list that shows the correspondence between fields of the "test data" section of the msd file and columns of the "Test Items" panel of project editors.
  • "Enabled" column - "enabled" field Boolean type (-1 : True / 0 : False)
  • "Stop on error" column - "stoponerror" field Boolean type (-1 : True / 0 : False)
  • "Name" column - "name" field WideString type
  • "Count" column - "count" field Integer type >0
  • "Timeout" column - "timeout" field Integer type >=0
  • "Description" column - "description" field WideString type
  • "Element to be run" column - "test moniker" field WideString type (a text identifier used to search for a real object)

    To restore the sequence of tree elements in a given editor, the following fields are used:
  • "index" field Integer type >=0 - specifies the sequence of records at a given level.

    The "child list" section contains information about child records.


    The variables section contains data of the Variables type:


  • the key field contains a unique data identifier.
  • Other data is formed by the Variables subsystem.

    Here is an example of the variables section, which does not contain elements:


    The analysis section contains data of the Analysis type (the Project needs it to become a container for child Analysis elements):


  • the key field contains a unique data identifier.

    Here is an example of the analysis section:


    The scc section contains data of the SCC category:


  • The data is formed by the Source Code Control subsystem.

    Here is an example of an empty scc section:


    The settings section contains data of the Properties type:


  • the key field contains a unique data identifier.
  • Other data (vast amounts of data) are formed by the project node settings manager.


    The issue tracking section contains data of the Issue-Tracking Templates type:


  • the key field contains a unique data identifier.
  • Other data are formed by the Issue-Tracking subsystem.

    Here is an example of the issue tracking section that does not contain elements:


    Stay tuned for more information on TestComplete 4.

  • Close

    By submitting this form, you agree to our
    Terms of Use and Privacy Policy

    Thanks for Subscribing

    Keep an eye on your inbox for more great content.

    Continue Reading

    Add a little SmartBear to your life

    Stay on top of your Software game with the latest developer tips, best practices and news, delivered straight to your inbox