<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.meego.com/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.meego.com/index.php?title=Special:Contributions/Slahtinen&amp;feed=atom&amp;limit=50&amp;target=Slahtinen&amp;year=&amp;month=</id>
		<title>MeeGo wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.meego.com/index.php?title=Special:Contributions/Slahtinen&amp;feed=atom&amp;limit=50&amp;target=Slahtinen&amp;year=&amp;month="/>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Special:Contributions/Slahtinen"/>
		<updated>2013-05-20T04:58:20Z</updated>
		<subtitle>From MeeGo wiki</subtitle>
		<generator>MediaWiki 1.16.2</generator>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/Test_plan</id>
		<title>Quality/QA-tools/Test plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/Test_plan"/>
				<updated>2011-06-15T06:09:40Z</updated>
		
		<summary type="html">&lt;p&gt;Slahtinen: /* Measurement data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Test plan overview ==&lt;br /&gt;
&lt;br /&gt;
The basic principle of test plan XML and tool support is that you can use 'any' executable for testing. &lt;br /&gt;
Test results are checked from exit codes (automated testing) or prompt (manual testing). Executed test plan XMLs produce XML results - wrapping variety of test methods in consistent format required by test automation and data processing.&lt;br /&gt;
&lt;br /&gt;
The test plan information stored in Test Definition XML files consists of:&lt;br /&gt;
&lt;br /&gt;
  1. suite, set, case: Hierarchical structure of the tests.&lt;br /&gt;
  2. feature, subfeature, requirement: Information about why the tested software has been implemented in the first place (which is why it’s being tested as well). &lt;br /&gt;
  3. type: Information about the viewpoint of the tests (which quality aspect of the software they are testing, see DevelopmentTestArea in Agile Testing Wiki).&lt;br /&gt;
  4. level: Information about which test level the tests belong - for test level.&lt;br /&gt;
  5. domain: Information about which architectural domains the tests are focused on.&lt;br /&gt;
  6. description: descriptions of the tests (what each test is, and what it is supposed to do).&lt;br /&gt;
  7. step: Execution instructions (for automated tests), which determine the actual commands to execute to run each test.&lt;br /&gt;
&lt;br /&gt;
''Note:'' that all of the above are not mandatory. Mandatory fields for executing tests are defined with test plan XML validation schema.&lt;br /&gt;
&lt;br /&gt;
== Creating Test plan ==&lt;br /&gt;
&lt;br /&gt;
There are certain mandatory things you’ll need to provide in a test definition XML.&lt;br /&gt;
&lt;br /&gt;
The structure of the XML and the possible attributes/values are defined in the [[Quality/QA-tools/Test-definition|Test Definition XML schema]]. It’s important to validate your XML against the up-to-date schema.&lt;br /&gt;
&lt;br /&gt;
Test plans can be created either by using [[Quality/QA-tools/Testplanner|Testplanner]] tool or manually.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
&lt;br /&gt;
The main thing in test plan are the test cases, which define what to execute (test steps), what to expect from the execution (expected results) and also some additional information for reporting purposes. An example test case could be:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;case name=&amp;quot;my-first-case&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Creating my very first test case&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;step&amp;gt;ls&amp;lt;/step&amp;gt;&lt;br /&gt;
    &amp;lt;step&amp;gt;uname -r&amp;lt;/step&amp;gt;&lt;br /&gt;
 &amp;lt;/case&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What did we just do? We created a simple test case [[#About_name_attribute|named]] &amp;lt;code&amp;gt;my-first-test-case&amp;lt;/code&amp;gt;, which executes two steps and expects that they return the common “success return value” 0. Want to check for some other return value? Use &amp;lt;code&amp;gt;expected_result&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;step expected_result=&amp;quot;-1&amp;quot;&amp;gt;ls&amp;lt;/step&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case you feel that some test cases are insignificant, i.e. that they shouldn’t be taken into consideration when choosing whether the test run is passed or failed, you can use insignificant-attribute (defaults to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, i.e. every case is considered to be significant):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;case name=&amp;quot;not-so-important-test&amp;quot; insignificant=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition to test execution, the “story” of the test case should also be told, and for telling this story, we have fields for test type (what quality characteristics are tested) and test level (what level of system is being exercised. The possible values for both of these are listed in the appendices. Let’s add level and type to our test case:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;case name=&amp;quot;my-first-case&amp;quot; level=&amp;quot;Product&amp;quot; type=&amp;quot;Functional&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Creating my very first test case&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;step expected_result=&amp;quot;-1&amp;quot;&amp;gt;ls&amp;lt;/step&amp;gt;&lt;br /&gt;
    &amp;lt;step&amp;gt;uname -r&amp;lt;/step&amp;gt;&lt;br /&gt;
 &amp;lt;/case&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And that’s our first test case! Not that difficult...&lt;br /&gt;
&lt;br /&gt;
=== Grouping Cases - Sets and Suites ===&lt;br /&gt;
&lt;br /&gt;
Grouping cases to sets and suites makes your life easier and more organized. A good idea is to group test cases that test the same features into same sets, and sets that test the same architectural domain under same suites. E.g.:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;suite name=&amp;quot;my-multimedia-tests&amp;quot; domain=&amp;quot;Multimedia&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;set name=&amp;quot;video-playback-tests&amp;quot; feature=&amp;quot;Video Playback&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;description&amp;gt;Video&amp;lt;/description&amp;gt;&lt;br /&gt;
        &amp;lt;case ...&lt;br /&gt;
        &amp;lt;case ...&lt;br /&gt;
    &amp;lt;/set&amp;gt;&lt;br /&gt;
 &amp;lt;/suite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, sets contain test cases, and may also contain description (the same way as the cases do). More about sets in Test Definition Execution part&lt;br /&gt;
&lt;br /&gt;
 '''Note:''' There are several attributes that need to be defined on the test case, test set, or test suite level in the test definition XML.&amp;lt;br /&amp;gt; You can find more information about these attributes in the Appendices section of this page.&lt;br /&gt;
&lt;br /&gt;
=== Time outs ===&lt;br /&gt;
Test steps will time out by default after 90 seconds. You can change the default time out by adding timeout attribute to your test case. for example&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;case name=&amp;quot;my-test-case&amp;quot; timeout=&amp;quot;120&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this the timeout is for single test step not for the whole case.&lt;br /&gt;
&lt;br /&gt;
For [pre|post]-steps the the default timeout is 180 seconds, it can also be changed:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre_steps timeout=&amp;quot;600&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Putting It All Together ===&lt;br /&gt;
&lt;br /&gt;
Now that you have some knowledge on grouping and test cases in general, it is time to put it all together. Before showing an example, it is important to note that all the mentioned case attributes (e.g. level, type) are inheritable. So, if you have e.g. a set which contains only certain type of cases, you can define the type at the set-level, instead of writing it separately into each case.&lt;br /&gt;
&lt;br /&gt;
Now, the example. Let’s first add the mandatory tags, which each test definition should have:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;testdefinition version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/testdefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That’s the mandatory part; we defined that we have a XML-document, and that this particular one is test definition version 1.0. Let’s add more beef to the bones by adding one suite with couple of sets:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;testdefinition version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;suite name=&amp;quot;my-multimedia-tests&amp;quot; domain=&amp;quot;Multimedia&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;description&amp;gt;Testing AF stuff&amp;lt;/description&amp;gt;&lt;br /&gt;
        &amp;lt;set name=&amp;quot;video-playback-tests&amp;quot; feature=&amp;quot;Video Playback&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;description&amp;gt;Video playback tests&amp;lt;/description&amp;gt;&lt;br /&gt;
        &amp;lt;/set&amp;gt;&lt;br /&gt;
        &amp;lt;set name=&amp;quot;video-recording-tests&amp;quot; feature=&amp;quot;Video Recording&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;description&amp;gt;Video recording tests&amp;lt;/description&amp;gt;&lt;br /&gt;
        &amp;lt;/set&amp;gt;&lt;br /&gt;
    &amp;lt;/suite&amp;gt;&lt;br /&gt;
 &amp;lt;/testdefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Okay, we have one suite named &amp;lt;code&amp;gt;my-multimedia-tests with two sets&amp;lt;/code&amp;gt;, testing video playback and recording features. Cases are still missing:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;testdefinition version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;suite name=&amp;quot;my-multimedia-tests&amp;quot; domain=&amp;quot;Multimedia&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;description&amp;gt;Video playback tests&amp;lt;/description&amp;gt;&lt;br /&gt;
        &amp;lt;set name=&amp;quot;video-playback-tests&amp;quot; feature=&amp;quot;Video Playback&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;description&amp;gt;Video playback tests&amp;lt;/description&amp;gt;&lt;br /&gt;
            &amp;lt;case name=&amp;quot;playback1&amp;quot; type=&amp;quot;Functional&amp;quot; level=&amp;quot;Component&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;step&amp;gt;execute_playback_test&amp;lt;/step&amp;gt;&lt;br /&gt;
            &amp;lt;/case&amp;gt;&lt;br /&gt;
        &amp;lt;/set&amp;gt;&lt;br /&gt;
        &amp;lt;set name=&amp;quot;video-recording-tests&amp;quot; feature=&amp;quot;Video Recording&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;description&amp;gt;Video playback tests&amp;lt;/description&amp;gt;&lt;br /&gt;
            &amp;lt;case ...&lt;br /&gt;
        &amp;lt;/set&amp;gt;&lt;br /&gt;
    &amp;lt;/suite&amp;gt;&lt;br /&gt;
 &amp;lt;/testdefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And that’s the basic story. Next chapters cover more details about the definition, but you should now have the general understanding of the subject!&lt;br /&gt;
&lt;br /&gt;
== Controlling Environment for Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Setup and Teardown ===&lt;br /&gt;
&lt;br /&gt;
In case you want to do some setup and cleaning before and after the cases are executed, sets may have pre- and post-steps in them:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;set ...&amp;gt;&lt;br /&gt;
    &amp;lt;pre_steps&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;do_some_setup&amp;lt;/step&amp;gt;&lt;br /&gt;
    &amp;lt;/pre_steps&amp;gt;&lt;br /&gt;
    &amp;lt;case ...&lt;br /&gt;
    &amp;lt;post_steps&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;clean_up&amp;lt;/step&amp;gt;&lt;br /&gt;
    &amp;lt;/post_steps&amp;gt;&lt;br /&gt;
 &amp;lt;/set&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ensure that pre-step is executed properly before starting the real testing, you can use expected result also in those:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre_steps&amp;gt;&lt;br /&gt;
    &amp;lt;step expected_result=&amp;quot;1&amp;quot;&amp;gt;do_some_setup_that_may_fail&amp;lt;/step&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
:'''Warning''' When using expected result in this context, the process return value will be waited for, thus you cannot use this with daemon or background processes since they basically never return and cause execution to jam. Another thing to note is that the steps are executed in separate shells, so it is not possible to e.g. set environment variables or change directories in pre-steps as those will be lost.&lt;br /&gt;
&lt;br /&gt;
=== Filtering Based on Hardware Identifier ===&lt;br /&gt;
&lt;br /&gt;
If different tests sets for different hardware are required then hwiddetect feature can be utilised. User can define a command used to get a hardware identifier within hwiddetect tag. The hardware identifier returned by the command is matched with optional hwid attribute of a test set. If not equal, test cases in the set are skipped and are not written to the result file. A test set will never be skipped if hwid attribute has not been defined for it. You can also define multiple hwid values separated by comma for a set.&lt;br /&gt;
&lt;br /&gt;
Command defined by hwiddetect can be a shell command or a separate executable. The executable should be included in the test package. Testrunner-lite removes extra whitespace and linefeeds from the the output of the hwiddetect command so that test developer does not need to care about it.&lt;br /&gt;
&lt;br /&gt;
Example usage of hwiddetect:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;testdefinition version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;hwiddetect&amp;gt;/usr/bin/getmyhwid&amp;lt;/hwiddetect&amp;gt;&lt;br /&gt;
   &amp;lt;suite name=&amp;quot;suite1&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;set name=&amp;quot;test_feature_X_on_hw_bar&amp;quot; hwid=&amp;quot;bar&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;case name=&amp;quot;test_X_1&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;step&amp;gt;echo &amp;quot;hwid is bar&amp;quot;&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;/case&amp;gt;&lt;br /&gt;
     &amp;lt;/set&amp;gt;&lt;br /&gt;
     &amp;lt;set name=&amp;quot;test_feature_X_on_hw_foo&amp;quot; hwid=&amp;quot;foo&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;case name=&amp;quot;test_X_1&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;step&amp;gt;echo &amp;quot;hwid is foo&amp;quot;&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;/case&amp;gt;&lt;br /&gt;
     &amp;lt;/set&amp;gt;&lt;br /&gt;
     &amp;lt;set name=&amp;quot;test_feature_X_on_hw_foo_or_bar&amp;quot; hwid=&amp;quot;foo,bar&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;case name=&amp;quot;test_X_1&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;step&amp;gt;echo &amp;quot;hwid is foo or bar&amp;quot;&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;/case&amp;gt;&lt;br /&gt;
     &amp;lt;/set&amp;gt;&lt;br /&gt;
   &amp;lt;/suite&amp;gt;&lt;br /&gt;
 &amp;lt;/testdefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fetching Additional Files ===&lt;br /&gt;
&lt;br /&gt;
In addition to normal result file, you can also fetch what ever files you need with get-tag:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;set ...&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;get&amp;gt;&lt;br /&gt;
        &amp;lt;file&amp;gt;/tmp/myadditionalresult.1&amp;lt;/file&amp;gt;&lt;br /&gt;
        &amp;lt;file delete_after=&amp;quot;true&amp;quot;&amp;gt;/tmp/myadditionalresult.2&amp;lt;/file&amp;gt;&lt;br /&gt;
    &amp;lt;/get&amp;gt;&lt;br /&gt;
 &amp;lt;/set&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above my ''additionalresult.2'' file is deleted after fetching it (think of command ''mv'').&lt;br /&gt;
&lt;br /&gt;
=== Measurement data ===&lt;br /&gt;
&lt;br /&gt;
In case file is tagged as measurement data as in the below example, the data will be evaluated and transferred to results. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;case ...&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;get&amp;gt;&lt;br /&gt;
        &amp;lt;file measurement=&amp;quot;true&amp;quot;&amp;gt;/path/to/measurement/measurement.txt&amp;lt;/file&amp;gt;&lt;br /&gt;
    &amp;lt;/get&amp;gt;&lt;br /&gt;
 &amp;lt;/case&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The measurement data has the following CSV format:&lt;br /&gt;
 name;value;unit;&lt;br /&gt;
 name;value;unit;target;failure;&lt;br /&gt;
 name;value;unit;target;failure;&lt;br /&gt;
&lt;br /&gt;
Where ''name'' and ''unit'' are strings; ''value'' ''target'' and ''failure'' floating point numbers.&lt;br /&gt;
Example:&lt;br /&gt;
 bt.upload;1.4123432;MB/s;&lt;br /&gt;
 cpu.load;23.41;%;5;90;&lt;br /&gt;
 mem.load;80.16;%;80;99;&lt;br /&gt;
&lt;br /&gt;
If ''target'' and ''failure'' are specified the measurement can affect (fail) test case result. When ''target'' is greater than ''failure'', the ''value'' should be smaller than ''failure'' and vise versa.&lt;br /&gt;
&lt;br /&gt;
When measurements consists of a series of data, series attribute can be used in file element:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;file measurement=&amp;quot;true&amp;quot; series=&amp;quot;true&amp;quot;&amp;gt;/path/to/measurement/series.txt&amp;lt;/file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Measurement series CSV file format is different from the one consisting of single measurement values (optional parts are enclosed by brackets):&lt;br /&gt;
&lt;br /&gt;
 name;unit[;target;failure]&lt;br /&gt;
 [yyyy-mm-ddThh:mm:ss[.ssssss];]value&lt;br /&gt;
 [yyyy-mm-ddThh:mm:ss[.ssssss];]value&lt;br /&gt;
 [yyyy-mm-ddThh:mm:ss[.ssssss];]value&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
The first line specifies series name and unit. In addition, target and failure limits can be specified. Next lines list all measurement values with optional timestamp (conforming to [http://en.wikipedia.org/wiki/ISO_8601 ISO 8601]). A CSV file can contain only a single measurement series.&lt;br /&gt;
&lt;br /&gt;
== Manual, Automatic and Semi-automatic Test Cases ==&lt;br /&gt;
&lt;br /&gt;
If not specified by the &amp;quot;manual&amp;quot; attribute all cases are automatic. The value for the attribute is inherited from higher entity (set-&amp;gt;case-&amp;gt;step). By semi-automatic test case we mean a manual case that has some automatic parts; the idea being that only those steps that have to be manual, are. Note that this does not work the other way around, we cannot have automatic test case with manual steps (would be semantically weird thus our tools do not support it).&lt;br /&gt;
&lt;br /&gt;
The example below tries to clarify the above. The &amp;quot;example_set&amp;quot; shows a manual, automatic and semi-automatic case. The example works with testrunner-lite/testrunner-ui, give it a try: [[File:example_definition.xml]]. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;!--Created with testplanner version 0.1.3 --&amp;gt;&lt;br /&gt;
 &amp;lt;testdefinition version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;suite name=&amp;quot;example_suite&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;set name=&amp;quot;example_set&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Example test set with manual, automatic and semi-automatic case.&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;case manual=&amp;quot;true&amp;quot; name=&amp;quot;manual_case&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Manual test case with three steps inside one step tag.&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;step&amp;gt;Step 1: execute command ttt on shell.&lt;br /&gt;
             Step 2: write something into edit box.&lt;br /&gt;
             Step 3: press ok button.&lt;br /&gt;
             Expected: Text should be updated into label.&lt;br /&gt;
       &amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;/case&amp;gt;&lt;br /&gt;
     &amp;lt;case timeout=&amp;quot;96&amp;quot; name=&amp;quot;automatic_case&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Automatic test case that executes some shell commands.&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;step&amp;gt;ls /tmp&amp;lt;/step&amp;gt;&lt;br /&gt;
       &amp;lt;step expected_result=&amp;quot;2&amp;quot;&amp;gt;ls /nosuchfile&amp;lt;/step&amp;gt;&lt;br /&gt;
       &amp;lt;step&amp;gt;pwd&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;/case&amp;gt;&lt;br /&gt;
     &amp;lt;case manual=&amp;quot;true&amp;quot; name=&amp;quot;semi_automatic_case&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;A case with two automatic and two manual steps.&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;step manual=&amp;quot;false&amp;quot;&amp;gt;xcalc &amp;amp;amp;amp;&amp;lt;/step&amp;gt;&lt;br /&gt;
       &amp;lt;step&amp;gt;Step: Type in 2 + 2 =. Expected: 4 is displayed &amp;lt;/step&amp;gt;&lt;br /&gt;
       &amp;lt;step&amp;gt;Press x² button. Expected: 16 is displayed.&amp;lt;/step&amp;gt;&lt;br /&gt;
       &amp;lt;step manual=&amp;quot;false&amp;quot;&amp;gt;killall xcalc&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;/case&amp;gt;&lt;br /&gt;
   &amp;lt;/set&amp;gt;&lt;br /&gt;
  &amp;lt;/suite&amp;gt;&lt;br /&gt;
 &amp;lt;/testdefinition&amp;gt;&lt;br /&gt;
(A real test developer / tester might come up with nicer examples, any input welcome).&lt;br /&gt;
&lt;br /&gt;
== Test Plan Execution ==&lt;br /&gt;
&lt;br /&gt;
Test plans are run with test execution tools such as [[Quality/QA-tools/Testrunner|Testrunner]] and [[Quality/QA-tools/Testrunner-lite|testrunner-lite]], which read the plan and produce a result XML file.&lt;br /&gt;
&lt;br /&gt;
== About name attribute ==&lt;br /&gt;
&lt;br /&gt;
Note that the name attribute is of type [http://www.ietf.org/rfc/rfc2396.txt anyURI]. Do not use the following characters in suite,set or case names.&lt;br /&gt;
*'''''; / ? :  @ &amp;amp;  = +  $ ,'''''  (reserved)&lt;br /&gt;
or&lt;br /&gt;
* '''''{  }  |  \  ^ [  ]  `''''' (unwise)&lt;br /&gt;
&lt;br /&gt;
Also the use of '''''&amp;lt;space&amp;gt;''''' is not recommended, since some validators accept if for anyURI, some don't. Use '''''_''''' or '''''-''''' instead.&lt;/div&gt;</summary>
		<author><name>Slahtinen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/Test_plan</id>
		<title>Quality/QA-tools/Test plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/Test_plan"/>
				<updated>2011-06-14T11:40:48Z</updated>
		
		<summary type="html">&lt;p&gt;Slahtinen: /* Measurement data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Test plan overview ==&lt;br /&gt;
&lt;br /&gt;
The basic principle of test plan XML and tool support is that you can use 'any' executable for testing. &lt;br /&gt;
Test results are checked from exit codes (automated testing) or prompt (manual testing). Executed test plan XMLs produce XML results - wrapping variety of test methods in consistent format required by test automation and data processing.&lt;br /&gt;
&lt;br /&gt;
The test plan information stored in Test Definition XML files consists of:&lt;br /&gt;
&lt;br /&gt;
  1. suite, set, case: Hierarchical structure of the tests.&lt;br /&gt;
  2. feature, subfeature, requirement: Information about why the tested software has been implemented in the first place (which is why it’s being tested as well). &lt;br /&gt;
  3. type: Information about the viewpoint of the tests (which quality aspect of the software they are testing, see DevelopmentTestArea in Agile Testing Wiki).&lt;br /&gt;
  4. level: Information about which test level the tests belong - for test level.&lt;br /&gt;
  5. domain: Information about which architectural domains the tests are focused on.&lt;br /&gt;
  6. description: descriptions of the tests (what each test is, and what it is supposed to do).&lt;br /&gt;
  7. step: Execution instructions (for automated tests), which determine the actual commands to execute to run each test.&lt;br /&gt;
&lt;br /&gt;
''Note:'' that all of the above are not mandatory. Mandatory fields for executing tests are defined with test plan XML validation schema.&lt;br /&gt;
&lt;br /&gt;
== Creating Test plan ==&lt;br /&gt;
&lt;br /&gt;
There are certain mandatory things you’ll need to provide in a test definition XML.&lt;br /&gt;
&lt;br /&gt;
The structure of the XML and the possible attributes/values are defined in the [[Quality/QA-tools/Test-definition|Test Definition XML schema]]. It’s important to validate your XML against the up-to-date schema.&lt;br /&gt;
&lt;br /&gt;
Test plans can be created either by using [[Quality/QA-tools/Testplanner|Testplanner]] tool or manually.&lt;br /&gt;
&lt;br /&gt;
=== Test Cases ===&lt;br /&gt;
&lt;br /&gt;
The main thing in test plan are the test cases, which define what to execute (test steps), what to expect from the execution (expected results) and also some additional information for reporting purposes. An example test case could be:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;case name=&amp;quot;my-first-case&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Creating my very first test case&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;step&amp;gt;ls&amp;lt;/step&amp;gt;&lt;br /&gt;
    &amp;lt;step&amp;gt;uname -r&amp;lt;/step&amp;gt;&lt;br /&gt;
 &amp;lt;/case&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What did we just do? We created a simple test case [[#About_name_attribute|named]] &amp;lt;code&amp;gt;my-first-test-case&amp;lt;/code&amp;gt;, which executes two steps and expects that they return the common “success return value” 0. Want to check for some other return value? Use &amp;lt;code&amp;gt;expected_result&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;step expected_result=&amp;quot;-1&amp;quot;&amp;gt;ls&amp;lt;/step&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case you feel that some test cases are insignificant, i.e. that they shouldn’t be taken into consideration when choosing whether the test run is passed or failed, you can use insignificant-attribute (defaults to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, i.e. every case is considered to be significant):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;case name=&amp;quot;not-so-important-test&amp;quot; insignificant=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition to test execution, the “story” of the test case should also be told, and for telling this story, we have fields for test type (what quality characteristics are tested) and test level (what level of system is being exercised. The possible values for both of these are listed in the appendices. Let’s add level and type to our test case:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;case name=&amp;quot;my-first-case&amp;quot; level=&amp;quot;Product&amp;quot; type=&amp;quot;Functional&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;description&amp;gt;Creating my very first test case&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;step expected_result=&amp;quot;-1&amp;quot;&amp;gt;ls&amp;lt;/step&amp;gt;&lt;br /&gt;
    &amp;lt;step&amp;gt;uname -r&amp;lt;/step&amp;gt;&lt;br /&gt;
 &amp;lt;/case&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And that’s our first test case! Not that difficult...&lt;br /&gt;
&lt;br /&gt;
=== Grouping Cases - Sets and Suites ===&lt;br /&gt;
&lt;br /&gt;
Grouping cases to sets and suites makes your life easier and more organized. A good idea is to group test cases that test the same features into same sets, and sets that test the same architectural domain under same suites. E.g.:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;suite name=&amp;quot;my-multimedia-tests&amp;quot; domain=&amp;quot;Multimedia&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;set name=&amp;quot;video-playback-tests&amp;quot; feature=&amp;quot;Video Playback&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;description&amp;gt;Video&amp;lt;/description&amp;gt;&lt;br /&gt;
        &amp;lt;case ...&lt;br /&gt;
        &amp;lt;case ...&lt;br /&gt;
    &amp;lt;/set&amp;gt;&lt;br /&gt;
 &amp;lt;/suite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, sets contain test cases, and may also contain description (the same way as the cases do). More about sets in Test Definition Execution part&lt;br /&gt;
&lt;br /&gt;
 '''Note:''' There are several attributes that need to be defined on the test case, test set, or test suite level in the test definition XML.&amp;lt;br /&amp;gt; You can find more information about these attributes in the Appendices section of this page.&lt;br /&gt;
&lt;br /&gt;
=== Time outs ===&lt;br /&gt;
Test steps will time out by default after 90 seconds. You can change the default time out by adding timeout attribute to your test case. for example&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;case name=&amp;quot;my-test-case&amp;quot; timeout=&amp;quot;120&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this the timeout is for single test step not for the whole case.&lt;br /&gt;
&lt;br /&gt;
For [pre|post]-steps the the default timeout is 180 seconds, it can also be changed:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre_steps timeout=&amp;quot;600&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Putting It All Together ===&lt;br /&gt;
&lt;br /&gt;
Now that you have some knowledge on grouping and test cases in general, it is time to put it all together. Before showing an example, it is important to note that all the mentioned case attributes (e.g. level, type) are inheritable. So, if you have e.g. a set which contains only certain type of cases, you can define the type at the set-level, instead of writing it separately into each case.&lt;br /&gt;
&lt;br /&gt;
Now, the example. Let’s first add the mandatory tags, which each test definition should have:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;testdefinition version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;/testdefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That’s the mandatory part; we defined that we have a XML-document, and that this particular one is test definition version 1.0. Let’s add more beef to the bones by adding one suite with couple of sets:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;testdefinition version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;suite name=&amp;quot;my-multimedia-tests&amp;quot; domain=&amp;quot;Multimedia&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;description&amp;gt;Testing AF stuff&amp;lt;/description&amp;gt;&lt;br /&gt;
        &amp;lt;set name=&amp;quot;video-playback-tests&amp;quot; feature=&amp;quot;Video Playback&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;description&amp;gt;Video playback tests&amp;lt;/description&amp;gt;&lt;br /&gt;
        &amp;lt;/set&amp;gt;&lt;br /&gt;
        &amp;lt;set name=&amp;quot;video-recording-tests&amp;quot; feature=&amp;quot;Video Recording&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;description&amp;gt;Video recording tests&amp;lt;/description&amp;gt;&lt;br /&gt;
        &amp;lt;/set&amp;gt;&lt;br /&gt;
    &amp;lt;/suite&amp;gt;&lt;br /&gt;
 &amp;lt;/testdefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Okay, we have one suite named &amp;lt;code&amp;gt;my-multimedia-tests with two sets&amp;lt;/code&amp;gt;, testing video playback and recording features. Cases are still missing:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;testdefinition version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;suite name=&amp;quot;my-multimedia-tests&amp;quot; domain=&amp;quot;Multimedia&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;description&amp;gt;Video playback tests&amp;lt;/description&amp;gt;&lt;br /&gt;
        &amp;lt;set name=&amp;quot;video-playback-tests&amp;quot; feature=&amp;quot;Video Playback&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;description&amp;gt;Video playback tests&amp;lt;/description&amp;gt;&lt;br /&gt;
            &amp;lt;case name=&amp;quot;playback1&amp;quot; type=&amp;quot;Functional&amp;quot; level=&amp;quot;Component&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;step&amp;gt;execute_playback_test&amp;lt;/step&amp;gt;&lt;br /&gt;
            &amp;lt;/case&amp;gt;&lt;br /&gt;
        &amp;lt;/set&amp;gt;&lt;br /&gt;
        &amp;lt;set name=&amp;quot;video-recording-tests&amp;quot; feature=&amp;quot;Video Recording&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;description&amp;gt;Video playback tests&amp;lt;/description&amp;gt;&lt;br /&gt;
            &amp;lt;case ...&lt;br /&gt;
        &amp;lt;/set&amp;gt;&lt;br /&gt;
    &amp;lt;/suite&amp;gt;&lt;br /&gt;
 &amp;lt;/testdefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And that’s the basic story. Next chapters cover more details about the definition, but you should now have the general understanding of the subject!&lt;br /&gt;
&lt;br /&gt;
== Controlling Environment for Execution ==&lt;br /&gt;
&lt;br /&gt;
=== Setup and Teardown ===&lt;br /&gt;
&lt;br /&gt;
In case you want to do some setup and cleaning before and after the cases are executed, sets may have pre- and post-steps in them:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;set ...&amp;gt;&lt;br /&gt;
    &amp;lt;pre_steps&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;do_some_setup&amp;lt;/step&amp;gt;&lt;br /&gt;
    &amp;lt;/pre_steps&amp;gt;&lt;br /&gt;
    &amp;lt;case ...&lt;br /&gt;
    &amp;lt;post_steps&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;clean_up&amp;lt;/step&amp;gt;&lt;br /&gt;
    &amp;lt;/post_steps&amp;gt;&lt;br /&gt;
 &amp;lt;/set&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ensure that pre-step is executed properly before starting the real testing, you can use expected result also in those:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pre_steps&amp;gt;&lt;br /&gt;
    &amp;lt;step expected_result=&amp;quot;1&amp;quot;&amp;gt;do_some_setup_that_may_fail&amp;lt;/step&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
:'''Warning''' When using expected result in this context, the process return value will be waited for, thus you cannot use this with daemon or background processes since they basically never return and cause execution to jam. Another thing to note is that the steps are executed in separate shells, so it is not possible to e.g. set environment variables or change directories in pre-steps as those will be lost.&lt;br /&gt;
&lt;br /&gt;
=== Filtering Based on Hardware Identifier ===&lt;br /&gt;
&lt;br /&gt;
If different tests sets for different hardware are required then hwiddetect feature can be utilised. User can define a command used to get a hardware identifier within hwiddetect tag. The hardware identifier returned by the command is matched with optional hwid attribute of a test set. If not equal, test cases in the set are skipped and are not written to the result file. A test set will never be skipped if hwid attribute has not been defined for it. You can also define multiple hwid values separated by comma for a set.&lt;br /&gt;
&lt;br /&gt;
Command defined by hwiddetect can be a shell command or a separate executable. The executable should be included in the test package. Testrunner-lite removes extra whitespace and linefeeds from the the output of the hwiddetect command so that test developer does not need to care about it.&lt;br /&gt;
&lt;br /&gt;
Example usage of hwiddetect:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;testdefinition version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;hwiddetect&amp;gt;/usr/bin/getmyhwid&amp;lt;/hwiddetect&amp;gt;&lt;br /&gt;
   &amp;lt;suite name=&amp;quot;suite1&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;set name=&amp;quot;test_feature_X_on_hw_bar&amp;quot; hwid=&amp;quot;bar&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;case name=&amp;quot;test_X_1&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;step&amp;gt;echo &amp;quot;hwid is bar&amp;quot;&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;/case&amp;gt;&lt;br /&gt;
     &amp;lt;/set&amp;gt;&lt;br /&gt;
     &amp;lt;set name=&amp;quot;test_feature_X_on_hw_foo&amp;quot; hwid=&amp;quot;foo&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;case name=&amp;quot;test_X_1&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;step&amp;gt;echo &amp;quot;hwid is foo&amp;quot;&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;/case&amp;gt;&lt;br /&gt;
     &amp;lt;/set&amp;gt;&lt;br /&gt;
     &amp;lt;set name=&amp;quot;test_feature_X_on_hw_foo_or_bar&amp;quot; hwid=&amp;quot;foo,bar&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;case name=&amp;quot;test_X_1&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;step&amp;gt;echo &amp;quot;hwid is foo or bar&amp;quot;&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;/case&amp;gt;&lt;br /&gt;
     &amp;lt;/set&amp;gt;&lt;br /&gt;
   &amp;lt;/suite&amp;gt;&lt;br /&gt;
 &amp;lt;/testdefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fetching Additional Files ===&lt;br /&gt;
&lt;br /&gt;
In addition to normal result file, you can also fetch what ever files you need with get-tag:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;set ...&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;get&amp;gt;&lt;br /&gt;
        &amp;lt;file&amp;gt;/tmp/myadditionalresult.1&amp;lt;/file&amp;gt;&lt;br /&gt;
        &amp;lt;file delete_after=&amp;quot;true&amp;quot;&amp;gt;/tmp/myadditionalresult.2&amp;lt;/file&amp;gt;&lt;br /&gt;
    &amp;lt;/get&amp;gt;&lt;br /&gt;
 &amp;lt;/set&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above my ''additionalresult.2'' file is deleted after fetching it (think of command ''mv'').&lt;br /&gt;
&lt;br /&gt;
=== Measurement data ===&lt;br /&gt;
&lt;br /&gt;
In case file is tagged as measurement data as in the below example, the data will be evaluated and transferred to results. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;case ...&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;get&amp;gt;&lt;br /&gt;
        &amp;lt;file measurement=&amp;quot;true&amp;quot;&amp;gt;/path/to/measurement/measurement.txt&amp;lt;/file&amp;gt;&lt;br /&gt;
    &amp;lt;/get&amp;gt;&lt;br /&gt;
 &amp;lt;/case&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The measurement data has the following CSV format:&lt;br /&gt;
 name;value;unit;&lt;br /&gt;
 name;value;unit;target;failure;&lt;br /&gt;
 name;value;unit;target;failure;&lt;br /&gt;
&lt;br /&gt;
Where ''name'' and ''unit'' are strings; ''value'' ''target'' and ''failure'' floating point numbers.&lt;br /&gt;
Example:&lt;br /&gt;
 bt.upload;1.4123432;MB/s;&lt;br /&gt;
 cpu.load;23.41;%;5;90;&lt;br /&gt;
 mem.load;80.16;%;80;99;&lt;br /&gt;
&lt;br /&gt;
If ''target'' and ''failure'' are specified the measurement can affect (fail) test case result. When ''target'' is greater than ''failure'', the ''value'' should be smaller than ''failure'' and vise versa.&lt;br /&gt;
&lt;br /&gt;
When measurements consists of a series of data, series attribute can be used in file element:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;file measurement=&amp;quot;true&amp;quot; series=&amp;quot;true&amp;quot;&amp;gt;/path/to/measurement/measurement.txt&amp;lt;/file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Measurement series CSV file format is different from the one consisting of single measurement values:&lt;br /&gt;
&lt;br /&gt;
 name;unit[;target;failure]&lt;br /&gt;
 [yyyy-mm-ddThh:mm:ss[.ssssss];]value&lt;br /&gt;
 [yyyy-mm-ddThh:mm:ss[.ssssss];]value&lt;br /&gt;
 [yyyy-mm-ddThh:mm:ss[.ssssss];]value&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
The first line specifies series name and unit. In addition, target and failure limits can be specified. Next lines lists measurement values with optional timestamps (conforming to [http://en.wikipedia.org/wiki/ISO_8601 ISO 8601]).&lt;br /&gt;
&lt;br /&gt;
== Manual, Automatic and Semi-automatic Test Cases ==&lt;br /&gt;
&lt;br /&gt;
If not specified by the &amp;quot;manual&amp;quot; attribute all cases are automatic. The value for the attribute is inherited from higher entity (set-&amp;gt;case-&amp;gt;step). By semi-automatic test case we mean a manual case that has some automatic parts; the idea being that only those steps that have to be manual, are. Note that this does not work the other way around, we cannot have automatic test case with manual steps (would be semantically weird thus our tools do not support it).&lt;br /&gt;
&lt;br /&gt;
The example below tries to clarify the above. The &amp;quot;example_set&amp;quot; shows a manual, automatic and semi-automatic case. The example works with testrunner-lite/testrunner-ui, give it a try: [[File:example_definition.xml]]. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;!--Created with testplanner version 0.1.3 --&amp;gt;&lt;br /&gt;
 &amp;lt;testdefinition version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;suite name=&amp;quot;example_suite&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;set name=&amp;quot;example_set&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Example test set with manual, automatic and semi-automatic case.&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;case manual=&amp;quot;true&amp;quot; name=&amp;quot;manual_case&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Manual test case with three steps inside one step tag.&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;step&amp;gt;Step 1: execute command ttt on shell.&lt;br /&gt;
             Step 2: write something into edit box.&lt;br /&gt;
             Step 3: press ok button.&lt;br /&gt;
             Expected: Text should be updated into label.&lt;br /&gt;
       &amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;/case&amp;gt;&lt;br /&gt;
     &amp;lt;case timeout=&amp;quot;96&amp;quot; name=&amp;quot;automatic_case&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Automatic test case that executes some shell commands.&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;step&amp;gt;ls /tmp&amp;lt;/step&amp;gt;&lt;br /&gt;
       &amp;lt;step expected_result=&amp;quot;2&amp;quot;&amp;gt;ls /nosuchfile&amp;lt;/step&amp;gt;&lt;br /&gt;
       &amp;lt;step&amp;gt;pwd&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;/case&amp;gt;&lt;br /&gt;
     &amp;lt;case manual=&amp;quot;true&amp;quot; name=&amp;quot;semi_automatic_case&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;A case with two automatic and two manual steps.&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;step manual=&amp;quot;false&amp;quot;&amp;gt;xcalc &amp;amp;amp;amp;&amp;lt;/step&amp;gt;&lt;br /&gt;
       &amp;lt;step&amp;gt;Step: Type in 2 + 2 =. Expected: 4 is displayed &amp;lt;/step&amp;gt;&lt;br /&gt;
       &amp;lt;step&amp;gt;Press x² button. Expected: 16 is displayed.&amp;lt;/step&amp;gt;&lt;br /&gt;
       &amp;lt;step manual=&amp;quot;false&amp;quot;&amp;gt;killall xcalc&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;/case&amp;gt;&lt;br /&gt;
   &amp;lt;/set&amp;gt;&lt;br /&gt;
  &amp;lt;/suite&amp;gt;&lt;br /&gt;
 &amp;lt;/testdefinition&amp;gt;&lt;br /&gt;
(A real test developer / tester might come up with nicer examples, any input welcome).&lt;br /&gt;
&lt;br /&gt;
== Test Plan Execution ==&lt;br /&gt;
&lt;br /&gt;
Test plans are run with test execution tools such as [[Quality/QA-tools/Testrunner|Testrunner]] and [[Quality/QA-tools/Testrunner-lite|testrunner-lite]], which read the plan and produce a result XML file.&lt;br /&gt;
&lt;br /&gt;
== About name attribute ==&lt;br /&gt;
&lt;br /&gt;
Note that the name attribute is of type [http://www.ietf.org/rfc/rfc2396.txt anyURI]. Do not use the following characters in suite,set or case names.&lt;br /&gt;
*'''''; / ? :  @ &amp;amp;  = +  $ ,'''''  (reserved)&lt;br /&gt;
or&lt;br /&gt;
* '''''{  }  |  \  ^ [  ]  `''''' (unwise)&lt;br /&gt;
&lt;br /&gt;
Also the use of '''''&amp;lt;space&amp;gt;''''' is not recommended, since some validators accept if for anyURI, some don't. Use '''''_''''' or '''''-''''' instead.&lt;/div&gt;</summary>
		<author><name>Slahtinen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools</id>
		<title>Quality/QA-tools</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools"/>
				<updated>2011-01-28T13:09:35Z</updated>
		
		<summary type="html">&lt;p&gt;Slahtinen: Test environment validation and equipment control in roadmap&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Quality Assurance (QA) Tools =&lt;br /&gt;
&lt;br /&gt;
Quality Assurance tools are developed to ensure MeeGo SW quality. QA tools team develops and maintains tools for Quality Assurance.&lt;br /&gt;
&lt;br /&gt;
 Open source tools  – available for all, available for development and contributions. Make people accountable for quality.&lt;br /&gt;
&lt;br /&gt;
Anyone is welcome to contribute and non-member contributions will be treated with same process and review as member contributions. We follow [http://meego.com/about/contribution-guidelines MeeGo contribution guidelines]. In addition, you may take personal clone from our [http://meego.gitorious.org/meego-quality-assurance/ git repositories] and create merge request. Tool maintainers in our projects will review your contributions and decide on merge.&lt;br /&gt;
&lt;br /&gt;
'''Targets:'''&lt;br /&gt;
&lt;br /&gt;
* Improve MeeGo test reporting tools - target from MeeGo Quality Assurance&lt;br /&gt;
* Improve MeeGo test automation (execution and software installation) - target from MeeGo release engineering&lt;br /&gt;
&lt;br /&gt;
&amp;quot;As Core OS release release manager I want to verify trunk:testing packages frequently so that I know the quality of nightly/weekly releases.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Tools and Maintainers ==&lt;br /&gt;
&lt;br /&gt;
Tool maintainers are selected based on developer experience with particular tool/package or seniority. Tool maintainers have been agreed [[Quality/QA-tools/Meetings|in the QA-tools meeting]] Tuesday September 7th 2010. Changes, if needed, are discussed also there.&lt;br /&gt;
&lt;br /&gt;
In practice only tool maintainers will have commit and review right to particular repository - later several people may have rights to repository based on merit (as proposed by tool maintainer). Others must follow [http://meego.com/about/contribution-guidelines MeeGo contribution guidelines] to submit patches or personal clone + merge request approach. &lt;br /&gt;
 &lt;br /&gt;
The maintainer of the tree shall update the changelog.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|'''Tool (link to wiki page)''' ||'''Gitorious'''||'''Maintainer''' ||'''Substitute'''&lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/QA-tools/Test-definition|test-definition]]||[http://meego.gitorious.org/meego-quality-assurance/test-definition Gitorious] || Sampo Saaristo || Timo Härkönen&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Testrunner-lite|testrunner-lite]] ||[http://meego.gitorious.org/meego-quality-assurance/testrunner-lite Gitorious] || Sampo Saaristo || Kyösti Ranto&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Testrunner|Testrunner]] || [http://meego.gitorious.org/meego-quality-assurance/testrunner Gitorious] || Kyösti Ranto || Timo Härkönen &lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/QA-tools/Testplanner|Testplanner]] ||[http://meego.gitorious.org/meego-quality-assurance/testplanner Gitorious] ||  Kyösti Ranto || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Eat|eat - enables automated testing]] ||[http://meego.gitorious.org/meego-quality-assurance/enables-automated-testing Gitorious] ||  Timo Härkönen || Timo Mäkimattila&lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/QA-tools/OTS|ots - open testing system]] ||[http://meego.gitorious.org/meego-quality-assurance/ots Gitorious] ||  Teemu Vainio || Tom Galvin&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Autotest-guide#Automatic_image_installations|MeeGo Automated installer]] ||[http://gitorious.org/qa-tools/meego-ai Gitorious] ||  Timo Härkönen || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/TestSuite/MCTS|MeeGo Core Test Suite]] || [http://meego.gitorious.org/meego-quality-assurance/mcts/ Gitorious] ||Matti Salmi || Jeff Zheng&lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/Netbook Test Suite and Utilities|MeeGo Netbook Test Suite]] || [http://gitorious.org/qa-tools/mnts/ Gitorious] ||Jeff Zheng || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/qtuitest-mbt-adapter|Model-Based Testing adapter for qtuitest]]  || [http://gitorious.org/qa-tools/qtuitest-mbt-adapter Gitorious] || Riku Halonen || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Min|MIN test framework]] || [http://meego.gitorious.org/meego-quality-assurance/min Gitorious] ||  Sampo Saaristo || Timo Mäkimattila&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/TDriver|Testability Driver]] || [http://gitorious.org/TDriver Gitorious] ||  Petri Kiiskinen || Tatu Lahtela&lt;br /&gt;
|-&lt;br /&gt;
| Rich Core dumper || [http://meego.gitorious.org/meego-quality-assurance/rich-core Gitorious] || Carol Rus || Raimo Gratseff&lt;br /&gt;
|-&lt;br /&gt;
| Crash Reporter || [http://meego.gitorious.org/meego-quality-assurance/crash-reporter Gitorious] || Carol Rus || Raimo Gratseff&lt;br /&gt;
|-&lt;br /&gt;
| Crash Reporter settings || [http://meego.gitorious.org/meego-quality-assurance/crash-reporter-settings-public Gitorious] || Carol Rus || Raimo Gratseff&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/hat-control|Hardware Accessory for Testing (HAT)]] || [http://meego.gitorious.org/meego-quality-assurance/hat-control Gitorious] || Marko Junttila || Riku Halonen&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/QAReports|QA Reports]] || [http://meego.gitorious.org/meego-quality-assurance/qa-reports Gitorious] || Sami Hangaslammi || Jarno Keskikangas&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Scripts_and_utils|Scripts and utils]] || [http://meego.gitorious.com/meego-quality-assurance/scripts-and-utils Gitorious] || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/TestSuite/handset-test-suite/handset-ux-test_Releases | handset_ux_tests]] || [http://meego.gitorious.com/meego-quality-assurance/handset-ux-tests Gitorious] || JessicaJi || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/MeeGo_Fast_Feedback_Testing|MeeGo Fast Feedback Testing (MeeGo-FFT)]] || [http://meego.gitorious.org/meego-quality-assurance/meego-testing-hudson-plugin Gitorious] || Alexey Kuznetsov || Timo Härkönen&lt;br /&gt;
|-&lt;br /&gt;
| Service OS based Flasher || [http://meego.gitorious.org/meego-quality-assurance/meego-ai-serviceos Gitorious] || Jing Wang || N/A&lt;br /&gt;
|-&lt;br /&gt;
| Qpid C wrapper library - libcqpid || [http://meego.gitorious.org/meego-quality-assurance/libcqpid Gitorious] || Sami Lahtinen || N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You can install Testrunner, testrunner-lite, Testplanner, OTS, Meego-ai and eat from Tools:Testing repository. The instructions for setting up the repositories can be found [[Quality/QA-tools/How_to_set_up_repositories|here]].&lt;br /&gt;
&lt;br /&gt;
See the rest of our team members and our collaboration spaces [[Quality/QA-tools#Team_Members_and_Collaboration_Spaces|below]]. If you are interested in the user experience work regarding these tools, you can find more information [[Quality/QA-tools/User experience|here]].&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The figure below tries to summarize the relations and tasks of the tools when used in test automation context.&lt;br /&gt;
&lt;br /&gt;
[[File:testautomationtools.png]]&lt;br /&gt;
&lt;br /&gt;
xfig file:[[File:qatools.fig]]&lt;br /&gt;
&lt;br /&gt;
== Release Practices ==&lt;br /&gt;
&lt;br /&gt;
Here is the workflow for QA tools release practices.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|'''Role'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| Developer || Anyone who wants to participate in qa-tools development &lt;br /&gt;
|-&lt;br /&gt;
| VCS Maintainer || Component owner who has commit rights in version control system (VCS)&lt;br /&gt;
|-&lt;br /&gt;
| Package Maintainer || Integrator whose responsibility is the OBS packaging&lt;br /&gt;
|-&lt;br /&gt;
| Release Management || Third party who is responsible of trunk:testing releases(?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:Release.png]]&lt;br /&gt;
&lt;br /&gt;
Kivio file: [[File:Release.flw]]&lt;br /&gt;
&lt;br /&gt;
# Developer creates merge request(s) in gitorious.&lt;br /&gt;
# VCS Maintainer tests and accepts merge requests.&lt;br /&gt;
# VCS Maintainer checks/updates change logs.&lt;br /&gt;
# VCS Maintainer tags a version.&lt;br /&gt;
# VCS maintainer sends email to [http://lists.meego.com/pipermail/meego-qa/ meego-qa mailing list] based on the following template&lt;br /&gt;
Topic: Integration request: package-name version&lt;br /&gt;
 PACKAGE: package-name&lt;br /&gt;
 TAG: tag name&lt;br /&gt;
 URL: link to sources&lt;br /&gt;
 CHANGES: short description of changes containing bugs.meego.com bug numbers of fixed bugs&lt;br /&gt;
# Package maintainer updates the OBS package.&lt;br /&gt;
# Package maintainer tests the OBS package.&lt;br /&gt;
# If the package belongs to tools:testing and passes testing, Package Maintainer may accept it. If the package belongs to trunk:testing, Package Maintainer creates a promotional request to Release Management. (If the package belongs to both repositories, we let the Release Management set bugs fixed by the package to RELEASED state).&lt;br /&gt;
# Host side tools are updated to tools:testing after verifying functionality&lt;br /&gt;
# Package maintainer replies to meego-qa list about the actions done with the updated package. e.g. 'Updated in devel:quality and sent promotion request to testing'&lt;br /&gt;
# Release Management accepts the package. Or not. (Follow meego-packaging and meego-commits.)&lt;br /&gt;
&lt;br /&gt;
''' YouTube videos '''&lt;br /&gt;
&lt;br /&gt;
YouTube is a good way to communicate new features. You can find existing demo videos on [http://www.youtube.com/user/meegoqatools meegoqatools channel on Youtube].&lt;br /&gt;
&lt;br /&gt;
If you shoot a video to YouTube, promote it on meego-qa mailing list!&lt;br /&gt;
&lt;br /&gt;
You can find some hints how to shoot, edit, and upload a video here: [[YouTube_Hints]]&lt;br /&gt;
&lt;br /&gt;
=== Release checklist ===&lt;br /&gt;
To make sure fixes are released without delay, check that the following conditions are met&lt;br /&gt;
&lt;br /&gt;
# Change logs are updated and contain relevant references to MeeGo bugzilla&lt;br /&gt;
# Created obs request include fixes bug numbers from MeeGo bugzilla&lt;br /&gt;
# Bugzilla items listed in changes are set as resolved&lt;br /&gt;
# Spec file matches [[Packaging/Guidelines|MeeGo packaging guidelines]]&lt;br /&gt;
# Rpmlint warnings are either fixed or explained by comments in the spec file. e.g. eat packages install files into root's home and the reasoning for it needs to be explained&lt;br /&gt;
# Host side tool packages use the same source tar ball to produce debian and rpm packages&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
(Only partial, will be updated asap as we file rest of the bugs -timakima)&lt;br /&gt;
&lt;br /&gt;
The release dates defined in MeeGo Release plans [[Release_Engineering/Plans/1.1|1.1]] and [[Release_Engineering/Plans/1.2|1.2]]. These dates are the latest estimation. They will be updated as work progresses.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|'''Feature''' || '''Release'''&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/showdependencytree.cgi?id=12980&amp;amp;hide_resolved=0 Measurement support] || 1.2&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/showdependencytree.cgi?id=12937&amp;amp;hide_resolved=0 MCTS coverage support] || TBD&lt;br /&gt;
|-&lt;br /&gt;
| [http://bugs.meego.com/showdependencytree.cgi?id=12833&amp;amp;hide_resolved=0 Test environment validation] || TBD&lt;br /&gt;
|-&lt;br /&gt;
| [http://bugs.meego.com/showdependencytree.cgi?id=13092&amp;amp;hide_resolved=0 Test equipment control] || TBD&lt;br /&gt;
|-&lt;br /&gt;
| [http://bugs.meego.com/showdependencytree.cgi?id=12454&amp;amp;hide_resolved=0 Parallel testing] || TBD&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/show_bug.cgi?id=12810 Easy install] || TBD&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/showdependencytree.cgi?id=12971&amp;amp;hide_resolved=0 Qt Creator integration] || TBD&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/showdependencytree.cgi?id=12981&amp;amp;hide_resolved=0 Events feature in automatic testing] || TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Features and Bugs ==&lt;br /&gt;
Want to report an feature idea or bug to us? - [http://bugs.meego.com/enter_bug.cgi?product=MeeGo%20Quality%20Assurance Please do it here]&lt;br /&gt;
 &lt;br /&gt;
* [http://bugs.meego.com/buglist.cgi?query_format=advanced&amp;amp;order=Importance&amp;amp;bug_status=ASSIGNED&amp;amp;component=eat&amp;amp;component=Fast%20Feedback%20Testing&amp;amp;component=hat&amp;amp;component=libcqpid&amp;amp;component=meego-qa-reports&amp;amp;component=min&amp;amp;component=ots&amp;amp;component=TDriver&amp;amp;component=testdefinition&amp;amp;component=Testplanner&amp;amp;component=Testrunner&amp;amp;component=testrunner-lite&amp;amp;classification=MeeGo%20Projects&amp;amp;product=MeeGo%20Quality%20Assurance Assigned bugs and features - Working on it]&lt;br /&gt;
* [http://bugs.meego.com/buglist.cgi?query_format=advanced&amp;amp;order=Importance&amp;amp;bug_status=NEW&amp;amp;bug_status=NEEDINFO&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=WAITING%20FOR%20UPSTREAM&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;component=eat&amp;amp;component=Fast%20Feedback%20Testing&amp;amp;component=hat&amp;amp;component=libcqpid&amp;amp;component=meego-qa-reports&amp;amp;component=min&amp;amp;component=ots&amp;amp;component=TDriver&amp;amp;component=testdefinition&amp;amp;component=Testplanner&amp;amp;component=Testrunner&amp;amp;component=testrunner-lite&amp;amp;classification=MeeGo%20Projects&amp;amp;product=MeeGo%20Quality%20Assurance All open features and bugs in priority order]&lt;br /&gt;
&lt;br /&gt;
Bugzilla workflow: [[Bugzilla/how-report-bugs]]&lt;br /&gt;
&lt;br /&gt;
We'd like to have the best guess of the moment about the delivery of features. Remember to set the target build of the bug you're working with according to: [[Release Engineering/Plans/1.1]] and [[Release Engineering/Plans/1.2]]&lt;br /&gt;
&lt;br /&gt;
When you add a new bug, add correct dependencies to the corresponding [[Quality/QA-tools#Roadmap|roadmap]] meta bug.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
This section will contain links to various guides and user documentation. See [[Quality/QA-tools#Tools_and_Maintainers|the wiki pages of the tools]] for tool-specific documentation.&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/Autotest-guide|Autotest-Guide]]&lt;br /&gt;
* [[Quality/QA-tools/How_to_set_up_repositories|How to set up the repositories that are needed to install QA tools]]&lt;br /&gt;
&lt;br /&gt;
== Design/ Planning ==&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/MCTS test automation design|MCTS Test Automation]] (QA Tools support for MCTS)&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
&lt;br /&gt;
All meetings will be held in &amp;lt;code&amp;gt;#meego-meeting&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;irc.freenode.net&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Team meetings&lt;br /&gt;
** QA tools team meetings will be held on need basis for specific topics. This was agreed in [http://trac.tspre.org/meetbot/meego-meeting/2010/meego-meeting.2010-12-07-11.59.html the last weekly meeting held on December 7th 2010]&lt;br /&gt;
** [[Quality/QA-tools/Meetings|Meeting agendas and minutes]]&lt;br /&gt;
&lt;br /&gt;
* Architecture meetings&lt;br /&gt;
** Architecture meetings will be held on-demand basis.&lt;br /&gt;
** [[Quality/QA-tools/Arch-Meetings|Meeting agendas and minutes]]&lt;br /&gt;
&lt;br /&gt;
* Workshops&lt;br /&gt;
** Face-2-face meetings within the team.&lt;br /&gt;
** [[Quality/QA-tools/Workshops|Meeting agendas and minutes]]&lt;br /&gt;
&lt;br /&gt;
== Team Members and Collaboration Spaces==&lt;br /&gt;
&lt;br /&gt;
The current team members are (in no particular order):&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Role'''&lt;br /&gt;
| '''Affiliation'''&lt;br /&gt;
| '''IRC nickname'''&lt;br /&gt;
|- &lt;br /&gt;
| Ville Ilvonen || Team lead (act.) || Nokia || vilvo&lt;br /&gt;
|-&lt;br /&gt;
| Riku Halonen || Team member || Nokia || rikhalon&lt;br /&gt;
|-&lt;br /&gt;
| Kari Sievi || Team member || Digia || sievi&lt;br /&gt;
|-&lt;br /&gt;
| Timo Härkönen || Team member || Digia || timoph  &lt;br /&gt;
|-&lt;br /&gt;
| Carol Rus || Team member || Digia || carrus  &lt;br /&gt;
|-&lt;br /&gt;
| Sami Lahtinen || Team member || Digia || slahtinen  &lt;br /&gt;
|-&lt;br /&gt;
| Raimo Gratseff || Team member || Digia || rrraimo  &lt;br /&gt;
|-&lt;br /&gt;
| Kyösti Ranto || Team member || Digia || kyranto&lt;br /&gt;
|-&lt;br /&gt;
| Arto Sinnelä || Team member || Digia || asinnela&lt;br /&gt;
|-&lt;br /&gt;
| Joonas Kylänpää || Team member || Digia || Kaadlajk&lt;br /&gt;
|-&lt;br /&gt;
| Timo Mäkimattila || Team member || Digia || timakima&lt;br /&gt;
|-&lt;br /&gt;
| Elias Luttinen || Team member || Digia || eluttine&lt;br /&gt;
|-&lt;br /&gt;
| Ville Niutanen || Team member || Digia || Villen&lt;br /&gt;
|-&lt;br /&gt;
| Esa-Pekka Miettinen || Team member || Digia || E-P&lt;br /&gt;
|-&lt;br /&gt;
| Vesa Poikajärvi || Team member || Digia || vesse&lt;br /&gt;
|-  &lt;br /&gt;
| Alexey Kuznetsov || Team member || Digia || alkuznet&lt;br /&gt;
|-  &lt;br /&gt;
| Sergey Timofeev || Team member || Digia || setimofe&lt;br /&gt;
|-  &lt;br /&gt;
| Daniil Chuiko || Team member || Digia || dachuiko&lt;br /&gt;
|-&lt;br /&gt;
| Jarmo Savinen || Team member || Digia || jasavi&lt;br /&gt;
|-&lt;br /&gt;
| Sampo Saaristo || Team member || Sofica || sampos&lt;br /&gt;
|-  &lt;br /&gt;
| Ling Yu || Team member || Intel || -&lt;br /&gt;
|-&lt;br /&gt;
| Jing Wang || Team member || Intel || -&lt;br /&gt;
|-  &lt;br /&gt;
| Teemu Vainio || Team member || Ixonos || tvainio&lt;br /&gt;
|-  &lt;br /&gt;
| Tuomo Mäkinen || Team member || Ixonos || -&lt;br /&gt;
|-  &lt;br /&gt;
| Jouni Leppäkases || Team member || Ixonos || jouni&lt;br /&gt;
|-  &lt;br /&gt;
| Tom Galvin || Team member || Ixonos || -&lt;br /&gt;
|-&lt;br /&gt;
| Jarno Keskikangas || Team member || Leonidas || jakeskik&lt;br /&gt;
|- &lt;br /&gt;
| Janne Hietamäki || Team member || Leonidas || _janne&lt;br /&gt;
|- &lt;br /&gt;
| Sami Hangaslammi || Team member || Leonidas || sahangas&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Team communication is in English. Our collaboration spaces are:&lt;br /&gt;
* [http://lists.meego.com/listinfo/meego-qa meego-qa@lists.meego.com mailing list]&lt;br /&gt;
* [http://lists.meego.com/listinfo/meego-dev meego-dev@meego.com mailing list], please prefix with 'QA-tools' for team related topics.&lt;br /&gt;
** Please also poke team members or Ville Ilvonen either by email or on IRC because of high traffic @ meego-dev&lt;br /&gt;
* [http://webchat.freenode.net/?channels=meego-qa-tools #meego-qa-tools IRC channel on irc.freenode.net]&lt;br /&gt;
** [http://timoph.fi/qa-tools-stats/ #meego-qa-tools statistics]&lt;br /&gt;
** [http://timoph.fi/qa-tools-logs/ #meego-qa-tools irc logs]&lt;br /&gt;
* Gitorious team, http://meego.gitorious.org/meego-quality-assurance/&lt;br /&gt;
* [http://www.youtube.com/user/meegoqatools Youtube channel for demo videos]&lt;br /&gt;
* [http://meegoqatools.wordpress.com/ QA-tools team blog]&lt;br /&gt;
* MeeGo OBS - devel:quality&lt;br /&gt;
* This wiki area&lt;br /&gt;
* [[Quality/QA-tools/ServiceOS|ServiceOS]]&lt;br /&gt;
* [[Quality/QA-tools/PXEInstall|PXEInstallation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:QA]]&lt;/div&gt;</summary>
		<author><name>Slahtinen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools</id>
		<title>Quality/QA-tools</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools"/>
				<updated>2011-01-28T07:39:25Z</updated>
		
		<summary type="html">&lt;p&gt;Slahtinen: Updated roadmap item for parallel testing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Quality Assurance (QA) Tools =&lt;br /&gt;
&lt;br /&gt;
Quality Assurance tools are developed to ensure MeeGo SW quality. QA tools team develops and maintains tools for Quality Assurance.&lt;br /&gt;
&lt;br /&gt;
 Open source tools  – available for all, available for development and contributions. Make people accountable for quality.&lt;br /&gt;
&lt;br /&gt;
Anyone is welcome to contribute and non-member contributions will be treated with same process and review as member contributions. We follow [http://meego.com/about/contribution-guidelines MeeGo contribution guidelines]. In addition, you may take personal clone from our [http://meego.gitorious.org/meego-quality-assurance/ git repositories] and create merge request. Tool maintainers in our projects will review your contributions and decide on merge.&lt;br /&gt;
&lt;br /&gt;
'''Targets:'''&lt;br /&gt;
&lt;br /&gt;
* Improve MeeGo test reporting tools - target from MeeGo Quality Assurance&lt;br /&gt;
* Improve MeeGo test automation (execution and software installation) - target from MeeGo release engineering&lt;br /&gt;
&lt;br /&gt;
&amp;quot;As Core OS release release manager I want to verify trunk:testing packages frequently so that I know the quality of nightly/weekly releases.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Tools and Maintainers ==&lt;br /&gt;
&lt;br /&gt;
Tool maintainers are selected based on developer experience with particular tool/package or seniority. Tool maintainers have been agreed [[Quality/QA-tools/Meetings|in the QA-tools meeting]] Tuesday September 7th 2010. Changes, if needed, are discussed also there.&lt;br /&gt;
&lt;br /&gt;
In practice only tool maintainers will have commit and review right to particular repository - later several people may have rights to repository based on merit (as proposed by tool maintainer). Others must follow [http://meego.com/about/contribution-guidelines MeeGo contribution guidelines] to submit patches or personal clone + merge request approach. &lt;br /&gt;
 &lt;br /&gt;
The maintainer of the tree shall update the changelog.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|'''Tool (link to wiki page)''' ||'''Gitorious'''||'''Maintainer''' ||'''Substitute'''&lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/QA-tools/Test-definition|test-definition]]||[http://meego.gitorious.org/meego-quality-assurance/test-definition Gitorious] || Sampo Saaristo || Timo Härkönen&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Testrunner-lite|testrunner-lite]] ||[http://meego.gitorious.org/meego-quality-assurance/testrunner-lite Gitorious] || Sampo Saaristo || Kyösti Ranto&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Testrunner|Testrunner]] || [http://meego.gitorious.org/meego-quality-assurance/testrunner Gitorious] || Kyösti Ranto || Timo Härkönen &lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/QA-tools/Testplanner|Testplanner]] ||[http://meego.gitorious.org/meego-quality-assurance/testplanner Gitorious] ||  Kyösti Ranto || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Eat|eat - enables automated testing]] ||[http://meego.gitorious.org/meego-quality-assurance/enables-automated-testing Gitorious] ||  Timo Härkönen || Timo Mäkimattila&lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/QA-tools/OTS|ots - open testing system]] ||[http://meego.gitorious.org/meego-quality-assurance/ots Gitorious] ||  Teemu Vainio || Tom Galvin&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Autotest-guide#Automatic_image_installations|MeeGo Automated installer]] ||[http://gitorious.org/qa-tools/meego-ai Gitorious] ||  Timo Härkönen || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/TestSuite/MCTS|MeeGo Core Test Suite]] || [http://meego.gitorious.org/meego-quality-assurance/mcts/ Gitorious] ||Matti Salmi || Jeff Zheng&lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/Netbook Test Suite and Utilities|MeeGo Netbook Test Suite]] || [http://gitorious.org/qa-tools/mnts/ Gitorious] ||Jeff Zheng || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/qtuitest-mbt-adapter|Model-Based Testing adapter for qtuitest]]  || [http://gitorious.org/qa-tools/qtuitest-mbt-adapter Gitorious] || Riku Halonen || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Min|MIN test framework]] || [http://meego.gitorious.org/meego-quality-assurance/min Gitorious] ||  Sampo Saaristo || Timo Mäkimattila&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/TDriver|Testability Driver]] || [http://gitorious.org/TDriver Gitorious] ||  Petri Kiiskinen || Tatu Lahtela&lt;br /&gt;
|-&lt;br /&gt;
| Rich Core dumper || [http://meego.gitorious.org/meego-quality-assurance/rich-core Gitorious] || Carol Rus || Raimo Gratseff&lt;br /&gt;
|-&lt;br /&gt;
| Crash Reporter || [http://meego.gitorious.org/meego-quality-assurance/crash-reporter Gitorious] || Carol Rus || Raimo Gratseff&lt;br /&gt;
|-&lt;br /&gt;
| Crash Reporter settings || [http://meego.gitorious.org/meego-quality-assurance/crash-reporter-settings-public Gitorious] || Carol Rus || Raimo Gratseff&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/hat-control|Hardware Accessory for Testing (HAT)]] || [http://meego.gitorious.org/meego-quality-assurance/hat-control Gitorious] || Marko Junttila || Riku Halonen&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/QAReports|QA Reports]] || [http://meego.gitorious.org/meego-quality-assurance/qa-reports Gitorious] || Sami Hangaslammi || Jarno Keskikangas&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Scripts_and_utils|Scripts and utils]] || [http://meego.gitorious.com/meego-quality-assurance/scripts-and-utils Gitorious] || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/TestSuite/handset-test-suite/handset-ux-test_Releases | handset_ux_tests]] || [http://meego.gitorious.com/meego-quality-assurance/handset-ux-tests Gitorious] || JessicaJi || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/MeeGo_Fast_Feedback_Testing|MeeGo Fast Feedback Testing (MeeGo-FFT)]] || [http://meego.gitorious.org/meego-quality-assurance/meego-testing-hudson-plugin Gitorious] || Alexey Kuznetsov || Timo Härkönen&lt;br /&gt;
|-&lt;br /&gt;
| Service OS based Flasher || [http://meego.gitorious.org/meego-quality-assurance/meego-ai-serviceos Gitorious] || Jing Wang || N/A&lt;br /&gt;
|-&lt;br /&gt;
| Qpid C wrapper library - libcqpid || [http://meego.gitorious.org/meego-quality-assurance/libcqpid Gitorious] || Sami Lahtinen || N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You can install Testrunner, testrunner-lite, Testplanner, OTS, Meego-ai and eat from Tools:Testing repository. The instructions for setting up the repositories can be found [[Quality/QA-tools/How_to_set_up_repositories|here]].&lt;br /&gt;
&lt;br /&gt;
See the rest of our team members and our collaboration spaces [[Quality/QA-tools#Team_Members_and_Collaboration_Spaces|below]]. If you are interested in the user experience work regarding these tools, you can find more information [[Quality/QA-tools/User experience|here]].&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The figure below tries to summarize the relations and tasks of the tools when used in test automation context.&lt;br /&gt;
&lt;br /&gt;
[[File:testautomationtools.png]]&lt;br /&gt;
&lt;br /&gt;
xfig file:[[File:qatools.fig]]&lt;br /&gt;
&lt;br /&gt;
== Release Practices ==&lt;br /&gt;
&lt;br /&gt;
Here is the workflow for QA tools release practices.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|'''Role'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| Developer || Anyone who wants to participate in qa-tools development &lt;br /&gt;
|-&lt;br /&gt;
| VCS Maintainer || Component owner who has commit rights in version control system (VCS)&lt;br /&gt;
|-&lt;br /&gt;
| Package Maintainer || Integrator whose responsibility is the OBS packaging&lt;br /&gt;
|-&lt;br /&gt;
| Release Management || Third party who is responsible of trunk:testing releases(?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:Release.png]]&lt;br /&gt;
&lt;br /&gt;
Kivio file: [[File:Release.flw]]&lt;br /&gt;
&lt;br /&gt;
# Developer creates merge request(s) in gitorious.&lt;br /&gt;
# VCS Maintainer tests and accepts merge requests.&lt;br /&gt;
# VCS Maintainer checks/updates change logs.&lt;br /&gt;
# VCS Maintainer tags a version.&lt;br /&gt;
# VCS maintainer sends email to [http://lists.meego.com/pipermail/meego-qa/ meego-qa mailing list] based on the following template&lt;br /&gt;
Topic: Integration request: package-name version&lt;br /&gt;
 PACKAGE: package-name&lt;br /&gt;
 TAG: tag name&lt;br /&gt;
 URL: link to sources&lt;br /&gt;
 CHANGES: short description of changes containing bugs.meego.com bug numbers of fixed bugs&lt;br /&gt;
# Package maintainer updates the OBS package.&lt;br /&gt;
# Package maintainer tests the OBS package.&lt;br /&gt;
# If the package belongs to tools:testing and passes testing, Package Maintainer may accept it. If the package belongs to trunk:testing, Package Maintainer creates a promotional request to Release Management. (If the package belongs to both repositories, we let the Release Management set bugs fixed by the package to RELEASED state).&lt;br /&gt;
# Host side tools are updated to tools:testing after verifying functionality&lt;br /&gt;
# Package maintainer replies to meego-qa list about the actions done with the updated package. e.g. 'Updated in devel:quality and sent promotion request to testing'&lt;br /&gt;
# Release Management accepts the package. Or not. (Follow meego-packaging and meego-commits.)&lt;br /&gt;
&lt;br /&gt;
''' YouTube videos '''&lt;br /&gt;
&lt;br /&gt;
YouTube is a good way to communicate new features. You can find existing demo videos on [http://www.youtube.com/user/meegoqatools meegoqatools channel on Youtube].&lt;br /&gt;
&lt;br /&gt;
If you shoot a video to YouTube, promote it on meego-qa mailing list!&lt;br /&gt;
&lt;br /&gt;
You can find some hints how to shoot, edit, and upload a video here: [[YouTube_Hints]]&lt;br /&gt;
&lt;br /&gt;
=== Release checklist ===&lt;br /&gt;
To make sure fixes are released without delay, check that the following conditions are met&lt;br /&gt;
&lt;br /&gt;
# Change logs are updated and contain relevant references to MeeGo bugzilla&lt;br /&gt;
# Created obs request include fixes bug numbers from MeeGo bugzilla&lt;br /&gt;
# Bugzilla items listed in changes are set as resolved&lt;br /&gt;
# Spec file matches [[Packaging/Guidelines|MeeGo packaging guidelines]]&lt;br /&gt;
# Rpmlint warnings are either fixed or explained by comments in the spec file. e.g. eat packages install files into root's home and the reasoning for it needs to be explained&lt;br /&gt;
# Host side tool packages use the same source tar ball to produce debian and rpm packages&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
(Only partial, will be updated asap as we file rest of the bugs -timakima)&lt;br /&gt;
&lt;br /&gt;
The release dates defined in MeeGo Release plans [[Release_Engineering/Plans/1.1|1.1]] and [[Release_Engineering/Plans/1.2|1.2]]. These dates are the latest estimation. They will be updated as work progresses.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|'''Feature''' || '''Release'''&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/showdependencytree.cgi?id=12980&amp;amp;hide_resolved=0 Measurement support] || 1.2&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/showdependencytree.cgi?id=12937&amp;amp;hide_resolved=0 MCTS coverage support] || TBD&lt;br /&gt;
|-&lt;br /&gt;
| Test environment validation || TBD&lt;br /&gt;
|-&lt;br /&gt;
| [http://bugs.meego.com/showdependencytree.cgi?id=12454&amp;amp;hide_resolved=0 Parallel testing] || TBD&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/show_bug.cgi?id=12810 Easy install] || TBD&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/showdependencytree.cgi?id=12971&amp;amp;hide_resolved=0 Qt Creator integration] || TBD&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/showdependencytree.cgi?id=12981&amp;amp;hide_resolved=0 Events feature in automatic testing] || TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Features and Bugs ==&lt;br /&gt;
Want to report an feature idea or bug to us? - [http://bugs.meego.com/enter_bug.cgi?product=MeeGo%20Quality%20Assurance Please do it here]&lt;br /&gt;
 &lt;br /&gt;
* [http://bugs.meego.com/buglist.cgi?query_format=advanced&amp;amp;order=Importance&amp;amp;bug_status=ASSIGNED&amp;amp;component=eat&amp;amp;component=Fast%20Feedback%20Testing&amp;amp;component=hat&amp;amp;component=libcqpid&amp;amp;component=meego-qa-reports&amp;amp;component=min&amp;amp;component=ots&amp;amp;component=TDriver&amp;amp;component=testdefinition&amp;amp;component=Testplanner&amp;amp;component=Testrunner&amp;amp;component=testrunner-lite&amp;amp;classification=MeeGo%20Projects&amp;amp;product=MeeGo%20Quality%20Assurance Assigned bugs and features - Working on it]&lt;br /&gt;
* [http://bugs.meego.com/buglist.cgi?query_format=advanced&amp;amp;order=Importance&amp;amp;bug_status=NEW&amp;amp;bug_status=NEEDINFO&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=WAITING%20FOR%20UPSTREAM&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;component=eat&amp;amp;component=Fast%20Feedback%20Testing&amp;amp;component=hat&amp;amp;component=libcqpid&amp;amp;component=meego-qa-reports&amp;amp;component=min&amp;amp;component=ots&amp;amp;component=TDriver&amp;amp;component=testdefinition&amp;amp;component=Testplanner&amp;amp;component=Testrunner&amp;amp;component=testrunner-lite&amp;amp;classification=MeeGo%20Projects&amp;amp;product=MeeGo%20Quality%20Assurance All open features and bugs in priority order]&lt;br /&gt;
&lt;br /&gt;
Bugzilla workflow: [[Bugzilla/how-report-bugs]]&lt;br /&gt;
&lt;br /&gt;
We'd like to have the best guess of the moment about the delivery of features. Remember to set the target build of the bug you're working with according to: [[Release Engineering/Plans/1.1]] and [[Release Engineering/Plans/1.2]]&lt;br /&gt;
&lt;br /&gt;
When you add a new bug, add correct dependencies to the corresponding [[Quality/QA-tools#Roadmap|roadmap]] meta bug.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
This section will contain links to various guides and user documentation. See [[Quality/QA-tools#Tools_and_Maintainers|the wiki pages of the tools]] for tool-specific documentation.&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/Autotest-guide|Autotest-Guide]]&lt;br /&gt;
* [[Quality/QA-tools/How_to_set_up_repositories|How to set up the repositories that are needed to install QA tools]]&lt;br /&gt;
&lt;br /&gt;
== Design/ Planning ==&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/MCTS test automation design|MCTS Test Automation]] (QA Tools support for MCTS)&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
&lt;br /&gt;
All meetings will be held in &amp;lt;code&amp;gt;#meego-meeting&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;irc.freenode.net&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Team meetings&lt;br /&gt;
** QA tools team meetings will be held on need basis for specific topics. This was agreed in [http://trac.tspre.org/meetbot/meego-meeting/2010/meego-meeting.2010-12-07-11.59.html the last weekly meeting held on December 7th 2010]&lt;br /&gt;
** [[Quality/QA-tools/Meetings|Meeting agendas and minutes]]&lt;br /&gt;
&lt;br /&gt;
* Architecture meetings&lt;br /&gt;
** Architecture meetings will be held on-demand basis.&lt;br /&gt;
** [[Quality/QA-tools/Arch-Meetings|Meeting agendas and minutes]]&lt;br /&gt;
&lt;br /&gt;
* Workshops&lt;br /&gt;
** Face-2-face meetings within the team.&lt;br /&gt;
** [[Quality/QA-tools/Workshops|Meeting agendas and minutes]]&lt;br /&gt;
&lt;br /&gt;
== Team Members and Collaboration Spaces==&lt;br /&gt;
&lt;br /&gt;
The current team members are (in no particular order):&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Role'''&lt;br /&gt;
| '''Affiliation'''&lt;br /&gt;
| '''IRC nickname'''&lt;br /&gt;
|- &lt;br /&gt;
| Ville Ilvonen || Team lead (act.) || Nokia || vilvo&lt;br /&gt;
|-&lt;br /&gt;
| Riku Halonen || Team member || Nokia || rikhalon&lt;br /&gt;
|-&lt;br /&gt;
| Kari Sievi || Team member || Digia || sievi&lt;br /&gt;
|-&lt;br /&gt;
| Timo Härkönen || Team member || Digia || timoph  &lt;br /&gt;
|-&lt;br /&gt;
| Carol Rus || Team member || Digia || carrus  &lt;br /&gt;
|-&lt;br /&gt;
| Sami Lahtinen || Team member || Digia || slahtinen  &lt;br /&gt;
|-&lt;br /&gt;
| Raimo Gratseff || Team member || Digia || rrraimo  &lt;br /&gt;
|-&lt;br /&gt;
| Kyösti Ranto || Team member || Digia || kyranto&lt;br /&gt;
|-&lt;br /&gt;
| Arto Sinnelä || Team member || Digia || asinnela&lt;br /&gt;
|-&lt;br /&gt;
| Joonas Kylänpää || Team member || Digia || Kaadlajk&lt;br /&gt;
|-&lt;br /&gt;
| Timo Mäkimattila || Team member || Digia || timakima&lt;br /&gt;
|-&lt;br /&gt;
| Elias Luttinen || Team member || Digia || eluttine&lt;br /&gt;
|-&lt;br /&gt;
| Ville Niutanen || Team member || Digia || Villen&lt;br /&gt;
|-&lt;br /&gt;
| Esa-Pekka Miettinen || Team member || Digia || E-P&lt;br /&gt;
|-&lt;br /&gt;
| Vesa Poikajärvi || Team member || Digia || vesse&lt;br /&gt;
|-  &lt;br /&gt;
| Alexey Kuznetsov || Team member || Digia || alkuznet&lt;br /&gt;
|-  &lt;br /&gt;
| Sergey Timofeev || Team member || Digia || setimofe&lt;br /&gt;
|-  &lt;br /&gt;
| Daniil Chuiko || Team member || Digia || dachuiko&lt;br /&gt;
|-&lt;br /&gt;
| Jarmo Savinen || Team member || Digia || jasavi&lt;br /&gt;
|-&lt;br /&gt;
| Sampo Saaristo || Team member || Sofica || sampos&lt;br /&gt;
|-  &lt;br /&gt;
| Ling Yu || Team member || Intel || -&lt;br /&gt;
|-&lt;br /&gt;
| Jing Wang || Team member || Intel || -&lt;br /&gt;
|-  &lt;br /&gt;
| Teemu Vainio || Team member || Ixonos || tvainio&lt;br /&gt;
|-  &lt;br /&gt;
| Tuomo Mäkinen || Team member || Ixonos || -&lt;br /&gt;
|-  &lt;br /&gt;
| Jouni Leppäkases || Team member || Ixonos || jouni&lt;br /&gt;
|-  &lt;br /&gt;
| Tom Galvin || Team member || Ixonos || -&lt;br /&gt;
|-&lt;br /&gt;
| Jarno Keskikangas || Team member || Leonidas || jakeskik&lt;br /&gt;
|- &lt;br /&gt;
| Janne Hietamäki || Team member || Leonidas || _janne&lt;br /&gt;
|- &lt;br /&gt;
| Sami Hangaslammi || Team member || Leonidas || sahangas&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Team communication is in English. Our collaboration spaces are:&lt;br /&gt;
* [http://lists.meego.com/listinfo/meego-qa meego-qa@lists.meego.com mailing list]&lt;br /&gt;
* [http://lists.meego.com/listinfo/meego-dev meego-dev@meego.com mailing list], please prefix with 'QA-tools' for team related topics.&lt;br /&gt;
** Please also poke team members or Ville Ilvonen either by email or on IRC because of high traffic @ meego-dev&lt;br /&gt;
* [http://webchat.freenode.net/?channels=meego-qa-tools #meego-qa-tools IRC channel on irc.freenode.net]&lt;br /&gt;
** [http://timoph.fi/qa-tools-stats/ #meego-qa-tools statistics]&lt;br /&gt;
** [http://timoph.fi/qa-tools-logs/ #meego-qa-tools irc logs]&lt;br /&gt;
* Gitorious team, http://meego.gitorious.org/meego-quality-assurance/&lt;br /&gt;
* [http://www.youtube.com/user/meegoqatools Youtube channel for demo videos]&lt;br /&gt;
* [http://meegoqatools.wordpress.com/ QA-tools team blog]&lt;br /&gt;
* MeeGo OBS - devel:quality&lt;br /&gt;
* This wiki area&lt;br /&gt;
* [[Quality/QA-tools/ServiceOS|ServiceOS]]&lt;br /&gt;
* [[Quality/QA-tools/PXEInstall|PXEInstallation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:QA]]&lt;/div&gt;</summary>
		<author><name>Slahtinen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools</id>
		<title>Quality/QA-tools</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools"/>
				<updated>2011-01-27T14:41:21Z</updated>
		
		<summary type="html">&lt;p&gt;Slahtinen: Added libcqpid to Tools&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Quality Assurance (QA) Tools =&lt;br /&gt;
&lt;br /&gt;
Quality Assurance tools are developed to ensure MeeGo SW quality. QA tools team develops and maintains tools for Quality Assurance.&lt;br /&gt;
&lt;br /&gt;
 Open source tools  – available for all, available for development and contributions. Make people accountable for quality.&lt;br /&gt;
&lt;br /&gt;
Anyone is welcome to contribute and non-member contributions will be treated with same process and review as member contributions. We follow [http://meego.com/about/contribution-guidelines MeeGo contribution guidelines]. In addition, you may take personal clone from our [http://meego.gitorious.org/meego-quality-assurance/ git repositories] and create merge request. Tool maintainers in our projects will review your contributions and decide on merge.&lt;br /&gt;
&lt;br /&gt;
'''Targets:'''&lt;br /&gt;
&lt;br /&gt;
* Improve MeeGo test reporting tools - target from MeeGo Quality Assurance&lt;br /&gt;
* Improve MeeGo test automation (execution and software installation) - target from MeeGo release engineering&lt;br /&gt;
&lt;br /&gt;
&amp;quot;As Core OS release release manager I want to verify trunk:testing packages frequently so that I know the quality of nightly/weekly releases.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Tools and Maintainers ==&lt;br /&gt;
&lt;br /&gt;
Tool maintainers are selected based on developer experience with particular tool/package or seniority. Tool maintainers have been agreed [[Quality/QA-tools/Meetings|in the QA-tools meeting]] Tuesday September 7th 2010. Changes, if needed, are discussed also there.&lt;br /&gt;
&lt;br /&gt;
In practice only tool maintainers will have commit and review right to particular repository - later several people may have rights to repository based on merit (as proposed by tool maintainer). Others must follow [http://meego.com/about/contribution-guidelines MeeGo contribution guidelines] to submit patches or personal clone + merge request approach. &lt;br /&gt;
 &lt;br /&gt;
The maintainer of the tree shall update the changelog.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|'''Tool (link to wiki page)''' ||'''Gitorious'''||'''Maintainer''' ||'''Substitute'''&lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/QA-tools/Test-definition|test-definition]]||[http://meego.gitorious.org/meego-quality-assurance/test-definition Gitorious] || Sampo Saaristo || Timo Härkönen&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Testrunner-lite|testrunner-lite]] ||[http://meego.gitorious.org/meego-quality-assurance/testrunner-lite Gitorious] || Sampo Saaristo || Kyösti Ranto&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Testrunner|Testrunner]] || [http://meego.gitorious.org/meego-quality-assurance/testrunner Gitorious] || Kyösti Ranto || Timo Härkönen &lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/QA-tools/Testplanner|Testplanner]] ||[http://meego.gitorious.org/meego-quality-assurance/testplanner Gitorious] ||  Kyösti Ranto || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Eat|eat - enables automated testing]] ||[http://meego.gitorious.org/meego-quality-assurance/enables-automated-testing Gitorious] ||  Timo Härkönen || Timo Mäkimattila&lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/QA-tools/OTS|ots - open testing system]] ||[http://meego.gitorious.org/meego-quality-assurance/ots Gitorious] ||  Teemu Vainio || Tom Galvin&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Autotest-guide#Automatic_image_installations|MeeGo Automated installer]] ||[http://gitorious.org/qa-tools/meego-ai Gitorious] ||  Timo Härkönen || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/TestSuite/MCTS|MeeGo Core Test Suite]] || [http://meego.gitorious.org/meego-quality-assurance/mcts/ Gitorious] ||Matti Salmi || Jeff Zheng&lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/Netbook Test Suite and Utilities|MeeGo Netbook Test Suite]] || [http://gitorious.org/qa-tools/mnts/ Gitorious] ||Jeff Zheng || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/qtuitest-mbt-adapter|Model-Based Testing adapter for qtuitest]]  || [http://gitorious.org/qa-tools/qtuitest-mbt-adapter Gitorious] || Riku Halonen || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Min|MIN test framework]] || [http://meego.gitorious.org/meego-quality-assurance/min Gitorious] ||  Sampo Saaristo || Timo Mäkimattila&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/TDriver|Testability Driver]] || [http://gitorious.org/TDriver Gitorious] ||  Petri Kiiskinen || Tatu Lahtela&lt;br /&gt;
|-&lt;br /&gt;
| Rich Core dumper || [http://meego.gitorious.org/meego-quality-assurance/rich-core Gitorious] || Carol Rus || Raimo Gratseff&lt;br /&gt;
|-&lt;br /&gt;
| Crash Reporter || [http://meego.gitorious.org/meego-quality-assurance/crash-reporter Gitorious] || Carol Rus || Raimo Gratseff&lt;br /&gt;
|-&lt;br /&gt;
| Crash Reporter settings || [http://meego.gitorious.org/meego-quality-assurance/crash-reporter-settings-public Gitorious] || Carol Rus || Raimo Gratseff&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/hat-control|Hardware Accessory for Testing (HAT)]] || [http://meego.gitorious.org/meego-quality-assurance/hat-control Gitorious] || Marko Junttila || Riku Halonen&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/QAReports|QA Reports]] || [http://meego.gitorious.org/meego-quality-assurance/qa-reports Gitorious] || Sami Hangaslammi || Jarno Keskikangas&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Scripts_and_utils|Scripts and utils]] || [http://meego.gitorious.com/meego-quality-assurance/scripts-and-utils Gitorious] || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/TestSuite/handset-test-suite/handset-ux-test_Releases | handset_ux_tests]] || [http://meego.gitorious.com/meego-quality-assurance/handset-ux-tests Gitorious] || JessicaJi || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/MeeGo_Fast_Feedback_Testing|MeeGo Fast Feedback Testing (MeeGo-FFT)]] || [http://meego.gitorious.org/meego-quality-assurance/meego-testing-hudson-plugin Gitorious] || Alexey Kuznetsov || Timo Härkönen&lt;br /&gt;
|-&lt;br /&gt;
| Service OS based Flasher || [http://meego.gitorious.org/meego-quality-assurance/meego-ai-serviceos Gitorious] || Jing Wang || N/A&lt;br /&gt;
|-&lt;br /&gt;
| Qpid C wrapper library - libcqpid || [http://meego.gitorious.org/meego-quality-assurance/libcqpid Gitorious] || Sami Lahtinen || N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You can install Testrunner, testrunner-lite, Testplanner, OTS, Meego-ai and eat from Tools:Testing repository. The instructions for setting up the repositories can be found [[Quality/QA-tools/How_to_set_up_repositories|here]].&lt;br /&gt;
&lt;br /&gt;
See the rest of our team members and our collaboration spaces [[Quality/QA-tools#Team_Members_and_Collaboration_Spaces|below]]. If you are interested in the user experience work regarding these tools, you can find more information [[Quality/QA-tools/User experience|here]].&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The figure below tries to summarize the relations and tasks of the tools when used in test automation context.&lt;br /&gt;
&lt;br /&gt;
[[File:testautomationtools.png]]&lt;br /&gt;
&lt;br /&gt;
xfig file:[[File:qatools.fig]]&lt;br /&gt;
&lt;br /&gt;
== Release Practices ==&lt;br /&gt;
&lt;br /&gt;
Here is the workflow for QA tools release practices.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|'''Role'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| Developer || Anyone who wants to participate in qa-tools development &lt;br /&gt;
|-&lt;br /&gt;
| VCS Maintainer || Component owner who has commit rights in version control system (VCS)&lt;br /&gt;
|-&lt;br /&gt;
| Package Maintainer || Integrator whose responsibility is the OBS packaging&lt;br /&gt;
|-&lt;br /&gt;
| Release Management || Third party who is responsible of trunk:testing releases(?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:Release.png]]&lt;br /&gt;
&lt;br /&gt;
Kivio file: [[File:Release.flw]]&lt;br /&gt;
&lt;br /&gt;
# Developer creates merge request(s) in gitorious.&lt;br /&gt;
# VCS Maintainer tests and accepts merge requests.&lt;br /&gt;
# VCS Maintainer checks/updates change logs.&lt;br /&gt;
# VCS Maintainer tags a version.&lt;br /&gt;
# VCS maintainer sends email to [http://lists.meego.com/pipermail/meego-qa/ meego-qa mailing list] based on the following template&lt;br /&gt;
Topic: Integration request: package-name version&lt;br /&gt;
 PACKAGE: package-name&lt;br /&gt;
 TAG: tag name&lt;br /&gt;
 URL: link to sources&lt;br /&gt;
 CHANGES: short description of changes containing bugs.meego.com bug numbers of fixed bugs&lt;br /&gt;
# Package maintainer updates the OBS package.&lt;br /&gt;
# Package maintainer tests the OBS package.&lt;br /&gt;
# If the package belongs to tools:testing and passes testing, Package Maintainer may accept it. If the package belongs to trunk:testing, Package Maintainer creates a promotional request to Release Management. (If the package belongs to both repositories, we let the Release Management set bugs fixed by the package to RELEASED state).&lt;br /&gt;
# Host side tools are updated to tools:testing after verifying functionality&lt;br /&gt;
# Package maintainer replies to meego-qa list about the actions done with the updated package. e.g. 'Updated in devel:quality and sent promotion request to testing'&lt;br /&gt;
# Release Management accepts the package. Or not. (Follow meego-packaging and meego-commits.)&lt;br /&gt;
&lt;br /&gt;
''' YouTube videos '''&lt;br /&gt;
&lt;br /&gt;
YouTube is a good way to communicate new features. You can find existing demo videos on [http://www.youtube.com/user/meegoqatools meegoqatools channel on Youtube].&lt;br /&gt;
&lt;br /&gt;
If you shoot a video to YouTube, promote it on meego-qa mailing list!&lt;br /&gt;
&lt;br /&gt;
You can find some hints how to shoot, edit, and upload a video here: [[YouTube_Hints]]&lt;br /&gt;
&lt;br /&gt;
=== Release checklist ===&lt;br /&gt;
To make sure fixes are released without delay, check that the following conditions are met&lt;br /&gt;
&lt;br /&gt;
# Change logs are updated and contain relevant references to MeeGo bugzilla&lt;br /&gt;
# Created obs request include fixes bug numbers from MeeGo bugzilla&lt;br /&gt;
# Bugzilla items listed in changes are set as resolved&lt;br /&gt;
# Spec file matches [[Packaging/Guidelines|MeeGo packaging guidelines]]&lt;br /&gt;
# Rpmlint warnings are either fixed or explained by comments in the spec file. e.g. eat packages install files into root's home and the reasoning for it needs to be explained&lt;br /&gt;
# Host side tool packages use the same source tar ball to produce debian and rpm packages&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
(Only partial, will be updated asap as we file rest of the bugs -timakima)&lt;br /&gt;
&lt;br /&gt;
The release dates defined in MeeGo Release plans [http://wiki.meego.com/Release_Engineering/Plans/1.1 1.1] and [http://wiki.meego.com/Release_Engineering/Plans/1.2 1.2]. These dates are the latest estimation. They will be updated as work progresses.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|'''Feature''' || '''Release'''&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/showdependencytree.cgi?id=12980&amp;amp;hide_resolved=0 Measurement support] || 1.2&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/showdependencytree.cgi?id=12937&amp;amp;hide_resolved=0 MCTS coverage support] || TBD&lt;br /&gt;
|-&lt;br /&gt;
| Test environment validation || TBD&lt;br /&gt;
|-&lt;br /&gt;
| Parallel testing || TBD&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/show_bug.cgi?id=12810 Easy install] || TBD&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/showdependencytree.cgi?id=12971&amp;amp;hide_resolved=0 Qt Creator integration] || TBD&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/showdependencytree.cgi?id=12981&amp;amp;hide_resolved=0 Events feature in automatic testing] || TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Features and Bugs ==&lt;br /&gt;
Want to report an feature idea or bug to us? - [http://bugs.meego.com/enter_bug.cgi?product=MeeGo%20Quality%20Assurance Please do it here]&lt;br /&gt;
 &lt;br /&gt;
* [http://bugs.meego.com/buglist.cgi?query_format=advanced&amp;amp;order=Importance&amp;amp;bug_status=ASSIGNED&amp;amp;component=eat&amp;amp;component=min&amp;amp;component=ots&amp;amp;component=TDriver&amp;amp;component=testdefinition&amp;amp;component=Testplanner&amp;amp;component=testrunner%20UI&amp;amp;component=testrunner-lite&amp;amp;classification=MeeGo%20Projects&amp;amp;product=Meego%20Quality%20Assurance Assigned bugs and features - Working on it]&lt;br /&gt;
* [http://bugs.meego.com/buglist.cgi?query_format=advanced&amp;amp;order=Importance&amp;amp;bug_status=NEW&amp;amp;bug_status=NEEDINFO&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=WAITING%20FOR%20UPSTREAM&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;component=eat&amp;amp;component=min&amp;amp;component=ots&amp;amp;component=TDriver&amp;amp;component=testdefinition&amp;amp;component=Testplanner&amp;amp;component=testrunner%20UI&amp;amp;component=testrunner-lite&amp;amp;classification=MeeGo%20Projects&amp;amp;product=MeeGo%20Quality%20Assurance All open features and bugs in priority order]&lt;br /&gt;
&lt;br /&gt;
Bugzilla workflow: [[Bugzilla/how-report-bugs]]&lt;br /&gt;
&lt;br /&gt;
We'd like to have the best guess of the moment about the delivery of features. Remember to set the target build of the bug you're working with according to: [[Release Engineering/Plans/1.1]] and [[Release Engineering/Plans/1.2]]&lt;br /&gt;
&lt;br /&gt;
When you add a new bug, add correct dependencies to the corresponding [[Quality/QA-tools#Roadmap|roadmap]] meta bug.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
This section will contain links to various guides and user documentation. See [[Quality/QA-tools#Tools_and_Maintainers|the wiki pages of the tools]] for tool-specific documentation.&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/Autotest-guide|Autotest-Guide]]&lt;br /&gt;
* [[Quality/QA-tools/How_to_set_up_repositories|How to set up the repositories that are needed to install QA tools]]&lt;br /&gt;
&lt;br /&gt;
== Design/ Planning ==&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/MCTS test automation design|MCTS Test Automation]] (QA Tools support for MCTS)&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
&lt;br /&gt;
All meetings will be held in &amp;lt;code&amp;gt;#meego-meeting&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;irc.freenode.net&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Team meetings&lt;br /&gt;
** QA tools team meetings will be held on need basis for specific topics. This was agreed in [http://trac.tspre.org/meetbot/meego-meeting/2010/meego-meeting.2010-12-07-11.59.html the last weekly meeting held on December 7th 2010]&lt;br /&gt;
** [[Quality/QA-tools/Meetings|Meeting agendas and minutes]]&lt;br /&gt;
&lt;br /&gt;
* Architecture meetings&lt;br /&gt;
** Architecture meetings will be held on-demand basis.&lt;br /&gt;
** [[Quality/QA-tools/Arch-Meetings|Meeting agendas and minutes]]&lt;br /&gt;
&lt;br /&gt;
* Workshops&lt;br /&gt;
** Face-2-face meetings within the team.&lt;br /&gt;
** [[Quality/QA-tools/Workshops|Meeting agendas and minutes]]&lt;br /&gt;
&lt;br /&gt;
== Team Members and Collaboration Spaces==&lt;br /&gt;
&lt;br /&gt;
The current team members are (in no particular order):&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Role'''&lt;br /&gt;
| '''Affiliation'''&lt;br /&gt;
| '''IRC nickname'''&lt;br /&gt;
|- &lt;br /&gt;
| Ville Ilvonen || Team lead (act.) || Nokia || vilvo&lt;br /&gt;
|-&lt;br /&gt;
| Riku Halonen || Team member || Nokia || rikhalon&lt;br /&gt;
|-&lt;br /&gt;
| Kari Sievi || Team member || Digia || sievi&lt;br /&gt;
|-&lt;br /&gt;
| Timo Härkönen || Team member || Digia || timoph  &lt;br /&gt;
|-&lt;br /&gt;
| Carol Rus || Team member || Digia || carrus  &lt;br /&gt;
|-&lt;br /&gt;
| Sami Lahtinen || Team member || Digia || slahtinen  &lt;br /&gt;
|-&lt;br /&gt;
| Raimo Gratseff || Team member || Digia || rrraimo  &lt;br /&gt;
|-&lt;br /&gt;
| Kyösti Ranto || Team member || Digia || kyranto&lt;br /&gt;
|-&lt;br /&gt;
| Arto Sinnelä || Team member || Digia || asinnela&lt;br /&gt;
|-&lt;br /&gt;
| Joonas Kylänpää || Team member || Digia || Kaadlajk&lt;br /&gt;
|-&lt;br /&gt;
| Timo Mäkimattila || Team member || Digia || timakima&lt;br /&gt;
|-&lt;br /&gt;
| Elias Luttinen || Team member || Digia || eluttine&lt;br /&gt;
|-&lt;br /&gt;
| Ville Niutanen || Team member || Digia || Villen&lt;br /&gt;
|-&lt;br /&gt;
| Esa-Pekka Miettinen || Team member || Digia || E-P&lt;br /&gt;
|-&lt;br /&gt;
| Vesa Poikajärvi || Team member || Digia || vesse&lt;br /&gt;
|-  &lt;br /&gt;
| Alexey Kuznetsov || Team member || Digia || alkuznet&lt;br /&gt;
|-  &lt;br /&gt;
| Sergey Timofeev || Team member || Digia || setimofe&lt;br /&gt;
|-  &lt;br /&gt;
| Daniil Chuiko || Team member || Digia || dachuiko&lt;br /&gt;
|-&lt;br /&gt;
| Jarmo Savinen || Team member || Digia || jasavi&lt;br /&gt;
|-&lt;br /&gt;
| Sampo Saaristo || Team member || Sofica || sampos&lt;br /&gt;
|-  &lt;br /&gt;
| Ling Yu || Team member || Intel || -&lt;br /&gt;
|-&lt;br /&gt;
| Jing Wang || Team member || Intel || -&lt;br /&gt;
|-  &lt;br /&gt;
| Teemu Vainio || Team member || Ixonos || tvainio&lt;br /&gt;
|-  &lt;br /&gt;
| Tuomo Mäkinen || Team member || Ixonos || -&lt;br /&gt;
|-  &lt;br /&gt;
| Jouni Leppäkases || Team member || Ixonos || jouni&lt;br /&gt;
|-  &lt;br /&gt;
| Tom Galvin || Team member || Ixonos || -&lt;br /&gt;
|-&lt;br /&gt;
| Jarno Keskikangas || Team member || Leonidas || jakeskik&lt;br /&gt;
|- &lt;br /&gt;
| Janne Hietamäki || Team member || Leonidas || _janne&lt;br /&gt;
|- &lt;br /&gt;
| Sami Hangaslammi || Team member || Leonidas || sahangas&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Team communication is in English. Our collaboration spaces are:&lt;br /&gt;
* [http://lists.meego.com/listinfo/meego-qa meego-qa@lists.meego.com mailing list]&lt;br /&gt;
* [http://lists.meego.com/listinfo/meego-dev meego-dev@meego.com mailing list], please prefix with 'QA-tools' for team related topics.&lt;br /&gt;
** Please also poke team members or Ville Ilvonen either by email or on IRC because of high traffic @ meego-dev&lt;br /&gt;
* [http://webchat.freenode.net/?channels=meego-qa-tools #meego-qa-tools IRC channel on irc.freenode.net]&lt;br /&gt;
** [http://timoph.fi/qa-tools-stats/ #meego-qa-tools statistics]&lt;br /&gt;
** [http://timoph.fi/qa-tools-logs/ #meego-qa-tools irc logs]&lt;br /&gt;
* Gitorious team, http://meego.gitorious.org/meego-quality-assurance/&lt;br /&gt;
* [http://www.youtube.com/user/meegoqatools Youtube channel for demo videos]&lt;br /&gt;
* [http://meegoqatools.wordpress.com/ QA-tools team blog]&lt;br /&gt;
* MeeGo OBS - devel:quality&lt;br /&gt;
* This wiki area&lt;br /&gt;
* [[Quality/QA-tools/ServiceOS|ServiceOS]]&lt;br /&gt;
* [[Quality/QA-tools/PXEInstall|PXEInstallation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:QA]]&lt;/div&gt;</summary>
		<author><name>Slahtinen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools</id>
		<title>Quality/QA-tools</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools"/>
				<updated>2011-01-27T14:36:14Z</updated>
		
		<summary type="html">&lt;p&gt;Slahtinen: /* Roadmap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Quality Assurance (QA) Tools =&lt;br /&gt;
&lt;br /&gt;
Quality Assurance tools are developed to ensure MeeGo SW quality. QA tools team develops and maintains tools for Quality Assurance.&lt;br /&gt;
&lt;br /&gt;
 Open source tools  – available for all, available for development and contributions. Make people accountable for quality.&lt;br /&gt;
&lt;br /&gt;
Anyone is welcome to contribute and non-member contributions will be treated with same process and review as member contributions. We follow [http://meego.com/about/contribution-guidelines MeeGo contribution guidelines]. In addition, you may take personal clone from our [http://meego.gitorious.org/meego-quality-assurance/ git repositories] and create merge request. Tool maintainers in our projects will review your contributions and decide on merge.&lt;br /&gt;
&lt;br /&gt;
'''Targets:'''&lt;br /&gt;
&lt;br /&gt;
* Improve MeeGo test reporting tools - target from MeeGo Quality Assurance&lt;br /&gt;
* Improve MeeGo test automation (execution and software installation) - target from MeeGo release engineering&lt;br /&gt;
&lt;br /&gt;
&amp;quot;As Core OS release release manager I want to verify trunk:testing packages frequently so that I know the quality of nightly/weekly releases.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Tools and Maintainers ==&lt;br /&gt;
&lt;br /&gt;
Tool maintainers are selected based on developer experience with particular tool/package or seniority. Tool maintainers have been agreed [[Quality/QA-tools/Meetings|in the QA-tools meeting]] Tuesday September 7th 2010. Changes, if needed, are discussed also there.&lt;br /&gt;
&lt;br /&gt;
In practice only tool maintainers will have commit and review right to particular repository - later several people may have rights to repository based on merit (as proposed by tool maintainer). Others must follow [http://meego.com/about/contribution-guidelines MeeGo contribution guidelines] to submit patches or personal clone + merge request approach. &lt;br /&gt;
 &lt;br /&gt;
The maintainer of the tree shall update the changelog.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|'''Tool (link to wiki page)''' ||'''Gitorious'''||'''Maintainer''' ||'''Substitute'''&lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/QA-tools/Test-definition|test-definition]]||[http://meego.gitorious.org/meego-quality-assurance/test-definition Gitorious] || Sampo Saaristo || Timo Härkönen&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Testrunner-lite|testrunner-lite]] ||[http://meego.gitorious.org/meego-quality-assurance/testrunner-lite Gitorious] || Sampo Saaristo || Kyösti Ranto&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Testrunner|Testrunner]] || [http://meego.gitorious.org/meego-quality-assurance/testrunner Gitorious] || Kyösti Ranto || Timo Härkönen &lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/QA-tools/Testplanner|Testplanner]] ||[http://meego.gitorious.org/meego-quality-assurance/testplanner Gitorious] ||  Kyösti Ranto || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Eat|eat - enables automated testing]] ||[http://meego.gitorious.org/meego-quality-assurance/enables-automated-testing Gitorious] ||  Timo Härkönen || Timo Mäkimattila&lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/QA-tools/OTS|ots - open testing system]] ||[http://meego.gitorious.org/meego-quality-assurance/ots Gitorious] ||  Teemu Vainio || Tom Galvin&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Autotest-guide#Automatic_image_installations|MeeGo Automated installer]] ||[http://gitorious.org/qa-tools/meego-ai Gitorious] ||  Timo Härkönen || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/TestSuite/MCTS|MeeGo Core Test Suite]] || [http://meego.gitorious.org/meego-quality-assurance/mcts/ Gitorious] ||Matti Salmi || Jeff Zheng&lt;br /&gt;
|- &lt;br /&gt;
| [[Quality/Netbook Test Suite and Utilities|MeeGo Netbook Test Suite]] || [http://gitorious.org/qa-tools/mnts/ Gitorious] ||Jeff Zheng || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/qtuitest-mbt-adapter|Model-Based Testing adapter for qtuitest]]  || [http://gitorious.org/qa-tools/qtuitest-mbt-adapter Gitorious] || Riku Halonen || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Min|MIN test framework]] || [http://meego.gitorious.org/meego-quality-assurance/min Gitorious] ||  Sampo Saaristo || Timo Mäkimattila&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/TDriver|Testability Driver]] || [http://gitorious.org/TDriver Gitorious] ||  Petri Kiiskinen || Tatu Lahtela&lt;br /&gt;
|-&lt;br /&gt;
| Rich Core dumper || [http://meego.gitorious.org/meego-quality-assurance/rich-core Gitorious] || Carol Rus || Raimo Gratseff&lt;br /&gt;
|-&lt;br /&gt;
| Crash Reporter || [http://meego.gitorious.org/meego-quality-assurance/crash-reporter Gitorious] || Carol Rus || Raimo Gratseff&lt;br /&gt;
|-&lt;br /&gt;
| Crash Reporter settings || [http://meego.gitorious.org/meego-quality-assurance/crash-reporter-settings-public Gitorious] || Carol Rus || Raimo Gratseff&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/hat-control|Hardware Accessory for Testing (HAT)]] || [http://meego.gitorious.org/meego-quality-assurance/hat-control Gitorious] || Marko Junttila || Riku Halonen&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/QAReports|QA Reports]] || [http://meego.gitorious.org/meego-quality-assurance/qa-reports Gitorious] || Sami Hangaslammi || Jarno Keskikangas&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/Scripts_and_utils|Scripts and utils]] || [http://meego.gitorious.com/meego-quality-assurance/scripts-and-utils Gitorious] || N/A || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/TestSuite/handset-test-suite/handset-ux-test_Releases | handset_ux_tests]] || [http://meego.gitorious.com/meego-quality-assurance/handset-ux-tests Gitorious] || JessicaJi || N/A&lt;br /&gt;
|-&lt;br /&gt;
| [[Quality/QA-tools/MeeGo_Fast_Feedback_Testing|MeeGo Fast Feedback Testing (MeeGo-FFT)]] || [http://meego.gitorious.org/meego-quality-assurance/meego-testing-hudson-plugin Gitorious] || Alexey Kuznetsov || Timo Härkönen&lt;br /&gt;
|-&lt;br /&gt;
| Service OS based Flasher || [http://meego.gitorious.org/meego-quality-assurance/meego-ai-serviceos Gitorious] || Jing Wang || N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You can install Testrunner, testrunner-lite, Testplanner, OTS, Meego-ai and eat from Tools:Testing repository. The instructions for setting up the repositories can be found [[Quality/QA-tools/How_to_set_up_repositories|here]].&lt;br /&gt;
&lt;br /&gt;
See the rest of our team members and our collaboration spaces [[Quality/QA-tools#Team_Members_and_Collaboration_Spaces|below]]. If you are interested in the user experience work regarding these tools, you can find more information [[Quality/QA-tools/User experience|here]].&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The figure below tries to summarize the relations and tasks of the tools when used in test automation context.&lt;br /&gt;
&lt;br /&gt;
[[File:testautomationtools.png]]&lt;br /&gt;
&lt;br /&gt;
xfig file:[[File:qatools.fig]]&lt;br /&gt;
&lt;br /&gt;
== Release Practices ==&lt;br /&gt;
&lt;br /&gt;
Here is the workflow for QA tools release practices.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|'''Role'''&lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| Developer || Anyone who wants to participate in qa-tools development &lt;br /&gt;
|-&lt;br /&gt;
| VCS Maintainer || Component owner who has commit rights in version control system (VCS)&lt;br /&gt;
|-&lt;br /&gt;
| Package Maintainer || Integrator whose responsibility is the OBS packaging&lt;br /&gt;
|-&lt;br /&gt;
| Release Management || Third party who is responsible of trunk:testing releases(?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:Release.png]]&lt;br /&gt;
&lt;br /&gt;
Kivio file: [[File:Release.flw]]&lt;br /&gt;
&lt;br /&gt;
# Developer creates merge request(s) in gitorious.&lt;br /&gt;
# VCS Maintainer tests and accepts merge requests.&lt;br /&gt;
# VCS Maintainer checks/updates change logs.&lt;br /&gt;
# VCS Maintainer tags a version.&lt;br /&gt;
# VCS maintainer sends email to [http://lists.meego.com/pipermail/meego-qa/ meego-qa mailing list] based on the following template&lt;br /&gt;
Topic: Integration request: package-name version&lt;br /&gt;
 PACKAGE: package-name&lt;br /&gt;
 TAG: tag name&lt;br /&gt;
 URL: link to sources&lt;br /&gt;
 CHANGES: short description of changes containing bugs.meego.com bug numbers of fixed bugs&lt;br /&gt;
# Package maintainer updates the OBS package.&lt;br /&gt;
# Package maintainer tests the OBS package.&lt;br /&gt;
# If the package belongs to tools:testing and passes testing, Package Maintainer may accept it. If the package belongs to trunk:testing, Package Maintainer creates a promotional request to Release Management. (If the package belongs to both repositories, we let the Release Management set bugs fixed by the package to RELEASED state).&lt;br /&gt;
# Host side tools are updated to tools:testing after verifying functionality&lt;br /&gt;
# Package maintainer replies to meego-qa list about the actions done with the updated package. e.g. 'Updated in devel:quality and sent promotion request to testing'&lt;br /&gt;
# Release Management accepts the package. Or not. (Follow meego-packaging and meego-commits.)&lt;br /&gt;
&lt;br /&gt;
''' YouTube videos '''&lt;br /&gt;
&lt;br /&gt;
YouTube is a good way to communicate new features. You can find existing demo videos on [http://www.youtube.com/user/meegoqatools meegoqatools channel on Youtube].&lt;br /&gt;
&lt;br /&gt;
If you shoot a video to YouTube, promote it on meego-qa mailing list!&lt;br /&gt;
&lt;br /&gt;
You can find some hints how to shoot, edit, and upload a video here: [[YouTube_Hints]]&lt;br /&gt;
&lt;br /&gt;
=== Release checklist ===&lt;br /&gt;
To make sure fixes are released without delay, check that the following conditions are met&lt;br /&gt;
&lt;br /&gt;
# Change logs are updated and contain relevant references to MeeGo bugzilla&lt;br /&gt;
# Created obs request include fixes bug numbers from MeeGo bugzilla&lt;br /&gt;
# Bugzilla items listed in changes are set as resolved&lt;br /&gt;
# Spec file matches [[Packaging/Guidelines|MeeGo packaging guidelines]]&lt;br /&gt;
# Rpmlint warnings are either fixed or explained by comments in the spec file. e.g. eat packages install files into root's home and the reasoning for it needs to be explained&lt;br /&gt;
# Host side tool packages use the same source tar ball to produce debian and rpm packages&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
(Only partial, will be updated asap as we file rest of the bugs -timakima)&lt;br /&gt;
&lt;br /&gt;
The release dates defined in MeeGo Release plans [http://wiki.meego.com/Release_Engineering/Plans/1.1 1.1] and [http://wiki.meego.com/Release_Engineering/Plans/1.2 1.2]. These dates are the latest estimation. They will be updated as work progresses.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|'''Feature''' || '''Release'''&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/showdependencytree.cgi?id=12980&amp;amp;hide_resolved=0 Measurement support] || 1.2&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/showdependencytree.cgi?id=12937&amp;amp;hide_resolved=0 MCTS coverage support] || TBD&lt;br /&gt;
|-&lt;br /&gt;
| Test environment validation || TBD&lt;br /&gt;
|-&lt;br /&gt;
| Parallel testing || TBD&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/show_bug.cgi?id=12810 Easy install] || TBD&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/showdependencytree.cgi?id=12971&amp;amp;hide_resolved=0 Qt Creator integration] || TBD&lt;br /&gt;
|-&lt;br /&gt;
| [https://bugs.meego.com/showdependencytree.cgi?id=12981&amp;amp;hide_resolved=0 Events feature in automatic testing] || TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Features and Bugs ==&lt;br /&gt;
Want to report an feature idea or bug to us? - [http://bugs.meego.com/enter_bug.cgi?product=MeeGo%20Quality%20Assurance Please do it here]&lt;br /&gt;
 &lt;br /&gt;
* [http://bugs.meego.com/buglist.cgi?query_format=advanced&amp;amp;order=Importance&amp;amp;bug_status=ASSIGNED&amp;amp;component=eat&amp;amp;component=min&amp;amp;component=ots&amp;amp;component=TDriver&amp;amp;component=testdefinition&amp;amp;component=Testplanner&amp;amp;component=testrunner%20UI&amp;amp;component=testrunner-lite&amp;amp;classification=MeeGo%20Projects&amp;amp;product=Meego%20Quality%20Assurance Assigned bugs and features - Working on it]&lt;br /&gt;
* [http://bugs.meego.com/buglist.cgi?query_format=advanced&amp;amp;order=Importance&amp;amp;bug_status=NEW&amp;amp;bug_status=NEEDINFO&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=WAITING%20FOR%20UPSTREAM&amp;amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;amp;component=eat&amp;amp;component=min&amp;amp;component=ots&amp;amp;component=TDriver&amp;amp;component=testdefinition&amp;amp;component=Testplanner&amp;amp;component=testrunner%20UI&amp;amp;component=testrunner-lite&amp;amp;classification=MeeGo%20Projects&amp;amp;product=MeeGo%20Quality%20Assurance All open features and bugs in priority order]&lt;br /&gt;
&lt;br /&gt;
Bugzilla workflow: [[Bugzilla/how-report-bugs]]&lt;br /&gt;
&lt;br /&gt;
We'd like to have the best guess of the moment about the delivery of features. Remember to set the target build of the bug you're working with according to: [[Release Engineering/Plans/1.1]] and [[Release Engineering/Plans/1.2]]&lt;br /&gt;
&lt;br /&gt;
When you add a new bug, add correct dependencies to the corresponding [[Quality/QA-tools#Roadmap|roadmap]] meta bug.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
This section will contain links to various guides and user documentation. See [[Quality/QA-tools#Tools_and_Maintainers|the wiki pages of the tools]] for tool-specific documentation.&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/Autotest-guide|Autotest-Guide]]&lt;br /&gt;
* [[Quality/QA-tools/How_to_set_up_repositories|How to set up the repositories that are needed to install QA tools]]&lt;br /&gt;
&lt;br /&gt;
== Design/ Planning ==&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/MCTS test automation design|MCTS Test Automation]] (QA Tools support for MCTS)&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
&lt;br /&gt;
All meetings will be held in &amp;lt;code&amp;gt;#meego-meeting&amp;lt;/code&amp;gt; on &amp;lt;code&amp;gt;irc.freenode.net&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Team meetings&lt;br /&gt;
** QA tools team meetings will be held on need basis for specific topics. This was agreed in [http://trac.tspre.org/meetbot/meego-meeting/2010/meego-meeting.2010-12-07-11.59.html the last weekly meeting held on December 7th 2010]&lt;br /&gt;
** [[Quality/QA-tools/Meetings|Meeting agendas and minutes]]&lt;br /&gt;
&lt;br /&gt;
* Architecture meetings&lt;br /&gt;
** Architecture meetings will be held on-demand basis.&lt;br /&gt;
** [[Quality/QA-tools/Arch-Meetings|Meeting agendas and minutes]]&lt;br /&gt;
&lt;br /&gt;
* Workshops&lt;br /&gt;
** Face-2-face meetings within the team.&lt;br /&gt;
** [[Quality/QA-tools/Workshops|Meeting agendas and minutes]]&lt;br /&gt;
&lt;br /&gt;
== Team Members and Collaboration Spaces==&lt;br /&gt;
&lt;br /&gt;
The current team members are (in no particular order):&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| '''Name'''&lt;br /&gt;
| '''Role'''&lt;br /&gt;
| '''Affiliation'''&lt;br /&gt;
| '''IRC nickname'''&lt;br /&gt;
|- &lt;br /&gt;
| Ville Ilvonen || Team lead (act.) || Nokia || vilvo&lt;br /&gt;
|-&lt;br /&gt;
| Riku Halonen || Team member || Nokia || rikhalon&lt;br /&gt;
|-&lt;br /&gt;
| Kari Sievi || Team member || Digia || sievi&lt;br /&gt;
|-&lt;br /&gt;
| Timo Härkönen || Team member || Digia || timoph  &lt;br /&gt;
|-&lt;br /&gt;
| Carol Rus || Team member || Digia || carrus  &lt;br /&gt;
|-&lt;br /&gt;
| Sami Lahtinen || Team member || Digia || slahtinen  &lt;br /&gt;
|-&lt;br /&gt;
| Raimo Gratseff || Team member || Digia || rrraimo  &lt;br /&gt;
|-&lt;br /&gt;
| Kyösti Ranto || Team member || Digia || kyranto&lt;br /&gt;
|-&lt;br /&gt;
| Arto Sinnelä || Team member || Digia || asinnela&lt;br /&gt;
|-&lt;br /&gt;
| Joonas Kylänpää || Team member || Digia || Kaadlajk&lt;br /&gt;
|-&lt;br /&gt;
| Timo Mäkimattila || Team member || Digia || timakima&lt;br /&gt;
|-&lt;br /&gt;
| Elias Luttinen || Team member || Digia || eluttine&lt;br /&gt;
|-&lt;br /&gt;
| Ville Niutanen || Team member || Digia || Villen&lt;br /&gt;
|-&lt;br /&gt;
| Esa-Pekka Miettinen || Team member || Digia || E-P&lt;br /&gt;
|-&lt;br /&gt;
| Vesa Poikajärvi || Team member || Digia || vesse&lt;br /&gt;
|-  &lt;br /&gt;
| Alexey Kuznetsov || Team member || Digia || alkuznet&lt;br /&gt;
|-  &lt;br /&gt;
| Sergey Timofeev || Team member || Digia || setimofe&lt;br /&gt;
|-  &lt;br /&gt;
| Daniil Chuiko || Team member || Digia || dachuiko&lt;br /&gt;
|-&lt;br /&gt;
| Jarmo Savinen || Team member || Digia || jasavi&lt;br /&gt;
|-&lt;br /&gt;
| Sampo Saaristo || Team member || Sofica || sampos&lt;br /&gt;
|-  &lt;br /&gt;
| Ling Yu || Team member || Intel || -&lt;br /&gt;
|-&lt;br /&gt;
| Jing Wang || Team member || Intel || -&lt;br /&gt;
|-  &lt;br /&gt;
| Teemu Vainio || Team member || Ixonos || tvainio&lt;br /&gt;
|-  &lt;br /&gt;
| Tuomo Mäkinen || Team member || Ixonos || -&lt;br /&gt;
|-  &lt;br /&gt;
| Jouni Leppäkases || Team member || Ixonos || jouni&lt;br /&gt;
|-  &lt;br /&gt;
| Tom Galvin || Team member || Ixonos || -&lt;br /&gt;
|-&lt;br /&gt;
| Jarno Keskikangas || Team member || Leonidas || jakeskik&lt;br /&gt;
|- &lt;br /&gt;
| Janne Hietamäki || Team member || Leonidas || _janne&lt;br /&gt;
|- &lt;br /&gt;
| Sami Hangaslammi || Team member || Leonidas || sahangas&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Team communication is in English. Our collaboration spaces are:&lt;br /&gt;
* [http://lists.meego.com/listinfo/meego-qa meego-qa@lists.meego.com mailing list]&lt;br /&gt;
* [http://lists.meego.com/listinfo/meego-dev meego-dev@meego.com mailing list], please prefix with 'QA-tools' for team related topics.&lt;br /&gt;
** Please also poke team members or Ville Ilvonen either by email or on IRC because of high traffic @ meego-dev&lt;br /&gt;
* [http://webchat.freenode.net/?channels=meego-qa-tools #meego-qa-tools IRC channel on irc.freenode.net]&lt;br /&gt;
** [http://timoph.fi/qa-tools-stats/ #meego-qa-tools statistics]&lt;br /&gt;
** [http://timoph.fi/qa-tools-logs/ #meego-qa-tools irc logs]&lt;br /&gt;
* Gitorious team, http://meego.gitorious.org/meego-quality-assurance/&lt;br /&gt;
* [http://www.youtube.com/user/meegoqatools Youtube channel for demo videos]&lt;br /&gt;
* [http://meegoqatools.wordpress.com/ QA-tools team blog]&lt;br /&gt;
* MeeGo OBS - devel:quality&lt;br /&gt;
* This wiki area&lt;br /&gt;
* [[Quality/QA-tools/ServiceOS|ServiceOS]]&lt;br /&gt;
* [[Quality/QA-tools/PXEInstall|PXEInstallation]]&lt;br /&gt;
&lt;br /&gt;
[[Category:QA]]&lt;/div&gt;</summary>
		<author><name>Slahtinen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation</id>
		<title>Quality/QA-tools/MCTS test automation design/poc-implementation</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation"/>
				<updated>2010-12-29T08:40:28Z</updated>
		
		<summary type="html">&lt;p&gt;Slahtinen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Required components =&lt;br /&gt;
* [http://qpid.apache.org/ Qpid AMQP message broker and client libary]&lt;br /&gt;
* [http://gitorious.org/qpid-c-wrapper/libcqpid Experimental C wrapper for Qpid client library]&lt;br /&gt;
* [http://oss.metaparadigm.com/json-c/ JSON C implementation]&lt;br /&gt;
* testrunner-lite&lt;br /&gt;
&lt;br /&gt;
=== Alternative AMQP implementation ===&lt;br /&gt;
* [http://www.openamq.org/ OpenAMQ message broker and client API]&lt;br /&gt;
&lt;br /&gt;
== Building and installing required components ==&lt;br /&gt;
== Qpid ==&lt;br /&gt;
To ensure successful building of Qpid you should install package libboost-all-dev. Check also file INSTALL of Qpid release for other prerequisites.&lt;br /&gt;
* Download [http://mirror.eunet.fi/apache//qpid/0.8/qpid-cpp-0.8.tar.gz sources]&lt;br /&gt;
 tar xzvf qpid-cpp-0.8.tar.gz&lt;br /&gt;
 cd qpidc-0.8&lt;br /&gt;
 ./configure --without-sasl&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
== libcqpid C-wrapper for Qpid ==&lt;br /&gt;
Requires Qpid client libraries.&lt;br /&gt;
 git clone git://gitorious.org/qpid-c-wrapper/libcqpid.git&lt;br /&gt;
 cd libcqpid&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
== JSON ==&lt;br /&gt;
* Download [http://oss.metaparadigm.com/json-c/json-c-0.9.tar.gz sources]&lt;br /&gt;
 tar xzvf json-c-0.9.tar.gz&lt;br /&gt;
 cd json-c-0.9&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo ldconfig&lt;br /&gt;
=== OpenAMQ (not used anymore) ===&lt;br /&gt;
This implementation was tested before Qpid.&lt;br /&gt;
* Download [http://download.imatix.com/openamq/stable/OpenAMQ-1.3d1.tar.gz sources]&lt;br /&gt;
 tar xzvf OpenAMQ-1.3d1.tar.gz&lt;br /&gt;
 cd OpenAMQ-1.3d1&lt;br /&gt;
 IBASE=$PWD/ibase sh build.sh&lt;br /&gt;
We need to install archives and headers to system directories&lt;br /&gt;
 sudo mkdir /usr/local/openamq&lt;br /&gt;
 sudo mkdir /usr/local/openamq/lib&lt;br /&gt;
 sudo mkdir /usr/local/openamq/include&lt;br /&gt;
 sudo cp ibase/lib/*.a /usr/local/openamq/lib&lt;br /&gt;
 sudo cp ibase/include/*.h /usr/local/openamq/include&lt;br /&gt;
&lt;br /&gt;
= Testrunner-lite =&lt;br /&gt;
Testrunner-lite using libcqpid and JSON for event messaging can be found from [http://meego.gitorious.org/~slahtinen/meego-quality-assurance/slahtinens-testrunner-lite a testrunner-lite clone] in branch multidut.&lt;br /&gt;
&lt;br /&gt;
In this proof of concepts, a separate testrunner-lite processes are used to run tests on each DUT. This produces multiple result XML files and requires a tool which is able to combine the results.&lt;br /&gt;
&lt;br /&gt;
= Events =&lt;br /&gt;
JSON formatted events structures are carried in body of AMQP message. Each event should have at least the following fields:&lt;br /&gt;
* name (string)&lt;br /&gt;
Example event with additional data:&lt;br /&gt;
 { &lt;br /&gt;
   &amp;quot;name&amp;quot; : &amp;quot;event1&amp;quot;,&lt;br /&gt;
   &amp;quot;data&amp;quot; :&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;description&amp;quot; : &amp;quot;Measurement value&amp;quot;,&lt;br /&gt;
     &amp;quot;value&amp;quot; : 123&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Status 20.12.2010 ==&lt;br /&gt;
Testrunner-lite is able to send and receive events through OpenAMQ message broker. Event data is serialized in JSON format and data is carried in the body of AMQP message.&lt;br /&gt;
&lt;br /&gt;
Currently special test steps (ones with event attribute) can be used to send an event or wait for an event. This way execution of two distinct test runs can be synchronized. Also test steps run on DUT may generate/receive events, thus enabling communication between testrunner-lite or other DUTs.&lt;br /&gt;
&lt;br /&gt;
== Status 28.12.2010 ==&lt;br /&gt;
Minimal implementation of Qpid cleint library C wrapper has been done. Event tags and libcqpid usage implementation work in testrunner-lite is in progress.&lt;/div&gt;</summary>
		<author><name>Slahtinen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation</id>
		<title>Quality/QA-tools/MCTS test automation design/poc-implementation</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation"/>
				<updated>2010-12-29T08:39:17Z</updated>
		
		<summary type="html">&lt;p&gt;Slahtinen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Required components =&lt;br /&gt;
* [http://qpid.apache.org/ Qpid AMQP message broker and client libary]&lt;br /&gt;
* [http://gitorious.org/qpid-c-wrapper/libcqpid Experimental C wrapper for Qpid client library]&lt;br /&gt;
* [http://oss.metaparadigm.com/json-c/ JSON C implementation]&lt;br /&gt;
* testrunner-lite&lt;br /&gt;
&lt;br /&gt;
=== Alternative AMQP implementation ===&lt;br /&gt;
* [http://www.openamq.org/ OpenAMQ message broker and client API]&lt;br /&gt;
&lt;br /&gt;
== Building and installing required components ==&lt;br /&gt;
== Qpid ==&lt;br /&gt;
To ensure successful building of Qpid you should install package libboost-all-dev. Check also file INSTALL of Qpid release for other prerequisites.&lt;br /&gt;
* Download [http://mirror.eunet.fi/apache//qpid/0.8/qpid-cpp-0.8.tar.gz sources]&lt;br /&gt;
 tar xzvf qpid-cpp-0.8.tar.gz&lt;br /&gt;
 cd qpidc-0.8&lt;br /&gt;
 ./configure --without-sasl&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
== libcqpid C-wrapper for Qpid ==&lt;br /&gt;
Requires Qpid client libraries.&lt;br /&gt;
 git clone git://gitorious.org/qpid-c-wrapper/libcqpid.git&lt;br /&gt;
 cd libcqpid&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
== JSON ==&lt;br /&gt;
* Download [http://oss.metaparadigm.com/json-c/json-c-0.9.tar.gz sources]&lt;br /&gt;
 tar xzvf json-c-0.9.tar.gz&lt;br /&gt;
 cd json-c-0.9&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo ldconfig&lt;br /&gt;
=== OpenAMQ (not used anymore) ===&lt;br /&gt;
This implementation was tested before Qpid.&lt;br /&gt;
* Download [http://download.imatix.com/openamq/stable/OpenAMQ-1.3d1.tar.gz sources]&lt;br /&gt;
 tar xzvf OpenAMQ-1.3d1.tar.gz&lt;br /&gt;
 cd OpenAMQ-1.3d1&lt;br /&gt;
 IBASE=$PWD/ibase sh build.sh&lt;br /&gt;
We need to install archives and headers to system directories&lt;br /&gt;
 sudo mkdir /usr/local/openamq&lt;br /&gt;
 sudo mkdir /usr/local/openamq/lib&lt;br /&gt;
 sudo mkdir /usr/local/openamq/include&lt;br /&gt;
 sudo cp ibase/lib/*.a /usr/local/openamq/lib&lt;br /&gt;
 sudo cp ibase/include/*.h /usr/local/openamq/include&lt;br /&gt;
&lt;br /&gt;
= Testrunner-lite =&lt;br /&gt;
Testrunner-lite using libcqpid and JSON for event messaging can be found from [http://meego.gitorious.org/~slahtinen/meego-quality-assurance/slahtinens-testrunner-lite a testrunner-lite clone] in branch multidut.&lt;br /&gt;
&lt;br /&gt;
In this proof of concepts, a separate testrunner-lite processes are used to run tests on each DUT. This produces multiple result XML files and requires a tool which is able to combine the results.&lt;br /&gt;
&lt;br /&gt;
== Status 20.12.2010 ==&lt;br /&gt;
Testrunner-lite is able to send and receive events through OpenAMQ message broker. Event data is serialized in JSON format and data is carried in the body of AMQP message.&lt;br /&gt;
&lt;br /&gt;
Currently special test steps (ones with event attribute) can be used to send an event or wait for an event. This way execution of two distinct test runs can be synchronized. Also test steps run on DUT may generate/receive events, thus enabling communication between testrunner-lite or other DUTs.&lt;br /&gt;
&lt;br /&gt;
== Status 28.12.2010 ==&lt;br /&gt;
Minimal implementation of Qpid cleint library C wrapper has been done. Event tags and libcqpid usage implementation work in testrunner-lite is in progress.&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
JSON formatted events structures are carried in body of AMQP message. Each event should have at least the following fields:&lt;br /&gt;
* name (string)&lt;br /&gt;
Example event with additional data:&lt;br /&gt;
 { &lt;br /&gt;
   &amp;quot;name&amp;quot; : &amp;quot;event1&amp;quot;,&lt;br /&gt;
   &amp;quot;data&amp;quot; :&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;description&amp;quot; : &amp;quot;Measurement value&amp;quot;,&lt;br /&gt;
     &amp;quot;value&amp;quot; : 123&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Slahtinen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation</id>
		<title>Quality/QA-tools/MCTS test automation design/poc-implementation</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation"/>
				<updated>2010-12-28T13:23:13Z</updated>
		
		<summary type="html">&lt;p&gt;Slahtinen: Qpid and libcqpid changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Required components =&lt;br /&gt;
* [http://qpid.apache.org/ Qpid AMQP message broker and client libary]&lt;br /&gt;
* [http://gitorious.org/qpid-c-wrapper/libcqpid Experimental C wrapper for Qpid client library]&lt;br /&gt;
* [http://oss.metaparadigm.com/json-c/ JSON C implementation]&lt;br /&gt;
* testrunner-lite&lt;br /&gt;
&lt;br /&gt;
=== Alternative AMQP implementation ===&lt;br /&gt;
* [http://www.openamq.org/ OpenAMQ message broker and client API]&lt;br /&gt;
&lt;br /&gt;
== Building and installing required components ==&lt;br /&gt;
== Qpid ==&lt;br /&gt;
To ensure successful building of Qpid you should install package libboost-all-dev. Check also file INSTALL of Qpid release for other prerequisites.&lt;br /&gt;
* Download [http://mirror.eunet.fi/apache//qpid/0.8/qpid-cpp-0.8.tar.gz sources]&lt;br /&gt;
 tar xzvf qpid-cpp-0.8.tar.gz&lt;br /&gt;
 cd qpidc-0.8&lt;br /&gt;
 ./configure --without-sasl&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
== libcqpid C-wrapper for Qpid ==&lt;br /&gt;
Requires Qpid client libraries.&lt;br /&gt;
 git clone git://gitorious.org/qpid-c-wrapper/libcqpid.git&lt;br /&gt;
 cd libcqpid&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
== JSON ==&lt;br /&gt;
* Download [http://oss.metaparadigm.com/json-c/json-c-0.9.tar.gz sources]&lt;br /&gt;
 tar xzvf json-c-0.9.tar.gz&lt;br /&gt;
 cd json-c-0.9&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo ldconfig&lt;br /&gt;
=== OpenAMQ (not used anymore) ===&lt;br /&gt;
This implementation was tested before Qpid.&lt;br /&gt;
* Download [http://download.imatix.com/openamq/stable/OpenAMQ-1.3d1.tar.gz sources]&lt;br /&gt;
 tar xzvf OpenAMQ-1.3d1.tar.gz&lt;br /&gt;
 cd OpenAMQ-1.3d1&lt;br /&gt;
 IBASE=$PWD/ibase sh build.sh&lt;br /&gt;
We need to install archives and headers to system directories&lt;br /&gt;
 sudo mkdir /usr/local/openamq&lt;br /&gt;
 sudo mkdir /usr/local/openamq/lib&lt;br /&gt;
 sudo mkdir /usr/local/openamq/include&lt;br /&gt;
 sudo cp ibase/lib/*.a /usr/local/openamq/lib&lt;br /&gt;
 sudo cp ibase/include/*.h /usr/local/openamq/include&lt;br /&gt;
&lt;br /&gt;
= Testrunner-lite =&lt;br /&gt;
Testrunner-lite using libcqpid and JSON for event messaging can be found from [http://meego.gitorious.org/~slahtinen/meego-quality-assurance/slahtinens-testrunner-lite a testrunner-lite clone] in branch multidut.&lt;br /&gt;
&lt;br /&gt;
In this proof of concepts, a separate testrunner-lite processes are used to run tests on each DUT. This produces multiple result XML files and requires a tool which is able to combine the results.&lt;br /&gt;
&lt;br /&gt;
== Status 20.12.2010 ==&lt;br /&gt;
Testrunner-lite is able to send and receive events through OpenAMQ message broker. Event data is serialized in JSON format and data is carried in the body of AMQP message.&lt;br /&gt;
&lt;br /&gt;
Currently special test steps (ones with event attribute) can be used to send an event or wait for an event. This way execution of two distinct test runs can be synchronized. Also test steps run on DUT may generate/receive events, thus enabling communication between testrunner-lite or other DUTs.&lt;br /&gt;
&lt;br /&gt;
== Status 28.12.2010 ==&lt;br /&gt;
Minimal implementation of Qpid cleint library C wrapper has been done. Event tags and libcqpid usage implementation work in testrunner-lite is in progress.&lt;/div&gt;</summary>
		<author><name>Slahtinen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation</id>
		<title>Quality/QA-tools/MCTS test automation design/poc-implementation</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation"/>
				<updated>2010-12-20T13:02:27Z</updated>
		
		<summary type="html">&lt;p&gt;Slahtinen: /* Current status 20.12.2010 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Required components =&lt;br /&gt;
* [http://www.openamq.org/ OpenAMQ message broker and client API]&lt;br /&gt;
* [http://oss.metaparadigm.com/json-c/ JSON C implementation]&lt;br /&gt;
* testrunner-lite&lt;br /&gt;
&lt;br /&gt;
== Building and installing required components ==&lt;br /&gt;
== OpenAMQ ==&lt;br /&gt;
* Download [http://download.imatix.com/openamq/stable/OpenAMQ-1.3d1.tar.gz sources]&lt;br /&gt;
 tar xzvf OpenAMQ-1.3d1.tar.gz&lt;br /&gt;
 cd OpenAMQ-1.3d1&lt;br /&gt;
 IBASE=$PWD/ibase sh build.sh&lt;br /&gt;
We need to install archives and headers to system directories&lt;br /&gt;
 sudo mkdir /usr/local/openamq&lt;br /&gt;
 sudo mkdir /usr/local/openamq/lib&lt;br /&gt;
 sudo mkdir /usr/local/openamq/include&lt;br /&gt;
 sudo cp ibase/lib/*.a /usr/local/openamq/lib&lt;br /&gt;
 sudo cp ibase/include/*.h /usr/local/openamq/include&lt;br /&gt;
== JSON ==&lt;br /&gt;
* Download [http://oss.metaparadigm.com/json-c/json-c-0.9.tar.gz sources]&lt;br /&gt;
 tar xzvf json-c-0.9.tar.gz&lt;br /&gt;
 cd json-c-0.9&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo ldconfig&lt;br /&gt;
= Testrunner-lite =&lt;br /&gt;
Testrunner-lite using OpenAMQ and JSON for event messaging can be found from [http://meego.gitorious.org/~slahtinen/meego-quality-assurance/slahtinens-testrunner-lite a testrunner-lite clone] in branch multidut.&lt;br /&gt;
&lt;br /&gt;
In this proof of concepts, a separate testrunner-lite processes are used to run tests on each DUT. This produces multiple result XML files and requires a tool which is able to combine the results.&lt;br /&gt;
&lt;br /&gt;
== Current status 20.12.2010 ==&lt;br /&gt;
Testrunner-lite is able to send and receive events through OpenAMQ message broker. Event data is serialized in JSON format and data is carried in the body of AMQP message.&lt;br /&gt;
&lt;br /&gt;
Currently special test steps (ones with event attribute) can be used to send an event or wait for an event. This way execution of two distinct test runs can be synchronized. Also test steps run on DUT may generate/receive events, thus enabling communication between testrunner-lite or other DUTs.&lt;/div&gt;</summary>
		<author><name>Slahtinen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation</id>
		<title>Quality/QA-tools/MCTS test automation design/poc-implementation</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation"/>
				<updated>2010-12-20T12:59:33Z</updated>
		
		<summary type="html">&lt;p&gt;Slahtinen: /* Testrunner-lite */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Required components =&lt;br /&gt;
* [http://www.openamq.org/ OpenAMQ message broker and client API]&lt;br /&gt;
* [http://oss.metaparadigm.com/json-c/ JSON C implementation]&lt;br /&gt;
* testrunner-lite&lt;br /&gt;
&lt;br /&gt;
== Building and installing required components ==&lt;br /&gt;
== OpenAMQ ==&lt;br /&gt;
* Download [http://download.imatix.com/openamq/stable/OpenAMQ-1.3d1.tar.gz sources]&lt;br /&gt;
 tar xzvf OpenAMQ-1.3d1.tar.gz&lt;br /&gt;
 cd OpenAMQ-1.3d1&lt;br /&gt;
 IBASE=$PWD/ibase sh build.sh&lt;br /&gt;
We need to install archives and headers to system directories&lt;br /&gt;
 sudo mkdir /usr/local/openamq&lt;br /&gt;
 sudo mkdir /usr/local/openamq/lib&lt;br /&gt;
 sudo mkdir /usr/local/openamq/include&lt;br /&gt;
 sudo cp ibase/lib/*.a /usr/local/openamq/lib&lt;br /&gt;
 sudo cp ibase/include/*.h /usr/local/openamq/include&lt;br /&gt;
== JSON ==&lt;br /&gt;
* Download [http://oss.metaparadigm.com/json-c/json-c-0.9.tar.gz sources]&lt;br /&gt;
 tar xzvf json-c-0.9.tar.gz&lt;br /&gt;
 cd json-c-0.9&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo ldconfig&lt;br /&gt;
= Testrunner-lite =&lt;br /&gt;
Testrunner-lite using OpenAMQ and JSON for event messaging can be found from [http://meego.gitorious.org/~slahtinen/meego-quality-assurance/slahtinens-testrunner-lite a testrunner-lite clone] in branch multidut.&lt;br /&gt;
&lt;br /&gt;
In this proof of concepts, a separate testrunner-lite processes are used to run tests on each DUT. This produces multiple result XML files and requires a tool which is able to combine the results.&lt;br /&gt;
&lt;br /&gt;
== Current status 20.12.2010 ==&lt;br /&gt;
Testrunner-lite is able to send and receive events through OpenAMQ message broker. Event data is serialized in JSON format and data is carried in body of AMQP message.&lt;br /&gt;
&lt;br /&gt;
Currently special test steps (ones with event attribute) can be used to send an event or wait for event. This way execution of two distinct test runs can be synchronized. Also test steps may generate/receive events.&lt;/div&gt;</summary>
		<author><name>Slahtinen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation</id>
		<title>Quality/QA-tools/MCTS test automation design/poc-implementation</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation"/>
				<updated>2010-12-20T12:45:42Z</updated>
		
		<summary type="html">&lt;p&gt;Slahtinen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Required components =&lt;br /&gt;
* [http://www.openamq.org/ OpenAMQ message broker and client API]&lt;br /&gt;
* [http://oss.metaparadigm.com/json-c/ JSON C implementation]&lt;br /&gt;
* testrunner-lite&lt;br /&gt;
&lt;br /&gt;
== Building and installing required components ==&lt;br /&gt;
== OpenAMQ ==&lt;br /&gt;
* Download [http://download.imatix.com/openamq/stable/OpenAMQ-1.3d1.tar.gz sources]&lt;br /&gt;
 tar xzvf OpenAMQ-1.3d1.tar.gz&lt;br /&gt;
 cd OpenAMQ-1.3d1&lt;br /&gt;
 IBASE=$PWD/ibase sh build.sh&lt;br /&gt;
We need to install archives and headers to system directories&lt;br /&gt;
 sudo mkdir /usr/local/openamq&lt;br /&gt;
 sudo mkdir /usr/local/openamq/lib&lt;br /&gt;
 sudo mkdir /usr/local/openamq/include&lt;br /&gt;
 sudo cp ibase/lib/*.a /usr/local/openamq/lib&lt;br /&gt;
 sudo cp ibase/include/*.h /usr/local/openamq/include&lt;br /&gt;
== JSON ==&lt;br /&gt;
* Download [http://oss.metaparadigm.com/json-c/json-c-0.9.tar.gz sources]&lt;br /&gt;
 tar xzvf json-c-0.9.tar.gz&lt;br /&gt;
 cd json-c-0.9&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo ldconfig&lt;br /&gt;
= Testrunner-lite =&lt;br /&gt;
Testrunner-lite using OpenAMQ and JSON for event messaging can be found from [http://meego.gitorious.org/~slahtinen/meego-quality-assurance/slahtinens-testrunner-lite a testrunner-lite clone] in branch multidut.&lt;br /&gt;
&lt;br /&gt;
In this proof of concepts, a separate testrunner-lite processes are used to run tests on each DUT. This produces multiple result XML files and requires a tool which is able to combine the results.&lt;/div&gt;</summary>
		<author><name>Slahtinen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation</id>
		<title>Quality/QA-tools/MCTS test automation design/poc-implementation</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation"/>
				<updated>2010-12-20T12:38:20Z</updated>
		
		<summary type="html">&lt;p&gt;Slahtinen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Used components =&lt;br /&gt;
* [http://www.openamq.org/ OpenAMQ message broker and client API]&lt;br /&gt;
* [http://oss.metaparadigm.com/json-c/ JSON C implementation]&lt;br /&gt;
&lt;br /&gt;
= Building and installing required components =&lt;br /&gt;
== OpenAMQ ==&lt;br /&gt;
* Download [http://download.imatix.com/openamq/stable/OpenAMQ-1.3d1.tar.gz sources]&lt;br /&gt;
 tar xzvf OpenAMQ-1.3d1.tar.gz&lt;br /&gt;
 cd OpenAMQ-1.3d1&lt;br /&gt;
 IBASE=$PWD/ibase sh build.sh&lt;br /&gt;
We need to install archives and headers to system directories&lt;br /&gt;
 sudo mkdir /usr/local/openamq&lt;br /&gt;
 sudo mkdir /usr/local/openamq/lib&lt;br /&gt;
 sudo mkdir /usr/local/openamq/include&lt;br /&gt;
 sudo cp ibase/lib/*.a /usr/local/openamq/lib&lt;br /&gt;
 sudo cp ibase/include/*.h /usr/local/openamq/include&lt;br /&gt;
== JSON ==&lt;br /&gt;
* Download [http://oss.metaparadigm.com/json-c/json-c-0.9.tar.gz sources]&lt;br /&gt;
 tar xzvf json-c-0.9.tar.gz&lt;br /&gt;
 cd json-c-0.9&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo ldconfig&lt;br /&gt;
= Testrunner-lite =&lt;br /&gt;
Testrunner-lite using OpenAMQ and JSON for event messaging can be found from [http://meego.gitorious.org/~slahtinen/meego-quality-assurance/slahtinens-testrunner-lite a testrunner-lite clone] in branch multidut.&lt;/div&gt;</summary>
		<author><name>Slahtinen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation</id>
		<title>Quality/QA-tools/MCTS test automation design/poc-implementation</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation"/>
				<updated>2010-12-20T12:36:37Z</updated>
		
		<summary type="html">&lt;p&gt;Slahtinen: /* Testrunner-lite */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Used components =&lt;br /&gt;
* [http://www.openamq.org/ OpenAMQ message broker and client API]&lt;br /&gt;
* [http://oss.metaparadigm.com/json-c/ JSON C implementation]&lt;br /&gt;
&lt;br /&gt;
= Building and installing required components =&lt;br /&gt;
== OpenAMQ ==&lt;br /&gt;
* Download [http://download.imatix.com/openamq/stable/OpenAMQ-1.3d1.tar.gz sources]&lt;br /&gt;
* tar xzvf OpenAMQ-1.3d1.tar.gz&lt;br /&gt;
* cd OpenAMQ-1.3d1&lt;br /&gt;
* IBASE=$PWD/ibase sh build.sh&lt;br /&gt;
We need to install archives and headers to system directories&lt;br /&gt;
* sudo mkdir /usr/local/openamq&lt;br /&gt;
* sudo mkdir /usr/local/openamq/lib&lt;br /&gt;
* sudo mkdir /usr/local/openamq/include&lt;br /&gt;
* sudo cp ibase/lib/*.a /usr/local/openamq/lib&lt;br /&gt;
* sudo cp ibase/include/*.h /usr/local/openamq/include&lt;br /&gt;
== JSON ==&lt;br /&gt;
Download [http://oss.metaparadigm.com/json-c/json-c-0.9.tar.gz sources]&lt;br /&gt;
* tar xzvf json-c-0.9.tar.gz&lt;br /&gt;
* cd json-c-0.9&lt;br /&gt;
* ./configure&lt;br /&gt;
* make&lt;br /&gt;
* sudo make install&lt;br /&gt;
* sudo ldconfig&lt;br /&gt;
= Testrunner-lite =&lt;br /&gt;
Testrunner-lite using OpenAMQ and JSON for event messaging can be found from [http://meego.gitorious.org/~slahtinen/meego-quality-assurance/slahtinens-testrunner-lite a testrunner-lite clone] in branch multidut.&lt;/div&gt;</summary>
		<author><name>Slahtinen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation</id>
		<title>Quality/QA-tools/MCTS test automation design/poc-implementation</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation"/>
				<updated>2010-12-20T12:35:30Z</updated>
		
		<summary type="html">&lt;p&gt;Slahtinen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Used components =&lt;br /&gt;
* [http://www.openamq.org/ OpenAMQ message broker and client API]&lt;br /&gt;
* [http://oss.metaparadigm.com/json-c/ JSON C implementation]&lt;br /&gt;
&lt;br /&gt;
= Building and installing required components =&lt;br /&gt;
== OpenAMQ ==&lt;br /&gt;
* Download [http://download.imatix.com/openamq/stable/OpenAMQ-1.3d1.tar.gz sources]&lt;br /&gt;
* tar xzvf OpenAMQ-1.3d1.tar.gz&lt;br /&gt;
* cd OpenAMQ-1.3d1&lt;br /&gt;
* IBASE=$PWD/ibase sh build.sh&lt;br /&gt;
We need to install archives and headers to system directories&lt;br /&gt;
* sudo mkdir /usr/local/openamq&lt;br /&gt;
* sudo mkdir /usr/local/openamq/lib&lt;br /&gt;
* sudo mkdir /usr/local/openamq/include&lt;br /&gt;
* sudo cp ibase/lib/*.a /usr/local/openamq/lib&lt;br /&gt;
* sudo cp ibase/include/*.h /usr/local/openamq/include&lt;br /&gt;
== JSON ==&lt;br /&gt;
Download [http://oss.metaparadigm.com/json-c/json-c-0.9.tar.gz sources]&lt;br /&gt;
* tar xzvf json-c-0.9.tar.gz&lt;br /&gt;
* cd json-c-0.9&lt;br /&gt;
* ./configure&lt;br /&gt;
* make&lt;br /&gt;
* sudo make install&lt;br /&gt;
* sudo ldconfig&lt;br /&gt;
= Testrunner-lite =&lt;br /&gt;
Testrunner-lite using OpenAMQ and JSON for event messaging can be found from [http://meego.gitorious.org/~slahtinen/meego-quality-assurance/slahtinens a testrunner-lite clone] in branch multidut.&lt;/div&gt;</summary>
		<author><name>Slahtinen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation</id>
		<title>Quality/QA-tools/MCTS test automation design/poc-implementation</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design/poc-implementation"/>
				<updated>2010-12-20T12:30:36Z</updated>
		
		<summary type="html">&lt;p&gt;Slahtinen: Created page with &amp;quot;= Used components = * [http://www.openamq.org/ OpenAMQ message broker and client API] * [http://oss.metaparadigm.com/json-c/ JSON C implementation]  = Building and installing req…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Used components =&lt;br /&gt;
* [http://www.openamq.org/ OpenAMQ message broker and client API]&lt;br /&gt;
* [http://oss.metaparadigm.com/json-c/ JSON C implementation]&lt;br /&gt;
&lt;br /&gt;
= Building and installing required components =&lt;br /&gt;
== OpenAMQ ==&lt;br /&gt;
* Download [http://download.imatix.com/openamq/stable/OpenAMQ-1.3d1.tar.gz&lt;br /&gt;
 sources]&lt;br /&gt;
* tar xzvf OpenAMQ-1.3d1.tar.gz&lt;br /&gt;
* cd OpenAMQ-1.3d1&lt;br /&gt;
* IBASE=$PWD/ibase sh build.sh&lt;br /&gt;
We need to install archives and headers to system directories&lt;br /&gt;
* sudo mkdir /usr/local/openamq&lt;br /&gt;
* sudo mkdir /usr/local/openamq/lib&lt;br /&gt;
* sudo mkdir /usr/local/openamq/include&lt;br /&gt;
* sudo cp ibase/lib/*.a /usr/local/openamq/lib&lt;br /&gt;
* sudo cp ibase/include/*.h /usr/local/openamq/include&lt;br /&gt;
== JSON ==&lt;br /&gt;
Download [http://oss.metaparadigm.com/json-c/json-c-0.9.tar.gz&lt;br /&gt;
 sources]&lt;br /&gt;
* tar xzvf json-c-0.9.tar.gz&lt;br /&gt;
* cd json-c-0.9&lt;br /&gt;
* ./configure&lt;br /&gt;
* make&lt;br /&gt;
* sudo make install&lt;br /&gt;
* sudo ldconfig&lt;br /&gt;
= Testrunner-lite&lt;br /&gt;
Testrunner-lite using OpenAMQ and JSON for event messaging can be found from [http://meego.gitorious.org/~slahtinen/meego-quality-assurance/slahtinens-testrunner-lite] in branch multidut.&lt;/div&gt;</summary>
		<author><name>Slahtinen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design</id>
		<title>Quality/QA-tools/MCTS test automation design</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools/MCTS_test_automation_design"/>
				<updated>2010-12-20T12:14:34Z</updated>
		
		<summary type="html">&lt;p&gt;Slahtinen: /* Meetings/ Planning */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''!!!!!!!!!!! WORK IN PROGRESS !!!!!!!!!!!'''&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
This document provides a technical architecture and system design for MCTS Test Automation environment. The purpose is to introduce a new subsystem to the existing MeeGo test automation environment (OTS), where external devices can be connected and controlled on test case or test step level. In this context an external device can for example be, a network simulator, a WLAN analyzer or even another DUT. The new subsystem utilizes test tools already in place in MeeGo by extending their functionality, and also introduces additional components to provide needed new functionality. Suitable open-source will also be utilized as much as it is rationale to do. Intended readers for this document are the developers contributing MeeGo QA Tools area and MCTS test asset developers. '''Contributions to this document are welcome'''.&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
&lt;br /&gt;
This document first gives an insight to the overall system with some background information before moving to the system architecture and detailed design chapters. Document focuses on solving following design issues:&lt;br /&gt;
&lt;br /&gt;
* Control and interaction between simulators, analyzers and DUT(s)&lt;br /&gt;
* Interfaces of different architectural layers and components&lt;br /&gt;
* Adaptation of devices to the test automation environment&lt;br /&gt;
&lt;br /&gt;
== Glossary == &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!| Term || Definition&lt;br /&gt;
|-&lt;br /&gt;
| DUT || Device Under Test&lt;br /&gt;
|-&lt;br /&gt;
| OTS || [[Quality/QA-tools/OTS|Link to wiki]]&lt;br /&gt;
|-&lt;br /&gt;
| test-definition || [[Quality/QA-tools/Test-definition|Link to wiki]]&lt;br /&gt;
|-&lt;br /&gt;
| testrunner-lite || [[Quality/QA-tools/Testrunner-lite|Link to wiki]]&lt;br /&gt;
|-&lt;br /&gt;
| testrunner || [[Quality/QA-tools/Testrunner-ui|Link to wiki]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= System Overview =&lt;br /&gt;
&lt;br /&gt;
Current OTS environment allows to execute test cases in a single DUT. When executing automated functional test cases in a simulated live environment, it is usually required to verify the result from another device. An example from such test case would be a voice call between two or more DUTs. This is a typical master – slave test case, where master DUT is used to initiate MO call, which is then verified in the receiving slave device. Another situation, when test case verdict needs to be verified from external device is for example tests related to audio playback. In this case the result is fetched from audio analyzer for example. This design will introduce new messaging and communication method to the system, which is used to handle interaction between devices. The below picture illustrates the system overview.&lt;br /&gt;
&lt;br /&gt;
[[File:Mcts_automation_system_overview_diagram.png|500px|thumb|center|System Overview]]&lt;br /&gt;
&lt;br /&gt;
= Design Considerations = &lt;br /&gt;
&lt;br /&gt;
== Assumptions and Dependencies ==&lt;br /&gt;
&lt;br /&gt;
Any assumptions, dependencies and requirements regarding the system and operating environment are listed here.&lt;br /&gt;
&lt;br /&gt;
* External device connecting to the test automation environment can be any type from any vendor&lt;br /&gt;
* Communication&lt;br /&gt;
** Devices need to be controlled from host and target DUT&lt;br /&gt;
** Test case/ testrunner-lite/ single component can communicate with other devices via messaging &lt;br /&gt;
* Message types&lt;br /&gt;
** Request-Reply&lt;br /&gt;
** Events/ signals&lt;br /&gt;
** Variable exchange in messages&lt;br /&gt;
** synchronous/ asynchronous messages &lt;br /&gt;
* Both parallel and sequential controlling of the devices shall be possible&lt;br /&gt;
* Interaction (events) can happen any time between devices&lt;br /&gt;
* External devices can be connected to a remote host&lt;br /&gt;
* In case of automated execution is not possible, manual execution mode must be available as a backup&lt;br /&gt;
* System needs to be able to run in both Linux and Windows (Priority is in Linux)&lt;br /&gt;
&lt;br /&gt;
== Design Constraints ==&lt;br /&gt;
&lt;br /&gt;
Any global limitations or constraints that have a significant impact on the design of the system's software are listed here.&lt;br /&gt;
&lt;br /&gt;
* Usage of proprietary software components is not allowed&lt;br /&gt;
* System needs to extensible and distributable&lt;br /&gt;
* API for communicating with the devices has to be generic enough covering at least the basic and selected complex uses cases &lt;br /&gt;
* Backwards compatibility with the current test definitions MUST be maintained&lt;br /&gt;
&lt;br /&gt;
= System Architecture =&lt;br /&gt;
&lt;br /&gt;
For controlling multiple devices and executing commands either sequential or parallel, some short of event/mesaging mechanism is clearly needed. Implementing such subsystem from scratch would require too much effort. Thus existing open solutions are studied and utilized for this. Also extending some of the existing test tools (e.g. OTS) with such functionality would make the architecture too complex. To keep architecture modular, the component controlling handling the communication should be its own subsystem, which then will be connected to OTS.&lt;br /&gt;
&lt;br /&gt;
== Architectural Design ==&lt;br /&gt;
&lt;br /&gt;
This section describes the chosen architecture for the system. Also, the alternative architectures, which have been considered are discussed here.&lt;br /&gt;
&lt;br /&gt;
=== Layered Architecture View ===&lt;br /&gt;
&lt;br /&gt;
The below picture illustrates the layered architecture of the system. '''NOTE''': only the essential components are shown in the picture.&lt;br /&gt;
&lt;br /&gt;
[[File:Mcts_layered_architecture.png|500px|thumb|center|Layered View]]&lt;br /&gt;
&lt;br /&gt;
* '''Test Tools Layer''' is the top most layer in the architecture. It contains the tools for execution test binaries both in host and device side and recipe for executing commands.&lt;br /&gt;
* '''Test Case Layer''' contains the test binaries executed on the host side. Test cases itself can contain lots of state information and logic, which would be impossible to handle on tools side. Therefore, a support for host side test cases is provied.&lt;br /&gt;
* '''Device API Layer''' contains the different APIs, which are used to communicate with external devices. This layer contains an API, which common for all devices and device type specific APIs.&lt;br /&gt;
* '''Messaging Layer''' is a vertical layer providing the communication and message routing between devices&lt;br /&gt;
* '''Device Adaptation Layer''' contains the adaptations to the device drivers.&lt;br /&gt;
&lt;br /&gt;
=== Component Architecture View ===&lt;br /&gt;
&lt;br /&gt;
The picture below, illustrates the component view of the architecture. Each component in the diagram represents an individual subsystem (executable, library or data). For simplicity, only the relevant component and interfaces are described. '''Note''': component names are preliminary.&lt;br /&gt;
&lt;br /&gt;
[[File:Mcts_component_diagram.png|600px|thumb|center|Component View]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
;test-definition (existing)&lt;br /&gt;
* '''Purpose''': Collection of XML schema files, which are used to validate test plan xml files.&lt;br /&gt;
* '''Provides''': Means to validate test plan XML syntax&lt;br /&gt;
* '''Uses''': -&lt;br /&gt;
* '''Changes Needed''': &lt;br /&gt;
** Support for:&lt;br /&gt;
*** test step level attributes, to mark, in which device command is executed&lt;br /&gt;
*** measurement values&lt;br /&gt;
*** fetching additional log files from different devices &lt;br /&gt;
** Test plan syntax needs be to extended by evolving current testdefinition-complex.xsd or by providing new even more complex schema. &lt;br /&gt;
* '''Type''': Data&lt;br /&gt;
&lt;br /&gt;
;testrunner-lite (existing)&lt;br /&gt;
* '''Purpose''': Runs on host test system. Parses test plan XML and executes commands (test binaries) on host, remote device (over ssh) and external devices over messaging service. &lt;br /&gt;
* '''Provides''': Universal way to execute test cases, automated or manual. &lt;br /&gt;
* '''Uses''': &lt;br /&gt;
** test-defininition to validate test plan XML&lt;br /&gt;
** libxml2 for XML parsing&lt;br /&gt;
** ssh for communicating with the device&lt;br /&gt;
** libcurl for HTTP logging&lt;br /&gt;
** Messaging API for external device communication&lt;br /&gt;
* '''Changes Needed''': &lt;br /&gt;
** support for parsing new attributes from test plan XML&lt;br /&gt;
** execute test commands in the device instructed in test plan XML&lt;br /&gt;
** fetch additional log files from devices&lt;br /&gt;
** for test case development, support for simulating external devices is needed &lt;br /&gt;
** send/ receive AMQP messages&lt;br /&gt;
* '''Type''': Executable&lt;br /&gt;
&lt;br /&gt;
;testrunner (existing)&lt;br /&gt;
* '''Purpose''': Executing test binaries manually&lt;br /&gt;
* '''Provides''': UI for the manual execution&lt;br /&gt;
* '''Uses''': &lt;br /&gt;
** testrunner-lite to execute test plan&lt;br /&gt;
** Messaging API for external device communication&lt;br /&gt;
* '''Changes Needed''': &lt;br /&gt;
** send/ receive AMQP messages&lt;br /&gt;
* '''Type''': Executable&lt;br /&gt;
&lt;br /&gt;
;Messaging API (new)&lt;br /&gt;
* '''Purpose''': Hides the complexity of AMQP protocol from the client applications&lt;br /&gt;
* '''Provides''': Simple API for handling AMQP messaging&lt;br /&gt;
* '''Uses''': [[http://www.openamq.org/doc:prog-wireapi#toc27 OpenAMQ C API]]&lt;br /&gt;
* '''Type''': Library&lt;br /&gt;
&lt;br /&gt;
== Sub-system Architecture ==&lt;br /&gt;
&lt;br /&gt;
== Design Rationale ==&lt;br /&gt;
&lt;br /&gt;
Rationale, why this approach was chosen.&lt;br /&gt;
&lt;br /&gt;
== Design Alternatives ==&lt;br /&gt;
&lt;br /&gt;
This section describes architectures which have been considered.&lt;br /&gt;
&lt;br /&gt;
= Detailed System Design =&lt;br /&gt;
&lt;br /&gt;
= Meetings/ Planning =&lt;br /&gt;
&lt;br /&gt;
This section is meant for meeting and planning activities related to this work.&lt;br /&gt;
&lt;br /&gt;
* [[Quality/QA-tools/MCTS-Test-Automation-Design/meeting-2010-11-30|Workshop on November 30th 2010]]&lt;br /&gt;
* [[Quality/QA-tools/MCTS-Test-Automation-Design/proof-of-concept-planning|Planning the PoC]]&lt;br /&gt;
* [[Quality/QA-tools/MCTS-Test-Automation-Design/poc-implementation|PoC Implementation]]&lt;/div&gt;</summary>
		<author><name>Slahtinen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/QA-tools</id>
		<title>Quality/QA-tools</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/QA-tools"/>
				<updated>2010-08-26T06:21:26Z</updated>
		
		<summary type="html">&lt;p&gt;Slahtinen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Quality Assurance (QA) Tools ==&lt;br /&gt;
&lt;br /&gt;
Quality Assurance tools are developed to ensure MeeGo SW quality.&lt;br /&gt;
&lt;br /&gt;
Work in progress includes open sourcing Nokia / Intel quality assurance tools and making open source test tools available for anyone interested in MeeGo software quality. &lt;br /&gt;
&lt;br /&gt;
== QA Tools ==&lt;br /&gt;
&lt;br /&gt;
 Open source tools  – available for all, available for development and contributions. Make people accountable for quality.&lt;br /&gt;
&lt;br /&gt;
QA tools team develops and maintains tools for Quality Assurance. &lt;br /&gt;
 &lt;br /&gt;
Anyone is welcome to contribute and non-member contributions will be treated&lt;br /&gt;
with same process and review as member contributions.&lt;br /&gt;
&lt;br /&gt;
Summer 2010: We are in the process of making Nokia and Intel QA tools available for MeeGo. Please bear with us.&lt;br /&gt;
&lt;br /&gt;
Team communication is in English.&lt;br /&gt;
&lt;br /&gt;
Team meetings will be held in &amp;lt;code&amp;gt;#meego-meeting on irc.freenode.net&amp;lt;/code&amp;gt; starting September - '''Meeting time has not been fixed - proposals welcome''' &lt;br /&gt;
&lt;br /&gt;
The current team members are (in no particular order):&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
| Name&lt;br /&gt;
| Role&lt;br /&gt;
| Affiliation&lt;br /&gt;
| IRC nickname&lt;br /&gt;
|- &lt;br /&gt;
| Ville Ilvonen || Team lead (act.) || Nokia || vilvo&lt;br /&gt;
|-&lt;br /&gt;
| Riku Halonen || Team member || Nokia || rikhalon&lt;br /&gt;
|-&lt;br /&gt;
| Kari Sievi || Team member || Digia || -&lt;br /&gt;
|-&lt;br /&gt;
| Timo Härkönen || Team member || Digia || timoph  &lt;br /&gt;
|-&lt;br /&gt;
| Carol Rus || Team member || Digia || -  &lt;br /&gt;
|-&lt;br /&gt;
| Sami Lahtinen || Team member || Digia || slahtinen  &lt;br /&gt;
|-&lt;br /&gt;
| Raimo Gratseff || Team member || Digia || -  &lt;br /&gt;
|-&lt;br /&gt;
| Sampo Saaristo || Team member || Sofica || -&lt;br /&gt;
|-  &lt;br /&gt;
| Ling Yu || Team member || Intel || -&lt;br /&gt;
|-&lt;br /&gt;
| Jing Wang || Team member || Intel || -&lt;br /&gt;
|-  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Our collaboration spaces are:&lt;br /&gt;
&lt;br /&gt;
* [http://lists.meego.com/listinfo/meego-dev meego-dev@meego.com mailing list], please prefix with 'QA-tools' for team related topics.&lt;br /&gt;
** Please also poke team members or Ville Ilvonen either by email or on IRC because of high traffic @ meego-dev&lt;br /&gt;
* [http://webchat.freenode.net/?channels=meego-qa-tools #meego-qa-tools IRC channel on irc.freenode.net]&lt;br /&gt;
* Gitorious team, http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MeeGo OBS&lt;br /&gt;
* This wiki area&lt;br /&gt;
* [http://wiki.meego.com/Quality/QA-tools/ServiceOS ServiceOS]&lt;br /&gt;
&lt;br /&gt;
[[Category:QA]]&lt;/div&gt;</summary>
		<author><name>Slahtinen</name></author>	</entry>

	</feed>