<?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/Ttoropainen&amp;feed=atom&amp;limit=50&amp;target=Ttoropainen&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/Ttoropainen&amp;feed=atom&amp;limit=50&amp;target=Ttoropainen&amp;year=&amp;month="/>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Special:Contributions/Ttoropainen"/>
		<updated>2013-05-22T05:09:01Z</updated>
		<subtitle>From MeeGo wiki</subtitle>
		<generator>MediaWiki 1.16.2</generator>

	<entry>
		<id>http://wiki.meego.com/MeeGo_Conference_2010/Unconference</id>
		<title>MeeGo Conference 2010/Unconference</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/MeeGo_Conference_2010/Unconference"/>
				<updated>2010-11-12T07:08:45Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* I plan to present ... */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Day 3 of the [http://conference2010.meego.com MeeGo Conference] will be primarily an unconference run in the BarCamp style. We will also have one room with scheduled activities running in parallel to the unconference for Birds of a Feather sessions, lightning talks and similar activities. &lt;br /&gt;
&lt;br /&gt;
== What is an Unconference and Why should I attend? ==&lt;br /&gt;
&lt;br /&gt;
We've been getting a lot of questions about the unconference day from people who aren't convinced that it is worth their time to attend. [[User:Dawnfoster|I (Dawn)]] have attended many unconferences and organized several of them, and I can honestly say that I usually get as much, if not more, out of them than I do from traditional conferences.&lt;br /&gt;
&lt;br /&gt;
=== Brief Description ===&lt;br /&gt;
&lt;br /&gt;
An unconference is an ad-hoc gathering organized by the attendees for the attendees. The concept originated out of a desire for people to share and learn in an open environment. It is an intense event with discussions, demos and interaction from participants. You never quite know what to expect at an unconference, since each one is shaped by the attendees. When you arrive on Wednesday morning, there will be an agenda framework (times / rooms), but the content for the sessions will be decided by the participants.&lt;br /&gt;
&lt;br /&gt;
=== Why should I attend ===&lt;br /&gt;
&lt;br /&gt;
'''To Present and Lead'''&lt;br /&gt;
* Anyone can present or lead a discussion, so you can talk about any topic of interest to you.&lt;br /&gt;
* If you submitted a session, and it wasn't approved for the main conference, but you still think it would be interesting, you can present it here.&lt;br /&gt;
* We will have plenty of smaller rooms for niche topics of interest to a few people - those rarely fit into a conference format, but work nicely in one of our smaller unconference rooms.&lt;br /&gt;
* It's a great opportunity to follow up on a topic presented in the first days and have a more detailed discussion.&lt;br /&gt;
&lt;br /&gt;
'''To Collaborate and Network'''&lt;br /&gt;
* Use the time to collaborate with people on an interesting MeeGo project.&lt;br /&gt;
* Great opportunity to talk to experts about subjects not covered in the first two days.&lt;br /&gt;
* Network and meet other people interested in our work&lt;br /&gt;
* Learn more about what others need and get feedback on new ways to use MeeGo&lt;br /&gt;
* Collaborate on actual work related to MeeGo in smaller groups&lt;br /&gt;
* Have group discussions or meetings&lt;br /&gt;
&lt;br /&gt;
'''To Learn and Innovate'''&lt;br /&gt;
* It is a great way to spot new talents, new movements, tendencies and upcoming technologies that weren't mature enough for the main conference.&lt;br /&gt;
* An unconference is basically like the conference, but with subjects chosen by the audience (by interest), which means there's a high chance of finding interesting topics.&lt;br /&gt;
* We have a community of interesting smart people, so we should expect plenty of interesting sessions.&lt;br /&gt;
* The flexible format allows for interesting out of the box ideas and ways to accommodate different formats.&lt;br /&gt;
* You are encouraged to use the [http://en.wikipedia.org/wiki/Law_of_Two_Feet#Law_of_Two_Feet Law of Two Feet] - if you go to a session and it isn't what you had hoped, you are encouraged to get up and move to another session.&lt;br /&gt;
* Come home with a fresh set of cutting-edge ideas and inspiration at the front of innovation within MeeGo.&lt;br /&gt;
&lt;br /&gt;
=== More information ===&lt;br /&gt;
* [http://www.youtube.com/watch?v=7XlqEDIJzfw What is BarCamp? video] - short and worth your time to watch.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Barcamp BarCamp Wikipedia entry] with some history and other information.&lt;br /&gt;
&lt;br /&gt;
== Session Ideas ==&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT: Adding a session to the list below does not reserve a spot on the schedule board on Wednesday. The only way to guarantee a schedule slot is by showing up early and putting your session on the grid in person. See the [[#Schedule]] section below for more details.'''&lt;br /&gt;
&lt;br /&gt;
=== Tips for Presenters ===&lt;br /&gt;
&lt;br /&gt;
* Discussion formats work slightly better than standard conference presentations. Leading a group of people in a discussion is much more interactive and gives people a nice break from the past 2 days of presentations.&lt;br /&gt;
* Prepare in advance - if you plan to lead a session, prepare as you would for any other conference.&lt;br /&gt;
* Have a topic that isn't 45 minutes of material? Team up with one or more people with related topics and share the session.&lt;br /&gt;
* Respect people's time and do not allow your session to run longer than scheduled. Other people will be waiting to get into the room to set up for the next session.&lt;br /&gt;
&lt;br /&gt;
=== I plan to present ... ===&lt;br /&gt;
&lt;br /&gt;
Leave a note with the topic you plan to present along with your name and a link to more information about yourself.&lt;br /&gt;
&lt;br /&gt;
* The title of an example topic description --[[User:Dawnfoster|Dawnfoster]] 22:09, 21 September 2010 (UTC)&lt;br /&gt;
* [http://conference2010.meego.com/session/accounts-sso Introduction to the new Accounts &amp;amp; Single Sign On framework] --[[User:Mardy|Mardy]] 24 Sep 2010 11:52:11 (UTC)&lt;br /&gt;
* [http://conference2010.meego.com/session/content-fw-my-god-its-full-data Introduction to Tracker/Content FW: one of really innovating bits in Meego] --[[User:Ifrade|Frade]] 06 Oct 2010 13:21:00 (EETC)&lt;br /&gt;
* [[MeeGo_Conference2010/QtM_BoF_Unconference|QtMobility &amp;amp; MeeGo BoF/Unconference]] -- [[User:mikeleib|mikeleib]] 06 Oct 2010 04:03 UTC&lt;br /&gt;
* [[MeeGo_Conference_2010/Unconference/ARM|MeeGo ARM Discussion Forum]] -- [[User:stskeeps|stskeeps]] 07 Oct 2010 15:57 UTC&lt;br /&gt;
* [[MeeGo_Conference_2010/Unconference/Plasma|Plasma and QtComponents BoF]] -- [[User:mart|mart]] 07 Oct 2010 23:10 UTC&lt;br /&gt;
* [[MeeGo_Conference_2010/Unconference/TrackerHandsOn|Hands on BOF on making efficient SPARQL queries and mastering the different APIs of MeeGo's metadata service, Tracker]] -- [[User:pvanhoof|pvanhoof]], [[User:abustany|abustany]] 11 Oct 2010 10:34 UTC&lt;br /&gt;
* [http://conference2010.meego.com/session/working-together-world-ready-meego-developers-and-translators MeeGo Internationalization and Localization Discussion] [[User:margie|margie]]--A continuation of the discussion of the new process we are proposing to use for the next MeeGo release&lt;br /&gt;
* [http://wiki.meego.com/MeeGo_Conference_2010/Unconference/Hardware_adaptations_in_MeeGo Hardware adaptations in MeeGo] [[User:stskeeps|stskeeps]] -- An introduction to HW adaptations in MeeGo and the architecture and requirements process around it&lt;br /&gt;
* [http://lists.meego.com/pipermail/meego-qa/2010-November/000091.html Open test management proposal with tool support] [[User:vilvo|vilvo]] -- A proposal to make MeeGo core OS and UX profiles test management more open and how that can be supported with Quality Assurance tools.&lt;br /&gt;
* [http://lists.meego.com/pipermail/meego-community/2010-November/002504.html Get your hands dirty with test tools] [[User:timoph|timoph]] -- Information and live demos on test tools&lt;br /&gt;
* [[MeeGo_Conference2010/MCTS_CSA_Future|MeeGo Core Test Suite Current State and future workshop]] --&lt;br /&gt;
&lt;br /&gt;
=== I would like to see someone talk about ... ===&lt;br /&gt;
&lt;br /&gt;
Have something that you want to see someone else talk about? Feel free to use this space to brainstorm topics.&lt;br /&gt;
&lt;br /&gt;
* Tips for contributing code to MeeGo and getting it accepted --[[User:Dawnfoster|Dawnfoster]] 22:09, 21 September 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
* How to become a MeeGo platform hacker/developer- How to become part of the specification, design and development of the core platform, in one's favorite vertical.&lt;br /&gt;
&lt;br /&gt;
* Q&amp;amp;A and technical discussion of core compliance package list --[[User:Joel|Joel Clark]] 09:04, 5 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
=== Schedule Grid and Process for Scheduling Sessions ===&lt;br /&gt;
&lt;br /&gt;
We will have a big grid on the wall where people can post their session ideas on the morning of the event (no sessions reserved in advance). Make sure you arrive on time if you plan to lead a session! &lt;br /&gt;
&lt;br /&gt;
'''To Schedule a Session''':&lt;br /&gt;
* The schedule board will open up after the welcome is completed.&lt;br /&gt;
* Write your topic in big letters on your post it note.&lt;br /&gt;
* Include your contact information in smaller letters (name and cell phone or email address)&lt;br /&gt;
* Put your post it note on the board picking a room and time that looks good to you.&lt;br /&gt;
* Make sure that big meaty topics are in large rooms with niche topics in small rooms.&lt;br /&gt;
&lt;br /&gt;
'''Things to keep in mind''':&lt;br /&gt;
* The schedule board is dynamic and may change at any time during the day.&lt;br /&gt;
* The schedule board on the wall is always the master.&lt;br /&gt;
* We may need to move sessions, so make sure you double check the board to make sure that you are going to the right room / time for the session you want to attend.&lt;br /&gt;
* Sessions that seem very similar may be asked to combine.&lt;br /&gt;
* We reserve the right to move things around to make sure that popular topics have large rooms.&lt;br /&gt;
&lt;br /&gt;
=== Day Schedule and Grid Format ===&lt;br /&gt;
&lt;br /&gt;
This is an example of how the grid will look and is for planning purposes only - '''please do not enter sessions or add other information to the grid'''&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Time || Presidents 1 (sits 300) || Presidents 2 (sits 280) || Vavasour (sits 80) || 1872 area (sits 120) || Havelock (sits 130)||Box 1 (sits 20)||Box 2 (sits 20)|| Box 3 (sits 20)|| Box 4 (sits 20)|| Box 5 (sits 20)|| Box 6 (sits 20)|| Other&lt;br /&gt;
|-&lt;br /&gt;
!9:00 - 9:15 ||colspan=13|Atrium: Welcome - What is an unconference and how do I participate? &lt;br /&gt;
|-&lt;br /&gt;
!9:15 - 9:45 ||colspan=13|Atrium: Schedule board open - people post sessions on the grid. &lt;br /&gt;
|-&lt;br /&gt;
!9:45 - 10:00||colspan=13|Atrium: Schedule board adjustments (combine duplicates, adjust rooms, etc.)&lt;br /&gt;
|-&lt;br /&gt;
|10:00 - 10:45|| BOFs / Scheduled || Unconf Session || Unconf Session || Unconf Session || Unconf Session||Unconf Session||Unconf Session || Unconf Session ||Unconf Session || Unconf Session || Unconf Session&lt;br /&gt;
|-&lt;br /&gt;
|11:00 - 11:45|| BOFs / Scheduled || Unconf Session || Unconf Session || Unconf Session || Unconf Session||Unconf Session||Unconf Session || Unconf Session ||Unconf Session || Unconf Session || Unconf Session&lt;br /&gt;
|-&lt;br /&gt;
|12:00 - 12:45|| Lightning Talks || Unconf Session || Unconf Session || Unconf Session || Unconf Session||Unconf Session||Unconf Session || Unconf Session ||Unconf Session || Unconf Session || Unconf Session&lt;br /&gt;
|-&lt;br /&gt;
!12:45 - 13:45||colspan=13|Lunch and Networking&lt;br /&gt;
|-&lt;br /&gt;
|13:45 - 14:30|| BOFs / Scheduled || Unconf Session || Unconf Session || Unconf Session || Unconf Session||Unconf Session||Unconf Session || Unconf Session ||Unconf Session || Unconf Session || Unconf Session&lt;br /&gt;
|-&lt;br /&gt;
|14:45 - 15:30|| BOFs / Scheduled || Unconf Session || Unconf Session || Unconf Session || Unconf Session||Unconf Session||Unconf Session || Unconf Session ||Unconf Session || Unconf Session || Unconf Session&lt;br /&gt;
|-&lt;br /&gt;
!15:30 - 16:00||colspan=13|We need to be out of Aviva no later than 16:00.&lt;br /&gt;
|-&lt;br /&gt;
!17:45||colspan=13|Doors open for the Ireland / Norway Football game. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The BOF / Scheduled session room is out of scope of the unconference team and will be decided and planned by the content committee.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Rooms set up - confirm that we do plan to use all of the rooms on the schedule board &amp;amp; we need to know which rooms have projectors.&lt;br /&gt;
* A bunch of 4x6&amp;quot; post it notes&lt;br /&gt;
* A schedule board pre-printed with times and rooms with spaces large enough to accommodate 4x6&amp;quot; post it notes (alternative is painter's tape &amp;amp; a wall)&lt;br /&gt;
* Sharpie pens&lt;br /&gt;
&lt;br /&gt;
== Organizing Team ==&lt;br /&gt;
&lt;br /&gt;
* Lead: [[User:Dawnfoster|Dawn Foster]]&lt;br /&gt;
* Notes / wiki organizer - put a process in place to allow people to take notes and maintain a copy (physical board is the master) of the schedule in the wiki.&lt;br /&gt;
* Schedule volunteers - 2 people (2 shifts - each working half the day) to help manage the schedule board, help people get things scheduled, update schedule changes in the wiki copy, etc. &lt;br /&gt;
* Note taking volunteers - each session needs one or more people to take notes and put them in the wiki&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/MeeGo_Conference_2010/Unconference</id>
		<title>MeeGo Conference 2010/Unconference</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/MeeGo_Conference_2010/Unconference"/>
				<updated>2010-11-12T06:58:56Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* I plan to present ... */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Day 3 of the [http://conference2010.meego.com MeeGo Conference] will be primarily an unconference run in the BarCamp style. We will also have one room with scheduled activities running in parallel to the unconference for Birds of a Feather sessions, lightning talks and similar activities. &lt;br /&gt;
&lt;br /&gt;
== What is an Unconference and Why should I attend? ==&lt;br /&gt;
&lt;br /&gt;
We've been getting a lot of questions about the unconference day from people who aren't convinced that it is worth their time to attend. [[User:Dawnfoster|I (Dawn)]] have attended many unconferences and organized several of them, and I can honestly say that I usually get as much, if not more, out of them than I do from traditional conferences.&lt;br /&gt;
&lt;br /&gt;
=== Brief Description ===&lt;br /&gt;
&lt;br /&gt;
An unconference is an ad-hoc gathering organized by the attendees for the attendees. The concept originated out of a desire for people to share and learn in an open environment. It is an intense event with discussions, demos and interaction from participants. You never quite know what to expect at an unconference, since each one is shaped by the attendees. When you arrive on Wednesday morning, there will be an agenda framework (times / rooms), but the content for the sessions will be decided by the participants.&lt;br /&gt;
&lt;br /&gt;
=== Why should I attend ===&lt;br /&gt;
&lt;br /&gt;
'''To Present and Lead'''&lt;br /&gt;
* Anyone can present or lead a discussion, so you can talk about any topic of interest to you.&lt;br /&gt;
* If you submitted a session, and it wasn't approved for the main conference, but you still think it would be interesting, you can present it here.&lt;br /&gt;
* We will have plenty of smaller rooms for niche topics of interest to a few people - those rarely fit into a conference format, but work nicely in one of our smaller unconference rooms.&lt;br /&gt;
* It's a great opportunity to follow up on a topic presented in the first days and have a more detailed discussion.&lt;br /&gt;
&lt;br /&gt;
'''To Collaborate and Network'''&lt;br /&gt;
* Use the time to collaborate with people on an interesting MeeGo project.&lt;br /&gt;
* Great opportunity to talk to experts about subjects not covered in the first two days.&lt;br /&gt;
* Network and meet other people interested in our work&lt;br /&gt;
* Learn more about what others need and get feedback on new ways to use MeeGo&lt;br /&gt;
* Collaborate on actual work related to MeeGo in smaller groups&lt;br /&gt;
* Have group discussions or meetings&lt;br /&gt;
&lt;br /&gt;
'''To Learn and Innovate'''&lt;br /&gt;
* It is a great way to spot new talents, new movements, tendencies and upcoming technologies that weren't mature enough for the main conference.&lt;br /&gt;
* An unconference is basically like the conference, but with subjects chosen by the audience (by interest), which means there's a high chance of finding interesting topics.&lt;br /&gt;
* We have a community of interesting smart people, so we should expect plenty of interesting sessions.&lt;br /&gt;
* The flexible format allows for interesting out of the box ideas and ways to accommodate different formats.&lt;br /&gt;
* You are encouraged to use the [http://en.wikipedia.org/wiki/Law_of_Two_Feet#Law_of_Two_Feet Law of Two Feet] - if you go to a session and it isn't what you had hoped, you are encouraged to get up and move to another session.&lt;br /&gt;
* Come home with a fresh set of cutting-edge ideas and inspiration at the front of innovation within MeeGo.&lt;br /&gt;
&lt;br /&gt;
=== More information ===&lt;br /&gt;
* [http://www.youtube.com/watch?v=7XlqEDIJzfw What is BarCamp? video] - short and worth your time to watch.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Barcamp BarCamp Wikipedia entry] with some history and other information.&lt;br /&gt;
&lt;br /&gt;
== Session Ideas ==&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT: Adding a session to the list below does not reserve a spot on the schedule board on Wednesday. The only way to guarantee a schedule slot is by showing up early and putting your session on the grid in person. See the [[#Schedule]] section below for more details.'''&lt;br /&gt;
&lt;br /&gt;
=== Tips for Presenters ===&lt;br /&gt;
&lt;br /&gt;
* Discussion formats work slightly better than standard conference presentations. Leading a group of people in a discussion is much more interactive and gives people a nice break from the past 2 days of presentations.&lt;br /&gt;
* Prepare in advance - if you plan to lead a session, prepare as you would for any other conference.&lt;br /&gt;
* Have a topic that isn't 45 minutes of material? Team up with one or more people with related topics and share the session.&lt;br /&gt;
* Respect people's time and do not allow your session to run longer than scheduled. Other people will be waiting to get into the room to set up for the next session.&lt;br /&gt;
&lt;br /&gt;
=== I plan to present ... ===&lt;br /&gt;
&lt;br /&gt;
Leave a note with the topic you plan to present along with your name and a link to more information about yourself.&lt;br /&gt;
&lt;br /&gt;
* The title of an example topic description --[[User:Dawnfoster|Dawnfoster]] 22:09, 21 September 2010 (UTC)&lt;br /&gt;
* [http://conference2010.meego.com/session/accounts-sso Introduction to the new Accounts &amp;amp; Single Sign On framework] --[[User:Mardy|Mardy]] 24 Sep 2010 11:52:11 (UTC)&lt;br /&gt;
* [http://conference2010.meego.com/session/content-fw-my-god-its-full-data Introduction to Tracker/Content FW: one of really innovating bits in Meego] --[[User:Ifrade|Frade]] 06 Oct 2010 13:21:00 (EETC)&lt;br /&gt;
* [[MeeGo_Conference2010/QtM_BoF_Unconference|QtMobility &amp;amp; MeeGo BoF/Unconference]] -- [[User:mikeleib|mikeleib]] 06 Oct 2010 04:03 UTC&lt;br /&gt;
* [[MeeGo_Conference_2010/Unconference/ARM|MeeGo ARM Discussion Forum]] -- [[User:stskeeps|stskeeps]] 07 Oct 2010 15:57 UTC&lt;br /&gt;
* [[MeeGo_Conference_2010/Unconference/Plasma|Plasma and QtComponents BoF]] -- [[User:mart|mart]] 07 Oct 2010 23:10 UTC&lt;br /&gt;
* [[MeeGo_Conference_2010/Unconference/TrackerHandsOn|Hands on BOF on making efficient SPARQL queries and mastering the different APIs of MeeGo's metadata service, Tracker]] -- [[User:pvanhoof|pvanhoof]], [[User:abustany|abustany]] 11 Oct 2010 10:34 UTC&lt;br /&gt;
* [http://conference2010.meego.com/session/working-together-world-ready-meego-developers-and-translators MeeGo Internationalization and Localization Discussion] [[User:margie|margie]]--A continuation of the discussion of the new process we are proposing to use for the next MeeGo release&lt;br /&gt;
* [http://wiki.meego.com/MeeGo_Conference_2010/Unconference/Hardware_adaptations_in_MeeGo Hardware adaptations in MeeGo] [[User:stskeeps|stskeeps]] -- An introduction to HW adaptations in MeeGo and the architecture and requirements process around it&lt;br /&gt;
* [http://lists.meego.com/pipermail/meego-qa/2010-November/000091.html Open test management proposal with tool support] [[User:vilvo|vilvo]] -- A proposal to make MeeGo core OS and UX profiles test management more open and how that can be supported with Quality Assurance tools.&lt;br /&gt;
* [http://lists.meego.com/pipermail/meego-community/2010-November/002504.html Get your hands dirty with test tools] [[User:timoph|timoph]] -- Information and live demos on test tools&lt;br /&gt;
* [[MeeGo_Conference2010/MCTS_CSA_Future|MeeGo Core Test Suite Current State and future workshop]] -- [[User:ttoropainen|ttoropainen]]&lt;br /&gt;
&lt;br /&gt;
=== I would like to see someone talk about ... ===&lt;br /&gt;
&lt;br /&gt;
Have something that you want to see someone else talk about? Feel free to use this space to brainstorm topics.&lt;br /&gt;
&lt;br /&gt;
* Tips for contributing code to MeeGo and getting it accepted --[[User:Dawnfoster|Dawnfoster]] 22:09, 21 September 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
* How to become a MeeGo platform hacker/developer- How to become part of the specification, design and development of the core platform, in one's favorite vertical.&lt;br /&gt;
&lt;br /&gt;
* Q&amp;amp;A and technical discussion of core compliance package list --[[User:Joel|Joel Clark]] 09:04, 5 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
=== Schedule Grid and Process for Scheduling Sessions ===&lt;br /&gt;
&lt;br /&gt;
We will have a big grid on the wall where people can post their session ideas on the morning of the event (no sessions reserved in advance). Make sure you arrive on time if you plan to lead a session! &lt;br /&gt;
&lt;br /&gt;
'''To Schedule a Session''':&lt;br /&gt;
* The schedule board will open up after the welcome is completed.&lt;br /&gt;
* Write your topic in big letters on your post it note.&lt;br /&gt;
* Include your contact information in smaller letters (name and cell phone or email address)&lt;br /&gt;
* Put your post it note on the board picking a room and time that looks good to you.&lt;br /&gt;
* Make sure that big meaty topics are in large rooms with niche topics in small rooms.&lt;br /&gt;
&lt;br /&gt;
'''Things to keep in mind''':&lt;br /&gt;
* The schedule board is dynamic and may change at any time during the day.&lt;br /&gt;
* The schedule board on the wall is always the master.&lt;br /&gt;
* We may need to move sessions, so make sure you double check the board to make sure that you are going to the right room / time for the session you want to attend.&lt;br /&gt;
* Sessions that seem very similar may be asked to combine.&lt;br /&gt;
* We reserve the right to move things around to make sure that popular topics have large rooms.&lt;br /&gt;
&lt;br /&gt;
=== Day Schedule and Grid Format ===&lt;br /&gt;
&lt;br /&gt;
This is an example of how the grid will look and is for planning purposes only - '''please do not enter sessions or add other information to the grid'''&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Time || Presidents 1 (sits 300) || Presidents 2 (sits 280) || Vavasour (sits 80) || 1872 area (sits 120) || Havelock (sits 130)||Box 1 (sits 20)||Box 2 (sits 20)|| Box 3 (sits 20)|| Box 4 (sits 20)|| Box 5 (sits 20)|| Box 6 (sits 20)|| Other&lt;br /&gt;
|-&lt;br /&gt;
!9:00 - 9:15 ||colspan=13|Atrium: Welcome - What is an unconference and how do I participate? &lt;br /&gt;
|-&lt;br /&gt;
!9:15 - 9:45 ||colspan=13|Atrium: Schedule board open - people post sessions on the grid. &lt;br /&gt;
|-&lt;br /&gt;
!9:45 - 10:00||colspan=13|Atrium: Schedule board adjustments (combine duplicates, adjust rooms, etc.)&lt;br /&gt;
|-&lt;br /&gt;
|10:00 - 10:45|| BOFs / Scheduled || Unconf Session || Unconf Session || Unconf Session || Unconf Session||Unconf Session||Unconf Session || Unconf Session ||Unconf Session || Unconf Session || Unconf Session&lt;br /&gt;
|-&lt;br /&gt;
|11:00 - 11:45|| BOFs / Scheduled || Unconf Session || Unconf Session || Unconf Session || Unconf Session||Unconf Session||Unconf Session || Unconf Session ||Unconf Session || Unconf Session || Unconf Session&lt;br /&gt;
|-&lt;br /&gt;
|12:00 - 12:45|| Lightning Talks || Unconf Session || Unconf Session || Unconf Session || Unconf Session||Unconf Session||Unconf Session || Unconf Session ||Unconf Session || Unconf Session || Unconf Session&lt;br /&gt;
|-&lt;br /&gt;
!12:45 - 13:45||colspan=13|Lunch and Networking&lt;br /&gt;
|-&lt;br /&gt;
|13:45 - 14:30|| BOFs / Scheduled || Unconf Session || Unconf Session || Unconf Session || Unconf Session||Unconf Session||Unconf Session || Unconf Session ||Unconf Session || Unconf Session || Unconf Session&lt;br /&gt;
|-&lt;br /&gt;
|14:45 - 15:30|| BOFs / Scheduled || Unconf Session || Unconf Session || Unconf Session || Unconf Session||Unconf Session||Unconf Session || Unconf Session ||Unconf Session || Unconf Session || Unconf Session&lt;br /&gt;
|-&lt;br /&gt;
!15:30 - 16:00||colspan=13|We need to be out of Aviva no later than 16:00.&lt;br /&gt;
|-&lt;br /&gt;
!17:45||colspan=13|Doors open for the Ireland / Norway Football game. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The BOF / Scheduled session room is out of scope of the unconference team and will be decided and planned by the content committee.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Rooms set up - confirm that we do plan to use all of the rooms on the schedule board &amp;amp; we need to know which rooms have projectors.&lt;br /&gt;
* A bunch of 4x6&amp;quot; post it notes&lt;br /&gt;
* A schedule board pre-printed with times and rooms with spaces large enough to accommodate 4x6&amp;quot; post it notes (alternative is painter's tape &amp;amp; a wall)&lt;br /&gt;
* Sharpie pens&lt;br /&gt;
&lt;br /&gt;
== Organizing Team ==&lt;br /&gt;
&lt;br /&gt;
* Lead: [[User:Dawnfoster|Dawn Foster]]&lt;br /&gt;
* Notes / wiki organizer - put a process in place to allow people to take notes and maintain a copy (physical board is the master) of the schedule in the wiki.&lt;br /&gt;
* Schedule volunteers - 2 people (2 shifts - each working half the day) to help manage the schedule board, help people get things scheduled, update schedule changes in the wiki copy, etc. &lt;br /&gt;
* Note taking volunteers - each session needs one or more people to take notes and put them in the wiki&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/MeeGo_Conference2010/MCTS_CSA_Future</id>
		<title>MeeGo Conference2010/MCTS CSA Future</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/MeeGo_Conference2010/MCTS_CSA_Future"/>
				<updated>2010-11-12T06:56:57Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: Created page with &amp;quot;'''MeeGo Core Test Suite Current State and future workshop'''  MeeGo Core Test Suite (MCTS) [1] is set of test components intended for verification of MeeGo Core OS according to …&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''MeeGo Core Test Suite Current State and future workshop'''&lt;br /&gt;
&lt;br /&gt;
MeeGo Core Test Suite (MCTS) [1] is set of test components intended for verification of MeeGo Core OS according to test plan [2] covering functional and non-functional (efficiency and reliability) aspects [3]. MCTS is actively used by MeeGo Core OS QA. Currently MCTS offers more than 2000 test cases for various components including component level test cases and system level, E2E type test cases. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test.&lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test cases are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS.&lt;br /&gt;
&lt;br /&gt;
Currently we have had contributions to MCTS from different sources and there are lots of variations in methods how test cases are created, test case quality and how test cases are documented. Also there are overlapping test cases e.g. currently BlueZ test cases can be found from three different test components.  &lt;br /&gt;
&lt;br /&gt;
For the future of MCTS I see following as key points. &lt;br /&gt;
* At the end of the day we shall have on unified MCTS applicable for any reference HW. &lt;br /&gt;
* Every test case has been described according to test definition [4] &lt;br /&gt;
* MCTS will have only one test component for each library&lt;br /&gt;
* MCTS has only one Common library providing services for all MCTS components&lt;br /&gt;
* All test cases in MCTS have been developed according to guidelines [5] at: &lt;br /&gt;
* API coverage has been defined according to defined methods [6] and published with test assets [7]. &lt;br /&gt;
* Each component has good descriptions in Test Specification [8]&lt;br /&gt;
* Each Component has a test plan [9]&lt;br /&gt;
&lt;br /&gt;
Target of this activity is that MeeGo Developers can trust and rely on MCTS results with any hardware &lt;br /&gt;
 &lt;br /&gt;
As addition to these I see one more quite comprehensive element and it is freedom of test developers to choose language they want Python, Perl, C++, and so forth). In order to make usage of MCTS easy for anyone it is important to unify the ways test cases are defined, documented and so forth. &lt;br /&gt;
&lt;br /&gt;
[1] MeeGo Core Test Suite - MCTS - http://gitorious.org/qa-tools/mcts&lt;br /&gt;
&lt;br /&gt;
[2] MeeGo 1.2 Core OS Test Plan - http://wiki.meego.com/Quality/TestPlan/MeeGo_Core_Test_Plan &lt;br /&gt;
&lt;br /&gt;
[3] Test Areas describing quality characteristics - http://wiki.meego.com/Quality/TestAreas &lt;br /&gt;
&lt;br /&gt;
[4] Test definition - http://wiki.meego.com/Test_Packaging/Test_Plan &lt;br /&gt;
&lt;br /&gt;
[5] MCTS Development Guideline - http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline&lt;br /&gt;
&lt;br /&gt;
[6] API analysis for functional test case design  - http://wiki.meego.com/Quality/TestSuite&lt;br /&gt;
MCTS/MCTS_API_analysis)&lt;br /&gt;
&lt;br /&gt;
[7] Coverage analysis spreadsheets - http://gitorious.org/qa-tools/mcts-coverage &lt;br /&gt;
&lt;br /&gt;
[8] Example of test specification of MCTS test suite - http://wiki.meego.com/QualityTestSuiteVideo_Playback_Driver_Test_Specification &lt;br /&gt;
&lt;br /&gt;
[9] Template for test plan - http://wiki.meego.com/CompTestPlanTemplate)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kindest Regards, &lt;br /&gt;
&lt;br /&gt;
	Toropainen&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/MeeGo_Conference_2010/Unconference</id>
		<title>MeeGo Conference 2010/Unconference</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/MeeGo_Conference_2010/Unconference"/>
				<updated>2010-11-12T06:53:22Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* I plan to present ... */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Day 3 of the [http://conference2010.meego.com MeeGo Conference] will be primarily an unconference run in the BarCamp style. We will also have one room with scheduled activities running in parallel to the unconference for Birds of a Feather sessions, lightning talks and similar activities. &lt;br /&gt;
&lt;br /&gt;
== What is an Unconference and Why should I attend? ==&lt;br /&gt;
&lt;br /&gt;
We've been getting a lot of questions about the unconference day from people who aren't convinced that it is worth their time to attend. [[User:Dawnfoster|I (Dawn)]] have attended many unconferences and organized several of them, and I can honestly say that I usually get as much, if not more, out of them than I do from traditional conferences.&lt;br /&gt;
&lt;br /&gt;
=== Brief Description ===&lt;br /&gt;
&lt;br /&gt;
An unconference is an ad-hoc gathering organized by the attendees for the attendees. The concept originated out of a desire for people to share and learn in an open environment. It is an intense event with discussions, demos and interaction from participants. You never quite know what to expect at an unconference, since each one is shaped by the attendees. When you arrive on Wednesday morning, there will be an agenda framework (times / rooms), but the content for the sessions will be decided by the participants.&lt;br /&gt;
&lt;br /&gt;
=== Why should I attend ===&lt;br /&gt;
&lt;br /&gt;
'''To Present and Lead'''&lt;br /&gt;
* Anyone can present or lead a discussion, so you can talk about any topic of interest to you.&lt;br /&gt;
* If you submitted a session, and it wasn't approved for the main conference, but you still think it would be interesting, you can present it here.&lt;br /&gt;
* We will have plenty of smaller rooms for niche topics of interest to a few people - those rarely fit into a conference format, but work nicely in one of our smaller unconference rooms.&lt;br /&gt;
* It's a great opportunity to follow up on a topic presented in the first days and have a more detailed discussion.&lt;br /&gt;
&lt;br /&gt;
'''To Collaborate and Network'''&lt;br /&gt;
* Use the time to collaborate with people on an interesting MeeGo project.&lt;br /&gt;
* Great opportunity to talk to experts about subjects not covered in the first two days.&lt;br /&gt;
* Network and meet other people interested in our work&lt;br /&gt;
* Learn more about what others need and get feedback on new ways to use MeeGo&lt;br /&gt;
* Collaborate on actual work related to MeeGo in smaller groups&lt;br /&gt;
* Have group discussions or meetings&lt;br /&gt;
&lt;br /&gt;
'''To Learn and Innovate'''&lt;br /&gt;
* It is a great way to spot new talents, new movements, tendencies and upcoming technologies that weren't mature enough for the main conference.&lt;br /&gt;
* An unconference is basically like the conference, but with subjects chosen by the audience (by interest), which means there's a high chance of finding interesting topics.&lt;br /&gt;
* We have a community of interesting smart people, so we should expect plenty of interesting sessions.&lt;br /&gt;
* The flexible format allows for interesting out of the box ideas and ways to accommodate different formats.&lt;br /&gt;
* You are encouraged to use the [http://en.wikipedia.org/wiki/Law_of_Two_Feet#Law_of_Two_Feet Law of Two Feet] - if you go to a session and it isn't what you had hoped, you are encouraged to get up and move to another session.&lt;br /&gt;
* Come home with a fresh set of cutting-edge ideas and inspiration at the front of innovation within MeeGo.&lt;br /&gt;
&lt;br /&gt;
=== More information ===&lt;br /&gt;
* [http://www.youtube.com/watch?v=7XlqEDIJzfw What is BarCamp? video] - short and worth your time to watch.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Barcamp BarCamp Wikipedia entry] with some history and other information.&lt;br /&gt;
&lt;br /&gt;
== Session Ideas ==&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT: Adding a session to the list below does not reserve a spot on the schedule board on Wednesday. The only way to guarantee a schedule slot is by showing up early and putting your session on the grid in person. See the [[#Schedule]] section below for more details.'''&lt;br /&gt;
&lt;br /&gt;
=== Tips for Presenters ===&lt;br /&gt;
&lt;br /&gt;
* Discussion formats work slightly better than standard conference presentations. Leading a group of people in a discussion is much more interactive and gives people a nice break from the past 2 days of presentations.&lt;br /&gt;
* Prepare in advance - if you plan to lead a session, prepare as you would for any other conference.&lt;br /&gt;
* Have a topic that isn't 45 minutes of material? Team up with one or more people with related topics and share the session.&lt;br /&gt;
* Respect people's time and do not allow your session to run longer than scheduled. Other people will be waiting to get into the room to set up for the next session.&lt;br /&gt;
&lt;br /&gt;
=== I plan to present ... ===&lt;br /&gt;
&lt;br /&gt;
Leave a note with the topic you plan to present along with your name and a link to more information about yourself.&lt;br /&gt;
&lt;br /&gt;
* The title of an example topic description --[[User:Dawnfoster|Dawnfoster]] 22:09, 21 September 2010 (UTC)&lt;br /&gt;
* [http://conference2010.meego.com/session/accounts-sso Introduction to the new Accounts &amp;amp; Single Sign On framework] --[[User:Mardy|Mardy]] 24 Sep 2010 11:52:11 (UTC)&lt;br /&gt;
* [http://conference2010.meego.com/session/content-fw-my-god-its-full-data Introduction to Tracker/Content FW: one of really innovating bits in Meego] --[[User:Ifrade|Frade]] 06 Oct 2010 13:21:00 (EETC)&lt;br /&gt;
* [[MeeGo_Conference2010/QtM_BoF_Unconference|QtMobility &amp;amp; MeeGo BoF/Unconference]] -- [[User:mikeleib|mikeleib]] 06 Oct 2010 04:03 UTC&lt;br /&gt;
* [[MeeGo_Conference_2010/Unconference/ARM|MeeGo ARM Discussion Forum]] -- [[User:stskeeps|stskeeps]] 07 Oct 2010 15:57 UTC&lt;br /&gt;
* [[MeeGo_Conference_2010/Unconference/Plasma|Plasma and QtComponents BoF]] -- [[User:mart|mart]] 07 Oct 2010 23:10 UTC&lt;br /&gt;
* [[MeeGo_Conference_2010/Unconference/TrackerHandsOn|Hands on BOF on making efficient SPARQL queries and mastering the different APIs of MeeGo's metadata service, Tracker]] -- [[User:pvanhoof|pvanhoof]], [[User:abustany|abustany]] 11 Oct 2010 10:34 UTC&lt;br /&gt;
* [http://conference2010.meego.com/session/working-together-world-ready-meego-developers-and-translators MeeGo Internationalization and Localization Discussion] [[User:margie|margie]]--A continuation of the discussion of the new process we are proposing to use for the next MeeGo release&lt;br /&gt;
* [http://wiki.meego.com/MeeGo_Conference_2010/Unconference/Hardware_adaptations_in_MeeGo Hardware adaptations in MeeGo] [[User:stskeeps|stskeeps]] -- An introduction to HW adaptations in MeeGo and the architecture and requirements process around it&lt;br /&gt;
* [http://lists.meego.com/pipermail/meego-qa/2010-November/000091.html Open test management proposal with tool support] [[User:vilvo|vilvo]] -- A proposal to make MeeGo core OS and UX profiles test management more open and how that can be supported with Quality Assurance tools.&lt;br /&gt;
* [http://lists.meego.com/pipermail/meego-community/2010-November/002504.html Get your hands dirty with test tools] [[User:timoph|timoph]] -- Information and live demos on test tools&lt;br /&gt;
* [[MeeGo_Conference2010/MCTS_CSA_Future|MeeGo Core Test Suite Current State and future workshop]] --&lt;br /&gt;
&lt;br /&gt;
=== I would like to see someone talk about ... ===&lt;br /&gt;
&lt;br /&gt;
Have something that you want to see someone else talk about? Feel free to use this space to brainstorm topics.&lt;br /&gt;
&lt;br /&gt;
* Tips for contributing code to MeeGo and getting it accepted --[[User:Dawnfoster|Dawnfoster]] 22:09, 21 September 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
* How to become a MeeGo platform hacker/developer- How to become part of the specification, design and development of the core platform, in one's favorite vertical.&lt;br /&gt;
&lt;br /&gt;
* Q&amp;amp;A and technical discussion of core compliance package list --[[User:Joel|Joel Clark]] 09:04, 5 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
=== Schedule Grid and Process for Scheduling Sessions ===&lt;br /&gt;
&lt;br /&gt;
We will have a big grid on the wall where people can post their session ideas on the morning of the event (no sessions reserved in advance). Make sure you arrive on time if you plan to lead a session! &lt;br /&gt;
&lt;br /&gt;
'''To Schedule a Session''':&lt;br /&gt;
* The schedule board will open up after the welcome is completed.&lt;br /&gt;
* Write your topic in big letters on your post it note.&lt;br /&gt;
* Include your contact information in smaller letters (name and cell phone or email address)&lt;br /&gt;
* Put your post it note on the board picking a room and time that looks good to you.&lt;br /&gt;
* Make sure that big meaty topics are in large rooms with niche topics in small rooms.&lt;br /&gt;
&lt;br /&gt;
'''Things to keep in mind''':&lt;br /&gt;
* The schedule board is dynamic and may change at any time during the day.&lt;br /&gt;
* The schedule board on the wall is always the master.&lt;br /&gt;
* We may need to move sessions, so make sure you double check the board to make sure that you are going to the right room / time for the session you want to attend.&lt;br /&gt;
* Sessions that seem very similar may be asked to combine.&lt;br /&gt;
* We reserve the right to move things around to make sure that popular topics have large rooms.&lt;br /&gt;
&lt;br /&gt;
=== Day Schedule and Grid Format ===&lt;br /&gt;
&lt;br /&gt;
This is an example of how the grid will look and is for planning purposes only - '''please do not enter sessions or add other information to the grid'''&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Time || Presidents 1 (sits 300) || Presidents 2 (sits 280) || Vavasour (sits 80) || 1872 area (sits 120) || Havelock (sits 130)||Box 1 (sits 20)||Box 2 (sits 20)|| Box 3 (sits 20)|| Box 4 (sits 20)|| Box 5 (sits 20)|| Box 6 (sits 20)|| Other&lt;br /&gt;
|-&lt;br /&gt;
!9:00 - 9:15 ||colspan=13|Atrium: Welcome - What is an unconference and how do I participate? &lt;br /&gt;
|-&lt;br /&gt;
!9:15 - 9:45 ||colspan=13|Atrium: Schedule board open - people post sessions on the grid. &lt;br /&gt;
|-&lt;br /&gt;
!9:45 - 10:00||colspan=13|Atrium: Schedule board adjustments (combine duplicates, adjust rooms, etc.)&lt;br /&gt;
|-&lt;br /&gt;
|10:00 - 10:45|| BOFs / Scheduled || Unconf Session || Unconf Session || Unconf Session || Unconf Session||Unconf Session||Unconf Session || Unconf Session ||Unconf Session || Unconf Session || Unconf Session&lt;br /&gt;
|-&lt;br /&gt;
|11:00 - 11:45|| BOFs / Scheduled || Unconf Session || Unconf Session || Unconf Session || Unconf Session||Unconf Session||Unconf Session || Unconf Session ||Unconf Session || Unconf Session || Unconf Session&lt;br /&gt;
|-&lt;br /&gt;
|12:00 - 12:45|| Lightning Talks || Unconf Session || Unconf Session || Unconf Session || Unconf Session||Unconf Session||Unconf Session || Unconf Session ||Unconf Session || Unconf Session || Unconf Session&lt;br /&gt;
|-&lt;br /&gt;
!12:45 - 13:45||colspan=13|Lunch and Networking&lt;br /&gt;
|-&lt;br /&gt;
|13:45 - 14:30|| BOFs / Scheduled || Unconf Session || Unconf Session || Unconf Session || Unconf Session||Unconf Session||Unconf Session || Unconf Session ||Unconf Session || Unconf Session || Unconf Session&lt;br /&gt;
|-&lt;br /&gt;
|14:45 - 15:30|| BOFs / Scheduled || Unconf Session || Unconf Session || Unconf Session || Unconf Session||Unconf Session||Unconf Session || Unconf Session ||Unconf Session || Unconf Session || Unconf Session&lt;br /&gt;
|-&lt;br /&gt;
!15:30 - 16:00||colspan=13|We need to be out of Aviva no later than 16:00.&lt;br /&gt;
|-&lt;br /&gt;
!17:45||colspan=13|Doors open for the Ireland / Norway Football game. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The BOF / Scheduled session room is out of scope of the unconference team and will be decided and planned by the content committee.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Rooms set up - confirm that we do plan to use all of the rooms on the schedule board &amp;amp; we need to know which rooms have projectors.&lt;br /&gt;
* A bunch of 4x6&amp;quot; post it notes&lt;br /&gt;
* A schedule board pre-printed with times and rooms with spaces large enough to accommodate 4x6&amp;quot; post it notes (alternative is painter's tape &amp;amp; a wall)&lt;br /&gt;
* Sharpie pens&lt;br /&gt;
&lt;br /&gt;
== Organizing Team ==&lt;br /&gt;
&lt;br /&gt;
* Lead: [[User:Dawnfoster|Dawn Foster]]&lt;br /&gt;
* Notes / wiki organizer - put a process in place to allow people to take notes and maintain a copy (physical board is the master) of the schedule in the wiki.&lt;br /&gt;
* Schedule volunteers - 2 people (2 shifts - each working half the day) to help manage the schedule board, help people get things scheduled, update schedule changes in the wiki copy, etc. &lt;br /&gt;
* Note taking volunteers - each session needs one or more people to take notes and put them in the wiki&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/Testability-checklist</id>
		<title>Quality/Plans/Testability-checklist</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/Testability-checklist"/>
				<updated>2010-10-12T05:53:14Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Testability Checklist */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For a previous version of the Testability Checklist, see: http://wiki.meego.com/Quality/Testability_checklist_MeeGo_1.1&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Describing user interaction is a simple way to describe features, thus, they should be simple to write and to understand. By describing user interaction with the features in Bugzilla, features can contain sufficient information to make test development possible without increasing the workload of the feature owner (as much as the [http://wiki.meego.com/Quality/Testability_checklist_MeeGo_1.1 &amp;quot;MeeGo 1.1 Testability Checklist&amp;quot;]). The testability checklist used for MeeGo 1.1 contained items that were related to the process of feature creation which should be self evident and not be included in testability checklist.&lt;br /&gt;
&lt;br /&gt;
== Describing the Feature ==&lt;br /&gt;
The most effective way to create testable features from QA point of view is to describe how the user interacts with the feature. The objective of writing such descriptions is to explain the feature to the extent that a test to verify the feature can be written. To that end, after writing a description, ask yourself this question: &lt;br /&gt;
&lt;br /&gt;
'''Can someone write a test using the information in this description?'''&lt;br /&gt;
&lt;br /&gt;
If the answer is 'yes' then the description is complete, if the answer is 'no', then it may be worth it to consider rewriting the it or (if this seems like it will not help) add extra information (see the extra information section). &lt;br /&gt;
&lt;br /&gt;
Some of the use case may not be fully applicable for Core OS QA but in most of the use cases can be divided to smaller particles and can be considered as enablers for the main use case. E.g. Browsing use case can be verified using these smaller particles (enablers) as follows:&lt;br /&gt;
* Scan and connect to WLAN Access Point and conduct data transfer &lt;br /&gt;
* Download specific file over WLAN with performance measurement (Throughput)&lt;br /&gt;
&lt;br /&gt;
== Structuring the Description ==&lt;br /&gt;
There is a good wikipedia article on the concept of the describing a feature from a user's point of view [http://en.wikipedia.org/wiki/User_story here.] While there are some differences from the article because MeeGo is not a small project that is being implemented by one team.&lt;br /&gt;
&lt;br /&gt;
Three basic forms for a description are:&lt;br /&gt;
* I as a &amp;amp;lt;user type/role&amp;amp;gt; want to &amp;amp;lt;perform action&amp;amp;gt; and &amp;amp;lt;result/goal&amp;amp;gt;&lt;br /&gt;
* &amp;quot;As a &amp;amp;lt;role&amp;amp;gt;, I want &amp;amp;lt;goal/desire&amp;amp;gt; so that &amp;amp;lt;benefit&amp;amp;gt;&amp;quot; (from wikipedia)&lt;br /&gt;
* &amp;quot;As a &amp;amp;lt;role&amp;amp;gt;, I want &amp;amp;lt;goal/desire&amp;amp;gt;&amp;quot; (shortened version from wikipedia)&lt;br /&gt;
&lt;br /&gt;
It is important to define the goal clearly. This allows the success criteria of the test to be clearly defined.&lt;br /&gt;
&lt;br /&gt;
It is also important to define the set of actions leading up to the goal clearly. For example, if the user needs to tilt the device from horizontal to vertical for an action to occur, this needs to be described.&lt;br /&gt;
&lt;br /&gt;
=== Dissected Example ===&lt;br /&gt;
The following feature can be found [http://bugs.meego.com/show_bug.cgi?id=6724 here] and can be considered a good example of a feature description:&lt;br /&gt;
&lt;br /&gt;
''User is browsing multimedia content in browser and a system event triggers a sound, e.g. battery low or alarm. System sound is mixed in with the browser audio.''&lt;br /&gt;
&lt;br /&gt;
We can see in this example:&lt;br /&gt;
* The user action (browsing multimedia content) is defined clearly.&lt;br /&gt;
* There is system action (system event triggering a sound).&lt;br /&gt;
* The goal is clearly defined (&amp;quot;System sound is mixed in with the browser audio&amp;quot;).&lt;br /&gt;
From the above description, a test can be written.&lt;br /&gt;
&lt;br /&gt;
== Extra Information ==&lt;br /&gt;
The basic description from a user's point of view does not usually include the provision for extra information (things that the user would not see). This is usually not a problem for a single, coherent, project. In a project with as many components (from as many sources) as MeeGo, extra information may be required.&lt;br /&gt;
&lt;br /&gt;
NOTE: Adding extra information is not a requirement, if your feature is adequately described by the description itself, then, stop there.&lt;br /&gt;
&lt;br /&gt;
Some suggestions on what extra information to add:&lt;br /&gt;
* Requirements: e.g. binutils needs to be installed for this feature to work.&lt;br /&gt;
* Time Limitations: The operation needs to be performed in less than 5 seconds.&lt;br /&gt;
* Specific API that should be used (if this is not obvious).&lt;br /&gt;
&lt;br /&gt;
== Testability Checklist ==&lt;br /&gt;
Even though Testability Checklist is tool for QA teams, persons creating features in Bugzilla should have a thorough look to this in order to make feature flow fluently. Testability Checklist contains mandatory parts (to fulfill the criteria to have Testability marked as YES) and optional part which is recommended for one creating features to consider seriously if there is such information available that will help QA teams to conduct their work at appropriate level, leading well tested MeeGo features and Releases. &lt;br /&gt;
&lt;br /&gt;
'''Mandatory:'''&lt;br /&gt;
* '''Can I write a test based on the information in this description?''' &amp;lt;br /&amp;gt;&lt;br /&gt;
** Is the goal defined clearly? &amp;lt;br /&amp;gt;&lt;br /&gt;
** Is the procedure required to reach the goal clearly defined?&lt;br /&gt;
** Is the description short enough?&lt;br /&gt;
** Is there any further information that is easy to put down and may help a test developer?&lt;br /&gt;
* '''Are relevant technology parameters available (Sample rates, Bit Rates, supported picture sizes, etc.) described?'''&lt;br /&gt;
* '''For Core OS: Is API Under test defined clearly?'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Optional (and highly recommended):'''&lt;br /&gt;
* Is there be reference to API documentation of API(s) implementing features? Location where more information is available? &amp;lt;br /&amp;gt;&lt;br /&gt;
* Is there '''Performance''' aspects or requirements (response time, latency, raw throughput) that should be verified concerning this feature? &amp;lt;br /&amp;gt;&lt;br /&gt;
* Is there '''Reliability''' aspects or requirements (expected use rate per day, how long feature should survive in stress situation) that should be verified?&lt;br /&gt;
* Is there '''Power Management''' aspects or requirements (E.g. local music playback use case should not consume more than XX,XX mW) that should be verified?&lt;br /&gt;
* Are there clear targets in terms of performance or reliability concerning this feature?&lt;br /&gt;
* Is there significant interactions (e.g. local music playback while browsing) with other features which should be taken into account when designing test cases concerning this feature?&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
By creating descriptions at user level for each feature, the feature owner can avoid having to write a [http://wiki.meego.com/Quality/Testability_checklist_MeeGo_1.1 &amp;quot;Testability Checklist&amp;quot;] as was required for MeeGo 1.1. Adequately written descriptions should make life easier for both the product owner and the test developer.&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T06:11:56Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Test results shall be posted to appropriate MeeGo mailing list and results shall be stored to punblicly available location  (link to be added to MeeGo Core testing results).&lt;br /&gt;
* Provide test asset with the component including detailed documentation. &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset.&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
* Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
* Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
* QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Testability can be seen as main key for the success of QA. In order to ensure high quality QA, testability percentage of the MeeGo 1.2. features shall be 90% or higher. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
* Any UI or application related testing. &lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Each component will have detailed test plan for the specific component. Test Plans are available in [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details (each component name is link to test plan). &lt;br /&gt;
&lt;br /&gt;
Test plan shall follow structure described below: : &lt;br /&gt;
&lt;br /&gt;
* 1 Introduction&lt;br /&gt;
* 2 Test Coverage&lt;br /&gt;
** 2.1 Software Coverage&lt;br /&gt;
** 2.2 Hardware Coverage&lt;br /&gt;
** 2.3 Items not Covered&lt;br /&gt;
* 3 Running the tests&lt;br /&gt;
** 3.1 Executing tests&lt;br /&gt;
** 3.2 Test case arguments&lt;br /&gt;
** 3.3 Test cases&lt;br /&gt;
** 3.4 Configuration file&lt;br /&gt;
* 4 Module Design and Architecture&lt;br /&gt;
** 4.1 Architecture diagram&lt;br /&gt;
* 5 References&lt;br /&gt;
* 6 Change History&lt;br /&gt;
&lt;br /&gt;
See [http://wiki.meego.com/Quality/TestSuite/Video_Playback_Driver_Test_Specification Video playback driver test plan] for reference.&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
&lt;br /&gt;
[[File:Coreosqawkcycle.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionality which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for release content developed under Bugzilla components&lt;br /&gt;
* Set of fully automated system level test cases verifying functionality from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing.&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, QA will start the full validation testing for it, following test will be involved:&lt;br /&gt;
&lt;br /&gt;
* Component Functional Test – which will follow the Bugzilla component test plan to run all tests.&lt;br /&gt;
* System functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
* System Non-functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
&lt;br /&gt;
Purpose of the Full Pass is to measure release maturity in detailed level. In Full Pass testing entire test asset is executed for all the features released and previously marked as verified. Thus visibility and detailed information about release maturity is gained. Target is to have two Full Pass testing cycles during release life cycle. First Pull Pass test round starts at feature complete and last round ends few days prior to release date. &lt;br /&gt;
&lt;br /&gt;
Between these two rounds failing cases and related bugs are followed closely in weekly testing. If there are very good grounds Full Pass testing can be executed more than twice during release cycle life cycle.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== Risks ==&lt;br /&gt;
&lt;br /&gt;
One main expectation from program management is that QA is able to pinpoint risks concerning Quality Risks. For MeeGo 1.2 QA sees following risks: &lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Risk #&lt;br /&gt;
!|Description&lt;br /&gt;
!|impact &lt;br /&gt;
!|Severity&lt;br /&gt;
!|Mitigation actions &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 1 || Insufficient documentation and/or low quality feature descriptions not meeting that testability requirements || Bad quality test asset not verifying feature in detailed level. ||  '''High''' || Significant effort put to feature testability in early phase of release life cycle. Review test assets with feature owner and assignees. &lt;br /&gt;
|-&lt;br /&gt;
|| 2 || Insufficient amount of system level test cases to show functionality of the release || Unclear release quality statement. Community confused and developers hunting errors which do not exist||  '''High''' || Significant effort to system level test case development. Each functionality (main success scenario and it's variants tested at least with one set of parameters.&lt;br /&gt;
|-&lt;br /&gt;
|| 3 || Insufficient amount of system level test cases to show functionality of the release || Unclear release quality statement. Community confused and developers hunting errors which do not exist|| '''High''' || Significant effort to system level test case development. Each functionality (main success scenario and it's variants tested at least with one set of parameters. &lt;br /&gt;
|-&lt;br /&gt;
|| 4 || Changed components are verified in weekly testing but if dependencies are not understood impact to indirectly affected component not verified. || Surprises in release quality || Medium || Developers to address dependencies in detailed level showing significant dependencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;br /&gt;
* MeeGo test area terminology: http://wiki.meego.com/Quality/TestAreas&lt;br /&gt;
* Release Engineering Process: http://wiki.meego.com/Release_Engineering/Process&lt;br /&gt;
* Release Engineering/Release Timeline: http://wiki.meego.com/Release_Engineering/Release_Timeline&lt;br /&gt;
* MCTS Development Guideline: http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline&lt;br /&gt;
* QA tools team: http://wiki.meego.com/index.php?title=Quality/TestPlan/MeeGo_Core_Test_Plan&amp;amp;action=edit&amp;amp;section=28 &lt;br /&gt;
* MeeGo Handset Testing: http://wiki.meego.com/Quality#MeeGo_Handset_Testing&lt;br /&gt;
* Testability Checklist: http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
* Test Design Process And Guideline: http://wiki.meego.com/Quality/TestDesignProcessAndGuideline&lt;br /&gt;
* Test Packaging: http://wiki.meego.com/Test_Packaging/Test_Plan&lt;br /&gt;
* Common Test Plan Template: http://wiki.meego.com/TestCaseTemplate&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MCTS API analysis: http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis&lt;br /&gt;
* Video Playback Driver Test Specification: http://wiki.meego.com/Quality/TestSuite/Video_Playback_Driver_Test_Specification&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T06:08:58Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Test results shall be posted to appropriate MeeGo mailing list and results shall be stored to punblicly available location  (link to be added to MeeGo Core testing results).&lt;br /&gt;
* Provide test asset with the component including detailed documentation. &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset.&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
* Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
* Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
* QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Testability can be seen as main key for the success of QA. In order to ensure high quality QA, testability percentage of the MeeGo 1.2. features shall be 90% or higher. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
* Any UI or application related testing. &lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Each component will have detailed test plan for the specific component. Test Plans are available in [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details (each component name is link to test plan). &lt;br /&gt;
&lt;br /&gt;
Test plan shall follow structure described below: : &lt;br /&gt;
&lt;br /&gt;
* 1 Introduction&lt;br /&gt;
* 2 Test Coverage&lt;br /&gt;
** 2.1 Software Coverage&lt;br /&gt;
** 2.2 Hardware Coverage&lt;br /&gt;
** 2.3 Items not Covered&lt;br /&gt;
* 3 Running the tests&lt;br /&gt;
** 3.1 Executing tests&lt;br /&gt;
** 3.2 Test case arguments&lt;br /&gt;
** 3.3 Test cases&lt;br /&gt;
** 3.4 Configuration file&lt;br /&gt;
* 4 Module Design and Architecture&lt;br /&gt;
** 4.1 Architecture diagram&lt;br /&gt;
* 5 References&lt;br /&gt;
* 6 Change History&lt;br /&gt;
&lt;br /&gt;
See [http://wiki.meego.com/Quality/TestSuite/Video_Playback_Driver_Test_Specification Video playback driver test plan] for reference.&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
&lt;br /&gt;
[[File:Coreosqawkcycle.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionality which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for release content developed under Bugzilla components&lt;br /&gt;
* Set of fully automated system level test cases verifying functionality from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing.&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, QA will start the full validation testing for it, following test will be involved:&lt;br /&gt;
&lt;br /&gt;
* Component Functional Test – which will follow the Bugzilla component test plan to run all tests.&lt;br /&gt;
* System functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
* System Non-functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
&lt;br /&gt;
Purpose of the Full Pass is to measure release maturity in detailed level. In Full Pass testing entire test asset is executed for all the features released and previously marked as verified. Thus visibility and detailed information about release maturity is gained. Target is to have two Full Pass testing cycles during release life cycle. First Pull Pass test round starts at feature complete and last round ends few days prior to release date. &lt;br /&gt;
&lt;br /&gt;
Between these two rounds failing cases and related bugs are followed closely in weekly testing. If there are very good grounds Full Pass testing can be executed more than twice during release cycle life cycle.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== Risks ==&lt;br /&gt;
&lt;br /&gt;
One main expectation from program management is that QA is able to pinpoint risks concerning Quality Risks. For MeeGo 1.2 QA sees following risks: &lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Risk #&lt;br /&gt;
!|Description&lt;br /&gt;
!|impact &lt;br /&gt;
!|Severity&lt;br /&gt;
!|Mitigation actions &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 1 || Insufficient documentation and/or low quality feature descriptions not meeting that testability requirements || Bad quality test asset not verifying feature in detailed level. ||  '''High''' || Significant effort put to feature testability in early phase of release life cycle. Review test assets with feature owner and assignees. &lt;br /&gt;
|-&lt;br /&gt;
|| 2 || Insufficient amount of system level test cases to show functionality of the release || Unclear release quality statement. Community confused and developers hunting errors which do not exist||  '''High''' || Significant effort to system level test case development. Each functionality (main success scenario and it's variants tested at least with one set of parameters.&lt;br /&gt;
|-&lt;br /&gt;
|| 3 || Insufficient amount of system level test cases to show functionality of the release || Unclear release quality statement. Community confused and developers hunting errors which do not exist|| '''High''' || Significant effort to system level test case development. Each functionality (main success scenario and it's variants tested at least with one set of parameters. &lt;br /&gt;
|-&lt;br /&gt;
|| 4 || Changed components are verified in weekly testing but if dependencies are not understood impact to indirectly affected component not verified. || Surprises in release quality || Medium || Developers to address dependencies in detailed level showing significant dependencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;br /&gt;
* MeeGo test area terminology: http://wiki.meego.com/Quality/TestAreas&lt;br /&gt;
* Release Engineering Process: http://wiki.meego.com/Release_Engineering/Process&lt;br /&gt;
* Release Engineering/Release Timeline: http://wiki.meego.com/Release_Engineering/Release_Timeline&lt;br /&gt;
* MCTS Development Guideline: http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline&lt;br /&gt;
* QA tools team: http://wiki.meego.com/index.php?title=Quality/TestPlan/MeeGo_Core_Test_Plan&amp;amp;action=edit&amp;amp;section=28 &lt;br /&gt;
* MeeGo Handset Testing: http://wiki.meego.com/Quality#MeeGo_Handset_Testing&lt;br /&gt;
* Testability Checklist: http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
* Test Design Process And Guideline: http://wiki.meego.com/Quality/TestDesignProcessAndGuideline&lt;br /&gt;
* &lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T05:52:54Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Sanity (Daily) Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Test results shall be posted to appropriate MeeGo mailing list and results shall be stored to punblicly available location  (link to be added to MeeGo Core testing results).&lt;br /&gt;
* Provide test asset with the component including detailed documentation. &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset.&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
* Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
* Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
* QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Testability can be seen as main key for the success of QA. In order to ensure high quality QA, testability percentage of the MeeGo 1.2. features shall be 90% or higher. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
* Any UI or application related testing. &lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Each component will have detailed test plan for the specific component. Test Plans are available in [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details (each component name is link to test plan). &lt;br /&gt;
&lt;br /&gt;
Test plan shall follow structure described below: : &lt;br /&gt;
&lt;br /&gt;
* 1 Introduction&lt;br /&gt;
* 2 Test Coverage&lt;br /&gt;
** 2.1 Software Coverage&lt;br /&gt;
** 2.2 Hardware Coverage&lt;br /&gt;
** 2.3 Items not Covered&lt;br /&gt;
* 3 Running the tests&lt;br /&gt;
** 3.1 Executing tests&lt;br /&gt;
** 3.2 Test case arguments&lt;br /&gt;
** 3.3 Test cases&lt;br /&gt;
** 3.4 Configuration file&lt;br /&gt;
* 4 Module Design and Architecture&lt;br /&gt;
** 4.1 Architecture diagram&lt;br /&gt;
* 5 References&lt;br /&gt;
* 6 Change History&lt;br /&gt;
&lt;br /&gt;
See [http://wiki.meego.com/Quality/TestSuite/Video_Playback_Driver_Test_Specification Video playback driver test plan] for reference.&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
&lt;br /&gt;
[[File:Coreosqawkcycle.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionality which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for release content developed under Bugzilla components&lt;br /&gt;
* Set of fully automated system level test cases verifying functionality from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing.&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, QA will start the full validation testing for it, following test will be involved:&lt;br /&gt;
&lt;br /&gt;
* Component Functional Test – which will follow the Bugzilla component test plan to run all tests.&lt;br /&gt;
* System functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
* System Non-functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
&lt;br /&gt;
Purpose of the Full Pass is to measure release maturity in detailed level. In Full Pass testing entire test asset is executed for all the features released and previously marked as verified. Thus visibility and detailed information about release maturity is gained. Target is to have two Full Pass testing cycles during release life cycle. First Pull Pass test round starts at feature complete and last round ends few days prior to release date. &lt;br /&gt;
&lt;br /&gt;
Between these two rounds failing cases and related bugs are followed closely in weekly testing. If there are very good grounds Full Pass testing can be executed more than twice during release cycle life cycle.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== Risks ==&lt;br /&gt;
&lt;br /&gt;
One main expectation from program management is that QA is able to pinpoint risks concerning Quality Risks. For MeeGo 1.2 QA sees following risks: &lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Risk #&lt;br /&gt;
!|Description&lt;br /&gt;
!|impact &lt;br /&gt;
!|Severity&lt;br /&gt;
!|Mitigation actions &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 1 || Insufficient documentation and/or low quality feature descriptions not meeting that testability requirements || Bad quality test asset not verifying feature in detailed level. ||  '''High''' || Significant effort put to feature testability in early phase of release life cycle. Review test assets with feature owner and assignees. &lt;br /&gt;
|-&lt;br /&gt;
|| 2 || Insufficient amount of system level test cases to show functionality of the release || Unclear release quality statement. Community confused and developers hunting errors which do not exist||  '''High''' || Significant effort to system level test case development. Each functionality (main success scenario and it's variants tested at least with one set of parameters.&lt;br /&gt;
|-&lt;br /&gt;
|| 3 || Insufficient amount of system level test cases to show functionality of the release || Unclear release quality statement. Community confused and developers hunting errors which do not exist|| '''High''' || Significant effort to system level test case development. Each functionality (main success scenario and it's variants tested at least with one set of parameters. &lt;br /&gt;
|-&lt;br /&gt;
|| 4 || Changed components are verified in weekly testing but if dependencies are not understood impact to indirectly affected component not verified. || Surprises in release quality || Medium || Developers to address dependencies in detailed level showing significant dependencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T05:31:37Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Risks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Test results shall be posted to appropriate MeeGo mailing list and results shall be stored to punblicly available location  (link to be added to MeeGo Core testing results).&lt;br /&gt;
* Provide test asset with the component including detailed documentation. &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset.&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
* Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
* Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
* QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Testability can be seen as main key for the success of QA. In order to ensure high quality QA, testability percentage of the MeeGo 1.2. features shall be 90% or higher. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
* Any UI or application related testing. &lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Each component will have detailed test plan for the specific component. Test Plans are available in [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details (each component name is link to test plan). &lt;br /&gt;
&lt;br /&gt;
Test plan shall follow structure described below: : &lt;br /&gt;
&lt;br /&gt;
* 1 Introduction&lt;br /&gt;
* 2 Test Coverage&lt;br /&gt;
** 2.1 Software Coverage&lt;br /&gt;
** 2.2 Hardware Coverage&lt;br /&gt;
** 2.3 Items not Covered&lt;br /&gt;
* 3 Running the tests&lt;br /&gt;
** 3.1 Executing tests&lt;br /&gt;
** 3.2 Test case arguments&lt;br /&gt;
** 3.3 Test cases&lt;br /&gt;
** 3.4 Configuration file&lt;br /&gt;
* 4 Module Design and Architecture&lt;br /&gt;
** 4.1 Architecture diagram&lt;br /&gt;
* 5 References&lt;br /&gt;
* 6 Change History&lt;br /&gt;
&lt;br /&gt;
See [http://wiki.meego.com/Quality/TestSuite/Video_Playback_Driver_Test_Specification Video playback driver test plan] for reference.&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
&lt;br /&gt;
[[File:Coreosqawkcycle.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionality which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for Bugzilla components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionality from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing.&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, QA will start the full validation testing for it, following test will be involved:&lt;br /&gt;
&lt;br /&gt;
* Component Functional Test – which will follow the Bugzilla component test plan to run all tests.&lt;br /&gt;
* System functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
* System Non-functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
&lt;br /&gt;
Purpose of the Full Pass is to measure release maturity in detailed level. In Full Pass testing entire test asset is executed for all the features released and previously marked as verified. Thus visibility and detailed information about release maturity is gained. Target is to have two Full Pass testing cycles during release life cycle. First Pull Pass test round starts at feature complete and last round ends few days prior to release date. &lt;br /&gt;
&lt;br /&gt;
Between these two rounds failing cases and related bugs are followed closely in weekly testing. If there are very good grounds Full Pass testing can be executed more than twice during release cycle life cycle.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== Risks ==&lt;br /&gt;
&lt;br /&gt;
One main expectation from program management is that QA is able to pinpoint risks concerning Quality Risks. For MeeGo 1.2 QA sees following risks: &lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Risk #&lt;br /&gt;
!|Description&lt;br /&gt;
!|impact &lt;br /&gt;
!|Severity&lt;br /&gt;
!|Mitigation actions &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 1 || Insufficient documentation and/or low quality feature descriptions not meeting that testability requirements || Bad quality test asset not verifying feature in detailed level. ||  '''High''' || Significant effort put to feature testability in early phase of release life cycle. Review test assets with feature owner and assignees. &lt;br /&gt;
|-&lt;br /&gt;
|| 2 || Insufficient amount of system level test cases to show functionality of the release || Unclear release quality statement. Community confused and developers hunting errors which do not exist||  '''High''' || Significant effort to system level test case development. Each functionality (main success scenario and it's variants tested at least with one set of parameters.&lt;br /&gt;
|-&lt;br /&gt;
|| 3 || Insufficient amount of system level test cases to show functionality of the release || Unclear release quality statement. Community confused and developers hunting errors which do not exist|| '''High''' || Significant effort to system level test case development. Each functionality (main success scenario and it's variants tested at least with one set of parameters. &lt;br /&gt;
|-&lt;br /&gt;
|| 4 || Changed components are verified in weekly testing but if dependencies are not understood impact to indirectly affected component not verified. || Surprises in release quality || Medium || Developers to address dependencies in detailed level showing significant dependencies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T05:31:11Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Risks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Test results shall be posted to appropriate MeeGo mailing list and results shall be stored to punblicly available location  (link to be added to MeeGo Core testing results).&lt;br /&gt;
* Provide test asset with the component including detailed documentation. &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset.&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
* Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
* Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
* QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Testability can be seen as main key for the success of QA. In order to ensure high quality QA, testability percentage of the MeeGo 1.2. features shall be 90% or higher. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
* Any UI or application related testing. &lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Each component will have detailed test plan for the specific component. Test Plans are available in [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details (each component name is link to test plan). &lt;br /&gt;
&lt;br /&gt;
Test plan shall follow structure described below: : &lt;br /&gt;
&lt;br /&gt;
* 1 Introduction&lt;br /&gt;
* 2 Test Coverage&lt;br /&gt;
** 2.1 Software Coverage&lt;br /&gt;
** 2.2 Hardware Coverage&lt;br /&gt;
** 2.3 Items not Covered&lt;br /&gt;
* 3 Running the tests&lt;br /&gt;
** 3.1 Executing tests&lt;br /&gt;
** 3.2 Test case arguments&lt;br /&gt;
** 3.3 Test cases&lt;br /&gt;
** 3.4 Configuration file&lt;br /&gt;
* 4 Module Design and Architecture&lt;br /&gt;
** 4.1 Architecture diagram&lt;br /&gt;
* 5 References&lt;br /&gt;
* 6 Change History&lt;br /&gt;
&lt;br /&gt;
See [http://wiki.meego.com/Quality/TestSuite/Video_Playback_Driver_Test_Specification Video playback driver test plan] for reference.&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
&lt;br /&gt;
[[File:Coreosqawkcycle.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionality which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for Bugzilla components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionality from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing.&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, QA will start the full validation testing for it, following test will be involved:&lt;br /&gt;
&lt;br /&gt;
* Component Functional Test – which will follow the Bugzilla component test plan to run all tests.&lt;br /&gt;
* System functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
* System Non-functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
&lt;br /&gt;
Purpose of the Full Pass is to measure release maturity in detailed level. In Full Pass testing entire test asset is executed for all the features released and previously marked as verified. Thus visibility and detailed information about release maturity is gained. Target is to have two Full Pass testing cycles during release life cycle. First Pull Pass test round starts at feature complete and last round ends few days prior to release date. &lt;br /&gt;
&lt;br /&gt;
Between these two rounds failing cases and related bugs are followed closely in weekly testing. If there are very good grounds Full Pass testing can be executed more than twice during release cycle life cycle.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== Risks ==&lt;br /&gt;
&lt;br /&gt;
One main expectation from program management is that QA is able to pinpoint risks concerning Quality Risks. For MeeGo 1.2 QA sees following risks: &lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Risk #&lt;br /&gt;
!|Description&lt;br /&gt;
!|impact &lt;br /&gt;
!|Severity&lt;br /&gt;
!|Mitigation actions &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 1 || Insufficient documentation and/or low quality feature descriptions not meeting that testability requirements || Bad quality test asset not verifying feature in detailed level. ||  '''High''' || Significant effort put to feature testability in early phase of release life cycle. Review test assets with feature owner and assignees. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 2 || Insufficient amount of system level test cases to show functionality of the release || Unclear release quality statement. Community confused and developers hunting errors which do not exist||  '''High''' || Significant effort to system level test case development. Each functionality (main success scenario and it's variants tested at least with one set of parameters.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 3 || Insufficient amount of system level test cases to show functionality of the release || Unclear release quality statement. Community confused and developers hunting errors which do not exist|| '''High''' || Significant effort to system level test case development. Each functionality (main success scenario and it's variants tested at least with one set of parameters. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 4 || Changed components are verified in weekly testing but if dependencies are not understood impact to indirectly affected component not verified. || Surprises in release quality || Medium || Developers to address dependencies in detailed level showing significant dependencies&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T05:29:11Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Risks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Test results shall be posted to appropriate MeeGo mailing list and results shall be stored to punblicly available location  (link to be added to MeeGo Core testing results).&lt;br /&gt;
* Provide test asset with the component including detailed documentation. &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset.&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
* Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
* Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
* QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Testability can be seen as main key for the success of QA. In order to ensure high quality QA, testability percentage of the MeeGo 1.2. features shall be 90% or higher. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
* Any UI or application related testing. &lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Each component will have detailed test plan for the specific component. Test Plans are available in [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details (each component name is link to test plan). &lt;br /&gt;
&lt;br /&gt;
Test plan shall follow structure described below: : &lt;br /&gt;
&lt;br /&gt;
* 1 Introduction&lt;br /&gt;
* 2 Test Coverage&lt;br /&gt;
** 2.1 Software Coverage&lt;br /&gt;
** 2.2 Hardware Coverage&lt;br /&gt;
** 2.3 Items not Covered&lt;br /&gt;
* 3 Running the tests&lt;br /&gt;
** 3.1 Executing tests&lt;br /&gt;
** 3.2 Test case arguments&lt;br /&gt;
** 3.3 Test cases&lt;br /&gt;
** 3.4 Configuration file&lt;br /&gt;
* 4 Module Design and Architecture&lt;br /&gt;
** 4.1 Architecture diagram&lt;br /&gt;
* 5 References&lt;br /&gt;
* 6 Change History&lt;br /&gt;
&lt;br /&gt;
See [http://wiki.meego.com/Quality/TestSuite/Video_Playback_Driver_Test_Specification Video playback driver test plan] for reference.&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
&lt;br /&gt;
[[File:Coreosqawkcycle.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionality which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for Bugzilla components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionality from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing.&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, QA will start the full validation testing for it, following test will be involved:&lt;br /&gt;
&lt;br /&gt;
* Component Functional Test – which will follow the Bugzilla component test plan to run all tests.&lt;br /&gt;
* System functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
* System Non-functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
&lt;br /&gt;
Purpose of the Full Pass is to measure release maturity in detailed level. In Full Pass testing entire test asset is executed for all the features released and previously marked as verified. Thus visibility and detailed information about release maturity is gained. Target is to have two Full Pass testing cycles during release life cycle. First Pull Pass test round starts at feature complete and last round ends few days prior to release date. &lt;br /&gt;
&lt;br /&gt;
Between these two rounds failing cases and related bugs are followed closely in weekly testing. If there are very good grounds Full Pass testing can be executed more than twice during release cycle life cycle.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== Risks ==&lt;br /&gt;
&lt;br /&gt;
One main expectation from program management is that QA is able to pinpoint risks concerning Quality Risks. For MeeGo 1.2 QA sees following risks: &lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
!|Risk #&lt;br /&gt;
!|Description&lt;br /&gt;
!|impact &lt;br /&gt;
!|Severity&lt;br /&gt;
!|Mitigation actions &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 1 || Insufficient documentation and/or low quality feature descriptions not meeting that testability requirements || Bad quality test asset not verifying feature in detailed level. ||  '''High''' || Significant effort put to feature testability in early phase of release lifecycle. Review test assets with feature owner and assignees. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 2 || Insufficient amount of system level test cases to show functionality of the release || Unclear release quality statement. Community confused and developers hunting errors which do not exist||  '''High''' || Significant effort to system level test case development. Each functionality (main success scenario and it's variants tested at least with one set of parameters.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 3 || Insufficient amount of system level test cases to show functionality of the release || Unclear release quality statement. Community confused and developers hunting errors which do not exist|| '''High''' || Significant effort to system level test case development. Each functionality (main success scenario and it's variants tested at least with one set of parameters. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|| 4 || Changed components are verified in weekly testing but if dependencies are not understood impact to indirectly affected component not verified. || Surprises in release quality || Medium || Developers to address dependencies in detailed level showing significant dependencies&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T05:09:23Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Test results shall be posted to appropriate MeeGo mailing list and results shall be stored to punblicly available location  (link to be added to MeeGo Core testing results).&lt;br /&gt;
* Provide test asset with the component including detailed documentation. &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset.&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
* Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
* Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
* QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Testability can be seen as main key for the success of QA. In order to ensure high quality QA, testability percentage of the MeeGo 1.2. features shall be 90% or higher. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
* Any UI or application related testing. &lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Each component will have detailed test plan for the specific component. Test Plans are available in [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details (each component name is link to test plan). &lt;br /&gt;
&lt;br /&gt;
Test plan shall follow structure described below: : &lt;br /&gt;
&lt;br /&gt;
* 1 Introduction&lt;br /&gt;
* 2 Test Coverage&lt;br /&gt;
** 2.1 Software Coverage&lt;br /&gt;
** 2.2 Hardware Coverage&lt;br /&gt;
** 2.3 Items not Covered&lt;br /&gt;
* 3 Running the tests&lt;br /&gt;
** 3.1 Executing tests&lt;br /&gt;
** 3.2 Test case arguments&lt;br /&gt;
** 3.3 Test cases&lt;br /&gt;
** 3.4 Configuration file&lt;br /&gt;
* 4 Module Design and Architecture&lt;br /&gt;
** 4.1 Architecture diagram&lt;br /&gt;
* 5 References&lt;br /&gt;
* 6 Change History&lt;br /&gt;
&lt;br /&gt;
See [http://wiki.meego.com/Quality/TestSuite/Video_Playback_Driver_Test_Specification Video playback driver test plan] for reference.&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
&lt;br /&gt;
[[File:Coreosqawkcycle.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionality which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for Bugzilla components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionality from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing.&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, QA will start the full validation testing for it, following test will be involved:&lt;br /&gt;
&lt;br /&gt;
* Component Functional Test – which will follow the Bugzilla component test plan to run all tests.&lt;br /&gt;
* System functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
* System Non-functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
&lt;br /&gt;
Purpose of the Full Pass is to measure release maturity in detailed level. In Full Pass testing entire test asset is executed for all the features released and previously marked as verified. Thus visibility and detailed information about release maturity is gained. Target is to have two Full Pass testing cycles during release life cycle. First Pull Pass test round starts at feature complete and last round ends few days prior to release date. &lt;br /&gt;
&lt;br /&gt;
Between these two rounds failing cases and related bugs are followed closely in weekly testing. If there are very good grounds Full Pass testing can be executed more than twice during release cycle life cycle.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== Risks ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T05:08:45Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Component Test Plans and Coverage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Test results shall be posted to appropriate MeeGo mailing list and results shall be stored to punblicly available location  (link to be added to MeeGo Core testing results).&lt;br /&gt;
* Provide test asset with the component including detailed documentation. &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset.&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
* Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
* Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
* QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Testability can be seen as main key for the success of QA. In order to ensure high quality QA, testability percentage of the MeeGo 1.2. features shall be 90% or higher. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
* Any UI or application related testing. &lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Each component will have detailed test plan for the specific component. Test Plans are available in [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details (each component name is link to test plan). &lt;br /&gt;
&lt;br /&gt;
Test plan shall follow structure described below: : &lt;br /&gt;
&lt;br /&gt;
* 1 Introduction&lt;br /&gt;
* 2 Test Coverage&lt;br /&gt;
** 2.1 Software Coverage&lt;br /&gt;
** 2.2 Hardware Coverage&lt;br /&gt;
** 2.3 Items not Covered&lt;br /&gt;
* 3 Running the tests&lt;br /&gt;
** 3.1 Executing tests&lt;br /&gt;
** 3.2 Test case arguments&lt;br /&gt;
** 3.3 Test cases&lt;br /&gt;
** 3.4 Configuration file&lt;br /&gt;
* 4 Module Design and Architecture&lt;br /&gt;
** 4.1 Architecture diagram&lt;br /&gt;
* 5 References&lt;br /&gt;
* 6 Change History&lt;br /&gt;
&lt;br /&gt;
See [http://wiki.meego.com/Quality/TestSuite/Video_Playback_Driver_Test_Specification Video playback driver test plan] for reference.&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
&lt;br /&gt;
[[File:Coreosqawkcycle.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionality which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for Bugzilla components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionality from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing.&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, QA will start the full validation testing for it, following test will be involved:&lt;br /&gt;
&lt;br /&gt;
* Component Functional Test – which will follow the Bugzilla component test plan to run all tests.&lt;br /&gt;
* System functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
* System Non-functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
&lt;br /&gt;
Purpose of the Full Pass is to measure release maturity in detailed level. In Full Pass testing entire test asset is executed for all the features released and previously marked as verified. Thus visibility and detailed information about release maturity is gained. Target is to have two Full Pass testing cycles during release life cycle. First Pull Pass test round starts at feature complete and last round ends few days prior to release date. &lt;br /&gt;
&lt;br /&gt;
Between these two rounds failing cases and related bugs are followed closely in weekly testing. If there are very good grounds Full Pass testing can be executed more than twice during release cycle life cycle.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T05:08:01Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Component Test Plans and Coverage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Test results shall be posted to appropriate MeeGo mailing list and results shall be stored to punblicly available location  (link to be added to MeeGo Core testing results).&lt;br /&gt;
* Provide test asset with the component including detailed documentation. &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset.&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
* Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
* Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
* QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Testability can be seen as main key for the success of QA. In order to ensure high quality QA, testability percentage of the MeeGo 1.2. features shall be 90% or higher. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
* Any UI or application related testing. &lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Each component will have detailed test plan for the specific component. Test Plans are available in [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details (each component name is link to test plan). &lt;br /&gt;
&lt;br /&gt;
Test plan shall follow structure described below: : &lt;br /&gt;
&lt;br /&gt;
* 1 Introduction&lt;br /&gt;
* 2 Test Coverage&lt;br /&gt;
** 2.1 Software Coverage&lt;br /&gt;
** 2.2 Hardware Coverage&lt;br /&gt;
* 3 Running the tests&lt;br /&gt;
** 3.1 Executing tests&lt;br /&gt;
** 3.2 Test case arguments&lt;br /&gt;
** 3.3 Test cases&lt;br /&gt;
** 3.4 Configuration file&lt;br /&gt;
* 4 Module Design and Architecture&lt;br /&gt;
** 4.1 Architecture diagram&lt;br /&gt;
* 5 References&lt;br /&gt;
* 6 Change History&lt;br /&gt;
&lt;br /&gt;
See [http://wiki.meego.com/Quality/TestSuite/Video_Playback_Driver_Test_Specification Video playback driver test plan] for reference.&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
&lt;br /&gt;
[[File:Coreosqawkcycle.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionality which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for Bugzilla components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionality from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing.&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, QA will start the full validation testing for it, following test will be involved:&lt;br /&gt;
&lt;br /&gt;
* Component Functional Test – which will follow the Bugzilla component test plan to run all tests.&lt;br /&gt;
* System functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
* System Non-functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
&lt;br /&gt;
Purpose of the Full Pass is to measure release maturity in detailed level. In Full Pass testing entire test asset is executed for all the features released and previously marked as verified. Thus visibility and detailed information about release maturity is gained. Target is to have two Full Pass testing cycles during release life cycle. First Pull Pass test round starts at feature complete and last round ends few days prior to release date. &lt;br /&gt;
&lt;br /&gt;
Between these two rounds failing cases and related bugs are followed closely in weekly testing. If there are very good grounds Full Pass testing can be executed more than twice during release cycle life cycle.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T05:03:34Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Component Test Plans and Coverage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Test results shall be posted to appropriate MeeGo mailing list and results shall be stored to punblicly available location  (link to be added to MeeGo Core testing results).&lt;br /&gt;
* Provide test asset with the component including detailed documentation. &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset.&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
* Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
* Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
* QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Testability can be seen as main key for the success of QA. In order to ensure high quality QA, testability percentage of the MeeGo 1.2. features shall be 90% or higher. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
* Any UI or application related testing. &lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Each component will have detailed test plan for the specific component. Test Plans are available in [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details (each )&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
&lt;br /&gt;
[[File:Coreosqawkcycle.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionality which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for Bugzilla components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionality from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing.&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, QA will start the full validation testing for it, following test will be involved:&lt;br /&gt;
&lt;br /&gt;
* Component Functional Test – which will follow the Bugzilla component test plan to run all tests.&lt;br /&gt;
* System functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
* System Non-functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
&lt;br /&gt;
Purpose of the Full Pass is to measure release maturity in detailed level. In Full Pass testing entire test asset is executed for all the features released and previously marked as verified. Thus visibility and detailed information about release maturity is gained. Target is to have two Full Pass testing cycles during release life cycle. First Pull Pass test round starts at feature complete and last round ends few days prior to release date. &lt;br /&gt;
&lt;br /&gt;
Between these two rounds failing cases and related bugs are followed closely in weekly testing. If there are very good grounds Full Pass testing can be executed more than twice during release cycle life cycle.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T05:02:20Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Full Pass (Milestone) Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Test results shall be posted to appropriate MeeGo mailing list and results shall be stored to punblicly available location  (link to be added to MeeGo Core testing results).&lt;br /&gt;
* Provide test asset with the component including detailed documentation. &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset.&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
* Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
* Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
* QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Testability can be seen as main key for the success of QA. In order to ensure high quality QA, testability percentage of the MeeGo 1.2. features shall be 90% or higher. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
* Any UI or application related testing. &lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
&lt;br /&gt;
[[File:Coreosqawkcycle.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionality which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for Bugzilla components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionality from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing.&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, QA will start the full validation testing for it, following test will be involved:&lt;br /&gt;
&lt;br /&gt;
* Component Functional Test – which will follow the Bugzilla component test plan to run all tests.&lt;br /&gt;
* System functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
* System Non-functional Test – which are defined in the individual Bugzilla component test plan.&lt;br /&gt;
&lt;br /&gt;
Purpose of the Full Pass is to measure release maturity in detailed level. In Full Pass testing entire test asset is executed for all the features released and previously marked as verified. Thus visibility and detailed information about release maturity is gained. Target is to have two Full Pass testing cycles during release life cycle. First Pull Pass test round starts at feature complete and last round ends few days prior to release date. &lt;br /&gt;
&lt;br /&gt;
Between these two rounds failing cases and related bugs are followed closely in weekly testing. If there are very good grounds Full Pass testing can be executed more than twice during release cycle life cycle.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T04:42:55Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Sanity (Daily) Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Test results shall be posted to appropriate MeeGo mailing list and results shall be stored to punblicly available location  (link to be added to MeeGo Core testing results).&lt;br /&gt;
* Provide test asset with the component including detailed documentation. &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset.&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
* Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
* Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
* QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Testability can be seen as main key for the success of QA. In order to ensure high quality QA, testability percentage of the MeeGo 1.2. features shall be 90% or higher. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
* Any UI or application related testing. &lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
&lt;br /&gt;
[[File:Coreosqawkcycle.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionality which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for Bugzilla components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionality from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing.&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T04:41:25Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Test Cycle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Test results shall be posted to appropriate MeeGo mailing list and results shall be stored to punblicly available location  (link to be added to MeeGo Core testing results).&lt;br /&gt;
* Provide test asset with the component including detailed documentation. &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset.&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
* Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
* Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
* QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Testability can be seen as main key for the success of QA. In order to ensure high quality QA, testability percentage of the MeeGo 1.2. features shall be 90% or higher. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
* Any UI or application related testing. &lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
&lt;br /&gt;
[[File:Coreosqawkcycle.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionality which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionality from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T04:38:24Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Test Cycle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Test results shall be posted to appropriate MeeGo mailing list and results shall be stored to punblicly available location  (link to be added to MeeGo Core testing results).&lt;br /&gt;
* Provide test asset with the component including detailed documentation. &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset.&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
* Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
* Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
* QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Testability can be seen as main key for the success of QA. In order to ensure high quality QA, testability percentage of the MeeGo 1.2. features shall be 90% or higher. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
* Any UI or application related testing. &lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
&lt;br /&gt;
[[File:Coreosqawkcycle.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionality which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionality from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/File:Coreosqawkcycle.PNG</id>
		<title>File:Coreosqawkcycle.PNG</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/File:Coreosqawkcycle.PNG"/>
				<updated>2010-09-27T04:37:17Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T04:26:50Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Test Cycle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Test results shall be posted to appropriate MeeGo mailing list and results shall be stored to punblicly available location  (link to be added to MeeGo Core testing results).&lt;br /&gt;
* Provide test asset with the component including detailed documentation. &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset.&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
* Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
* Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
* QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Testability can be seen as main key for the success of QA. In order to ensure high quality QA, testability percentage of the MeeGo 1.2. features shall be 90% or higher. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
* Any UI or application related testing. &lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
&lt;br /&gt;
[[File:coreosqawkcycle.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionality which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionality from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T04:24:34Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Development teams and MeeGo Core OS QA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Test results shall be posted to appropriate MeeGo mailing list and results shall be stored to punblicly available location  (link to be added to MeeGo Core testing results).&lt;br /&gt;
* Provide test asset with the component including detailed documentation. &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset.&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
* Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
* Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
* QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Testability can be seen as main key for the success of QA. In order to ensure high quality QA, testability percentage of the MeeGo 1.2. features shall be 90% or higher. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
* Any UI or application related testing. &lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T04:23:57Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Development teams and MeeGo Core OS QA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Test results shall be posted to appropriate MeeGo mailing list and results shall be stored to punblicly available location  (link to be added to MeeGo Core testing results)'&lt;br /&gt;
* Provide test asset with the component including detailed documentation &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
* Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
* Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
* QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Testability can be seen as main key for the success of QA. In order to ensure high quality QA, testability percentage of the MeeGo 1.2. features shall be 90% or higher. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
* Any UI or application related testing. &lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T04:22:17Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* What will not be tested */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Provide test asset with the component including detailed documentation &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
* Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
* Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
* QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Testability can be seen as main key for the success of QA. In order to ensure high quality QA, testability percentage of the MeeGo 1.2. features shall be 90% or higher. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
* Any UI or application related testing. &lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T04:21:36Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Testability */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Provide test asset with the component including detailed documentation &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
* Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
* Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
* QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Testability can be seen as main key for the success of QA. In order to ensure high quality QA, testability percentage of the MeeGo 1.2. features shall be 90% or higher. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T04:18:59Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Development teams and MeeGo Core OS QA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Provide test asset with the component including detailed documentation &lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
* Maintain test asset&lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T04:17:08Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Development teams and MeeGo Core OS QA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
It is a fact that Quality Assurance cannot create quality of the release by doing exhaustive testing. Quality is build in development phase by developers contributing to MeeGo. &lt;br /&gt;
&lt;br /&gt;
Developers has significant role also in QA.Here are QA recommendations for developers contributing to MeeGo: &lt;br /&gt;
&lt;br /&gt;
* Developer contributing to MeeGo release content shall verify their deliveries prior to commit. &lt;br /&gt;
* Provide test asset with the component&lt;br /&gt;
* Propose sanity test cases for the component To QA Contact in order to include them to Sanity and to weekly testing. &lt;br /&gt;
&lt;br /&gt;
At the end of the day, developer is responsible of Quality of the his/hers delivery.&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T04:10:57Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas]&lt;br /&gt;
&lt;br /&gt;
=== Development teams and MeeGo Core OS QA ===&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T04:04:43Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Objectives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines].&lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas article]&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T04:04:07Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Objectives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
* New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
* Stakeholders and community get visibility to release quality. &lt;br /&gt;
* Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
* Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
* MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
* Program maturity statement can be given. &lt;br /&gt;
&lt;br /&gt;
In order to verify features of MeeGo Core OS requires exhaustive documentation of feature under test. insufficient documentation has negative impact to test asset quality as stated in MCTS Quality Guidlines. &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas article]&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T04:00:14Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Full Pass (Milestone) Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas article]&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the weekly test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-27T03:59:25Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Objectives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
Weekly testing is cumulative in terms of test coverage. Week to week test cases included in test run will vary and new test cases are introduced. Thus test case coverage increases constantly. Increase is dependent on release content (how many new features there was released in specific weekly release).   &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas article]&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the BAT test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-24T05:25:49Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas article]&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the BAT test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
* MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-24T05:25:04Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Test enviromental requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas article]&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the BAT test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
Each test suite shall contain README file describing test environment in detailed level. In a complex cases specific test environment description can be provided with reference in README file. &lt;br /&gt;
&lt;br /&gt;
Test environment description includes everything needed to run the test or tests. This included hardware and software configuration of the device under test as well as any equipment (and its configuration) outside the device itself.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
' MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-24T04:03:36Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas article]&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the BAT test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;br /&gt;
' MeeGo 1.2 release planning: http://wiki.meego.com/Core_OS_Program_Dashboard#1.2_Release&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-23T11:30:06Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Hardware Platforms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas article]&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the BAT test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
MeeGo Core OS is tested with numerous reference devices. The public reference configurations used are: &lt;br /&gt;
* Aava DV1/DV2&lt;br /&gt;
* N900 &lt;br /&gt;
* MRST CDK &lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-23T11:29:29Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Test Coverage Measurement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas article]&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis MCTS API analysis] describes methods to be used for test coverage measurement.&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the BAT test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
'''MeeGo v1.1'''&lt;br /&gt;
* Aava Koski&lt;br /&gt;
* N900&lt;br /&gt;
* MRST CDK&lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-23T11:29:00Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Test cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas article]&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS Test Design follows spirit of [http://wiki.meego.com/Quality/TestDesignProcessAndGuideline MeeGo QA Common Test Design Process and Guidelines]. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to [http://wiki.meego.com/Test_Packaging/Test_Plan test definition] in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*[http://wiki.meego.com/TestCaseTemplate Common Test Case Template] is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
MCTS API analysis (http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis) describes methods to be used for test coverage measurement.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the BAT test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
'''MeeGo v1.1'''&lt;br /&gt;
* Aava Koski&lt;br /&gt;
* N900&lt;br /&gt;
* MRST CDK&lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-23T11:26:15Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Quality requirements for MCTS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas article]&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described [http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline MCTS Development Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
Test Design process follows spirit of process described in http://wiki.meego.com/Quality/TestDesignProcessAndGuideline. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to test definition (http://wiki.meego.com/Test_Packaging/Test_Plan) in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*Common Test Case Template (http://wiki.meego.com/TestCaseTemplate) is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
MCTS API analysis (http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis) describes methods to be used for test coverage measurement.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the BAT test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
'''MeeGo v1.1'''&lt;br /&gt;
* Aava Koski&lt;br /&gt;
* N900&lt;br /&gt;
* MRST CDK&lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-23T11:25:40Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas article]&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described in: http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
Test Design process follows spirit of process described in http://wiki.meego.com/Quality/TestDesignProcessAndGuideline. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to test definition (http://wiki.meego.com/Test_Packaging/Test_Plan) in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*Common Test Case Template (http://wiki.meego.com/TestCaseTemplate) is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
MCTS API analysis (http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis) describes methods to be used for test coverage measurement.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the BAT test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
'''MeeGo v1.1'''&lt;br /&gt;
* Aava Koski&lt;br /&gt;
* N900&lt;br /&gt;
* MRST CDK&lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-23T11:25:17Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by [ http://wiki.meego.com/Quality#QA_tools_team MeeGo QA Tools Team]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see [http://wiki.meego.com/Quality#MeeGo_Handset_Testing Handset UX Test Plan]. &lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in [http://wiki.meego.com/Quality/TestAreas test areas article]&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described in: http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
Test Design process follows spirit of process described in http://wiki.meego.com/Quality/TestDesignProcessAndGuideline. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to test definition (http://wiki.meego.com/Test_Packaging/Test_Plan) in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*Common Test Case Template (http://wiki.meego.com/TestCaseTemplate) is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
MCTS API analysis (http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis) describes methods to be used for test coverage measurement.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the BAT test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
'''MeeGo v1.1'''&lt;br /&gt;
* Aava Koski&lt;br /&gt;
* N900&lt;br /&gt;
* MRST CDK&lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-23T11:23:35Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Objectives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in [http://wiki.meego.com/Release_Engineering/Process Release Engineering’s Process] &lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in [http://wiki.meego.com/Release_Engineering/Release_Timeline Release Engineering’s release timeline]&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by MeeGo QA Tools Team (http://wiki.meego.com/Quality#QA_tools_team). &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see Handset UX Test Plan at: http://wiki.meego.com/Quality#MeeGo_Handset_Testing&lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in details at: (http://wiki.meego.com/Quality/TestAreas )&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described in: http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
Test Design process follows spirit of process described in http://wiki.meego.com/Quality/TestDesignProcessAndGuideline. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to test definition (http://wiki.meego.com/Test_Packaging/Test_Plan) in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*Common Test Case Template (http://wiki.meego.com/TestCaseTemplate) is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
MCTS API analysis (http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis) describes methods to be used for test coverage measurement.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the BAT test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
'''MeeGo v1.1'''&lt;br /&gt;
* Aava Koski&lt;br /&gt;
* N900&lt;br /&gt;
* MRST CDK&lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-23T11:20:46Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* What will not Be Tested */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in Release Engineering’s release timeline at: http://wiki.meego.com/Release_Engineering/Process&lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in Release Engineering’s release timeline at: http://wiki.meego.com/Release_Engineering/Release_Timeline&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by MeeGo QA Tools Team (http://wiki.meego.com/Quality#QA_tools_team). &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see Handset UX Test Plan at: http://wiki.meego.com/Quality#MeeGo_Handset_Testing&lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in details at: (http://wiki.meego.com/Quality/TestAreas )&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described in: http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
Test Design process follows spirit of process described in http://wiki.meego.com/Quality/TestDesignProcessAndGuideline. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to test definition (http://wiki.meego.com/Test_Packaging/Test_Plan) in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*Common Test Case Template (http://wiki.meego.com/TestCaseTemplate) is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not be tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release &lt;br /&gt;
* Certification testing like: Ofono, Bluetooth, USB, WLAN, and similar.&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
In order to understand how well certain component is covered with test cases there shall be test coverage measurement done. This is directly linking to risk level of specific component. Test coverage is based on Function/Method coverage per API. &lt;br /&gt;
&lt;br /&gt;
MCTS API analysis (http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_API_analysis) describes methods to be used for test coverage measurement.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels. Testing Gear Box is as follows. &lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
Testing is done against Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System). &lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
Testing is done against Trunk and also for weekly release prior to release announcement to provide visibility to release quality and to ensure that last fixes does not cause regression to release. Release Engineering includes links to test reports in release announcement. Sanity testing is static set of test cases which is modified on need basis. Thus Sanity test set may contain test cases for functionalities which are not introduced yet. These test cases are marked as N/A with comment that feature not integrated yet. Sanity testing consists of:&lt;br /&gt;
 &lt;br /&gt;
* Set of fully automated test cases for core components &lt;br /&gt;
* Set of fully automated system level test cases verifying functionalities from top most interfaces provided by MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
Daily Sanity testing aims to identify the regressions as early as possible and provide easy to understand visibility to SW maturity. This testing is answering to questions like: &lt;br /&gt;
&lt;br /&gt;
* Is it possible to scan and connect to WLAN Access Point and conduct data transfer as a enabler for browsing? &lt;br /&gt;
* How fast specific file is downloaded over WLAN as a enabler for good user experience for browsing. &lt;br /&gt;
&lt;br /&gt;
While test cycle needs to be fast, reliability is not reasonable to measure in daily testing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly preview images released from Release Engineering. Test frequency is once a week, which aligns with distribution's weekly image release cadence. &lt;br /&gt;
Weekly testing is incremental testing and target for weekly testing is to: &lt;br /&gt;
&lt;br /&gt;
* Test the new features early &lt;br /&gt;
* Bug verification in order to track critical/major bugs got fixed in timely fashion&lt;br /&gt;
* Measure regression&lt;br /&gt;
&lt;br /&gt;
'''New features''' are verified as soon as they are ready for testing. QA Owners follows release engineering’s release plans and feature status in Featurezilla. When feature is turned to Released sate in Featurezilla, test cases mapped to this feature are taken as part of next weekly testing execution. If test cases for specific feature are passing, Feature shall be marked as verified in Featurezilla. &lt;br /&gt;
&lt;br /&gt;
'''Regression''' test cases are chosen amongst test cases designed for newly verified feature and are included in next weekly testing round.  &lt;br /&gt;
Regression is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected. This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation. &lt;br /&gt;
The regression test will be taken in following test cycle: &lt;br /&gt;
&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested &lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested. &lt;br /&gt;
&lt;br /&gt;
'''Bug verification''' on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
Performance or reliability test cases by default are not included in weekly testing. Performance ro Reliability test cases are included only if bug fix has been provided against performance reliability related Bugzilla item or there are other suspicious changes in release content which may have a effect to performance or reliability &lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the BAT test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
'''MeeGo v1.1'''&lt;br /&gt;
* Aava Koski&lt;br /&gt;
* N900&lt;br /&gt;
* MRST CDK&lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-23T11:14:44Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Test cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in Release Engineering’s release timeline at: http://wiki.meego.com/Release_Engineering/Process&lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in Release Engineering’s release timeline at: http://wiki.meego.com/Release_Engineering/Release_Timeline&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by MeeGo QA Tools Team (http://wiki.meego.com/Quality#QA_tools_team). &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see Handset UX Test Plan at: http://wiki.meego.com/Quality#MeeGo_Handset_Testing&lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in details at: (http://wiki.meego.com/Quality/TestAreas )&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described in: http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
Well defined test cases are the key to success in MeeGo Core OS Testing. While the objective of testing is assist developers in creating software that functions correctly, quite often testing falls into the trap of attempting to demonstrate that the software works. This shall be avoided. In test case development following should be considered: &lt;br /&gt;
&lt;br /&gt;
*Do not attempt to find work-arounds for problems in the API under test: if A + B = C and that is not the obtained result, then the test must fail &lt;br /&gt;
*Tests should be written against the specification/documentation of software instead of against the implementation as it is the implementation itself that is under test. &lt;br /&gt;
*Always attempt to 'break' the software under test: Do not only test things that are known to be working, testing the unknown areas is as important as testing the commonly used functions. &lt;br /&gt;
*The final objective of testing is to provide information/evidence to developers, therefore, the more (and more detailed) information that the test can provide, the better. &lt;br /&gt;
&lt;br /&gt;
Test Design process follows spirit of process described in http://wiki.meego.com/Quality/TestDesignProcessAndGuideline. Specifics being: &lt;br /&gt;
*Test Cases are designed by test asset developers based on QA Owners input. &lt;br /&gt;
*QA Owners input is based on existing features and which have been approved from testability point of view. &lt;br /&gt;
*Test Cases are described according to test definition (http://wiki.meego.com/Test_Packaging/Test_Plan) in tests.xml files&lt;br /&gt;
*Tests.xml files and are stored to MeeGo Gitorious. &lt;br /&gt;
*Common Test Case Template (http://wiki.meego.com/TestCaseTemplate) is used when designing test cases.&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not Be Tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release&lt;br /&gt;
* Certification testing like: Ofono and Bluetooth&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels.&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
It's for Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System).&lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
It's for Trunk. It will run all fully automated test cases for core components and aims to identify the regressions as early as possible. It will be conducted under OTS (Open Test System).&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly images released from distribution team. Usually the test frequency is twice a week, which aligns with distribution's weekly image release cadence.&lt;br /&gt;
&lt;br /&gt;
It's an incremental testing and includes two parts in general: test the basic distribution health to report out regression, test new features when they are ready for testing. We will also do bug verification and regression test which is set of tests to verify that changes from the last build (code enhancements, bug fixes) don't introduce new issues to the previous working code. The purpose of weekly testing is to early test the new features, to track critical/major issues got fixed in timely fashion, and to report out the overall quality status of the whole image so that people could understand where we are.&lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the BAT test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
==== Regression Testing ====&lt;br /&gt;
This is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected.  This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation.&lt;br /&gt;
&lt;br /&gt;
The regression test will be taken in following test cycle:&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested&lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested.&lt;br /&gt;
* Bug verification on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
'''MeeGo v1.1'''&lt;br /&gt;
* Aava Koski&lt;br /&gt;
* N900&lt;br /&gt;
* MRST CDK&lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-23T11:13:31Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Testability */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in Release Engineering’s release timeline at: http://wiki.meego.com/Release_Engineering/Process&lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in Release Engineering’s release timeline at: http://wiki.meego.com/Release_Engineering/Release_Timeline&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by MeeGo QA Tools Team (http://wiki.meego.com/Quality#QA_tools_team). &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see Handset UX Test Plan at: http://wiki.meego.com/Quality#MeeGo_Handset_Testing&lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in details at: (http://wiki.meego.com/Quality/TestAreas )&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described in: http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
Testability of MeeGo 1.2 Core OS features is ensured. &lt;br /&gt;
&lt;br /&gt;
*Features are defined by Product Management and relevant stakeholders to Bugzilla tool. &lt;br /&gt;
*Defined QA Owner checks features through from Bugzilla against defined Testability Checklist and adding comment to feature in Bugzilla that can feature be used as QA input and it is possible validate in software release with relevant test case(s). Also more information is requested from Feature owner if it is seen insufficient from QA perspective. &lt;br /&gt;
*QA does not does not accept that features without proper information to ensure testability are assigned to development. &lt;br /&gt;
&lt;br /&gt;
Relevant Links &lt;br /&gt;
*http://bugs.meego.com/ (MeeGo 1.2 Core OS Features stored in Bugzilla) &lt;br /&gt;
*http://wiki.meego.com/Quality/TestabilityChecklist&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not Be Tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release&lt;br /&gt;
* Certification testing like: Ofono and Bluetooth&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels.&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
It's for Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System).&lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
It's for Trunk. It will run all fully automated test cases for core components and aims to identify the regressions as early as possible. It will be conducted under OTS (Open Test System).&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly images released from distribution team. Usually the test frequency is twice a week, which aligns with distribution's weekly image release cadence.&lt;br /&gt;
&lt;br /&gt;
It's an incremental testing and includes two parts in general: test the basic distribution health to report out regression, test new features when they are ready for testing. We will also do bug verification and regression test which is set of tests to verify that changes from the last build (code enhancements, bug fixes) don't introduce new issues to the previous working code. The purpose of weekly testing is to early test the new features, to track critical/major issues got fixed in timely fashion, and to report out the overall quality status of the whole image so that people could understand where we are.&lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the BAT test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
==== Regression Testing ====&lt;br /&gt;
This is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected.  This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation.&lt;br /&gt;
&lt;br /&gt;
The regression test will be taken in following test cycle:&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested&lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested.&lt;br /&gt;
* Bug verification on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
'''MeeGo v1.1'''&lt;br /&gt;
* Aava Koski&lt;br /&gt;
* N900&lt;br /&gt;
* MRST CDK&lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-23T11:12:34Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Feature test and System test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in Release Engineering’s release timeline at: http://wiki.meego.com/Release_Engineering/Process&lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in Release Engineering’s release timeline at: http://wiki.meego.com/Release_Engineering/Release_Timeline&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by MeeGo QA Tools Team (http://wiki.meego.com/Quality#QA_tools_team). &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see Handset UX Test Plan at: http://wiki.meego.com/Quality#MeeGo_Handset_Testing&lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in details at: (http://wiki.meego.com/Quality/TestAreas )&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described in: http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not Be Tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release&lt;br /&gt;
* Certification testing like: Ofono and Bluetooth&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels.&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
It's for Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System).&lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
It's for Trunk. It will run all fully automated test cases for core components and aims to identify the regressions as early as possible. It will be conducted under OTS (Open Test System).&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly images released from distribution team. Usually the test frequency is twice a week, which aligns with distribution's weekly image release cadence.&lt;br /&gt;
&lt;br /&gt;
It's an incremental testing and includes two parts in general: test the basic distribution health to report out regression, test new features when they are ready for testing. We will also do bug verification and regression test which is set of tests to verify that changes from the last build (code enhancements, bug fixes) don't introduce new issues to the previous working code. The purpose of weekly testing is to early test the new features, to track critical/major issues got fixed in timely fashion, and to report out the overall quality status of the whole image so that people could understand where we are.&lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the BAT test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
==== Regression Testing ====&lt;br /&gt;
This is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected.  This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation.&lt;br /&gt;
&lt;br /&gt;
The regression test will be taken in following test cycle:&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested&lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested.&lt;br /&gt;
* Bug verification on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
'''MeeGo v1.1'''&lt;br /&gt;
* Aava Koski&lt;br /&gt;
* N900&lt;br /&gt;
* MRST CDK&lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-23T11:12:17Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Feature test and System test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in Release Engineering’s release timeline at: http://wiki.meego.com/Release_Engineering/Process&lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in Release Engineering’s release timeline at: http://wiki.meego.com/Release_Engineering/Release_Timeline&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by MeeGo QA Tools Team (http://wiki.meego.com/Quality#QA_tools_team). &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see Handset UX Test Plan at: http://wiki.meego.com/Quality#MeeGo_Handset_Testing&lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in details at: (http://wiki.meego.com/Quality/TestAreas )&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described in: http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
&lt;br /&gt;
QA target is to validate MeeGo distribution &lt;br /&gt;
&lt;br /&gt;
*Feature functionality &lt;br /&gt;
*System functionality (Interaction and negative scenarios) &lt;br /&gt;
*System performance (Data Throughput, Latencies, Framerate, etc.) &lt;br /&gt;
*System reliability  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
&lt;br /&gt;
*In this context known also as Component Testing. &lt;br /&gt;
*Target is to verify feature provided by one or more component with specific test cases designed for this purpose. Found 3G Device&lt;br /&gt;
*Every component (formed by features) basic functionality is tested in weekly testing and after feature complete phase as full pass testing. &lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
*Target is to test basic (functional) system testing of several components/features simultaneously. Test case example: Bluetooth, send 1MB file L2Cap PC. &lt;br /&gt;
*Target is to test system testing (performance). Test case example: NFT-BT-L2CAP_Send_10MB-THRO-MS (target: 1.9Mbit/s)&lt;br /&gt;
*Target is to test system testing (reliability). Test case example: NFT-BT-L2CAP_Send_2h-LOLA-MS (target: Data transfer for 120mins without performance decrease)&lt;br /&gt;
*Not tested NFT types: Performance (Memory Consumption and Power Management) and Reliability (Aging and Long Period)&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not Be Tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release&lt;br /&gt;
* Certification testing like: Ofono and Bluetooth&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels.&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
It's for Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System).&lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
It's for Trunk. It will run all fully automated test cases for core components and aims to identify the regressions as early as possible. It will be conducted under OTS (Open Test System).&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly images released from distribution team. Usually the test frequency is twice a week, which aligns with distribution's weekly image release cadence.&lt;br /&gt;
&lt;br /&gt;
It's an incremental testing and includes two parts in general: test the basic distribution health to report out regression, test new features when they are ready for testing. We will also do bug verification and regression test which is set of tests to verify that changes from the last build (code enhancements, bug fixes) don't introduce new issues to the previous working code. The purpose of weekly testing is to early test the new features, to track critical/major issues got fixed in timely fashion, and to report out the overall quality status of the whole image so that people could understand where we are.&lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the BAT test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
==== Regression Testing ====&lt;br /&gt;
This is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected.  This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation.&lt;br /&gt;
&lt;br /&gt;
The regression test will be taken in following test cycle:&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested&lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested.&lt;br /&gt;
* Bug verification on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
'''MeeGo v1.1'''&lt;br /&gt;
* Aava Koski&lt;br /&gt;
* N900&lt;br /&gt;
* MRST CDK&lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-23T11:10:57Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Quality requirements for MCTS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in Release Engineering’s release timeline at: http://wiki.meego.com/Release_Engineering/Process&lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in Release Engineering’s release timeline at: http://wiki.meego.com/Release_Engineering/Release_Timeline&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by MeeGo QA Tools Team (http://wiki.meego.com/Quality#QA_tools_team). &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see Handset UX Test Plan at: http://wiki.meego.com/Quality#MeeGo_Handset_Testing&lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in details at: (http://wiki.meego.com/Quality/TestAreas )&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
Even though there are certain problematic when testing code with a code it is very efficient of testing while: &lt;br /&gt;
&lt;br /&gt;
*Fast test execution time &amp;amp; feedback &lt;br /&gt;
*Enables high automation rate (less resource hungry)&lt;br /&gt;
*Error debugging is fast (focused errors with appropriate log files and root cause analysis can be provided)&lt;br /&gt;
*Test coverage can be defined easily. &lt;br /&gt;
&lt;br /&gt;
In order to take advantage of items described above test asset shall follow demanding quality standards. Test asset producing lots of false positives and negatives confuses community, provides wrong information about release quality and sends developers to wild goose hunt. This shall never happen. To ensure this MCTS code will follow quality requirements described in: http://wiki.meego.com/Quality/TestSuite/MCTS/MCTS_Development_Guideline&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not Be Tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release&lt;br /&gt;
* Certification testing like: Ofono and Bluetooth&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels.&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
It's for Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System).&lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
It's for Trunk. It will run all fully automated test cases for core components and aims to identify the regressions as early as possible. It will be conducted under OTS (Open Test System).&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly images released from distribution team. Usually the test frequency is twice a week, which aligns with distribution's weekly image release cadence.&lt;br /&gt;
&lt;br /&gt;
It's an incremental testing and includes two parts in general: test the basic distribution health to report out regression, test new features when they are ready for testing. We will also do bug verification and regression test which is set of tests to verify that changes from the last build (code enhancements, bug fixes) don't introduce new issues to the previous working code. The purpose of weekly testing is to early test the new features, to track critical/major issues got fixed in timely fashion, and to report out the overall quality status of the whole image so that people could understand where we are.&lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the BAT test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
==== Regression Testing ====&lt;br /&gt;
This is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected.  This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation.&lt;br /&gt;
&lt;br /&gt;
The regression test will be taken in following test cycle:&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested&lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested.&lt;br /&gt;
* Bug verification on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
'''MeeGo v1.1'''&lt;br /&gt;
* Aava Koski&lt;br /&gt;
* N900&lt;br /&gt;
* MRST CDK&lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-23T11:10:13Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Test strategy and approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in Release Engineering’s release timeline at: http://wiki.meego.com/Release_Engineering/Process&lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in Release Engineering’s release timeline at: http://wiki.meego.com/Release_Engineering/Release_Timeline&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
The overall objective of MeeGo Core QA is to ensure that MeeGo middleware and OS Base provide stable hardware and usage model independent application services and APIs for building the vertical specific user experience. Each core component has different quality risk regarding to MeeGo integration. For example, some core component is mature in upstream and MeeGo do the integration without heavy new feature development; some component is contributed and open-sourced from proprietary component with heavy development. Considering most of MeeGo Core components will be adopted by multiple vertical usages and run on a number of MeeGo devices, Test execution efficiency shall taken into account when creating the test cases. Given this, there are following strategy considerations: &lt;br /&gt;
&lt;br /&gt;
*Unified test suite (MeeGo Core Test Suite) for MeeGo Core validation. It's open-sourced and could start with the first batch of test cases contributed from community. MeeGo Core Test Suite (MCTS) docs can be found at MeeGo Quality page, and the code in Gitorious. &lt;br /&gt;
*Test suites from different sources are utilized as much as possible (e.g. Qt Mobility API test cases)&lt;br /&gt;
*If test cases are available in upstream project they will be used in order to keep maintainability.&lt;br /&gt;
*Appropriate test coverage in defined (density) categories. The test coverage of each component is based on the quality risk regarding to MeeGo integration. &lt;br /&gt;
*Test cases are automated s much as possible and able to run under MeeGo automated testing framework (OTS).  &lt;br /&gt;
*MeeGo Core test cases are independent from vertical specific UX’s&lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS is verified with test assets available in MeeGo GIT in different projects and other open source projects. One can divide used test cases to two different types:&lt;br /&gt;
&lt;br /&gt;
*Component tests. Unit/module like test cases verifying API’s of specific component. &lt;br /&gt;
*System tests. E2E type system level test cases verifying MeeGo Core OS stack as whole. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these component test cases are that they verify specific component or library with extensive set of parameters. Often they are missing E2E approach where entire stack is exercised. Test cases may not necessarily leave from component under test. &lt;br /&gt;
&lt;br /&gt;
Typical characteristics for these system test cases are that they are based on use cases or user stories and often testing entire stack from top most interfaces provided by MeeGo Core OS Middleware and exercises HW peripheral beneath SW stack. These types of test suites are the most efficient ones for measuring and providing visibility to maturity of MeeGo Core OS. &lt;br /&gt;
&lt;br /&gt;
MeeGo Core OS QA uses mainly test framework and other testing tools provided by MeeGo QA Tools Team (http://wiki.meego.com/Quality#QA_tools_team). &lt;br /&gt;
&lt;br /&gt;
In order to ensure that MeeGo is competitive SW platform MeeGo Core OS QA is executing Performance test cases and driving performance improvements to MeeGo Core OS stack. Majority of the performance test cases are measuring raw performance of the system and do not necessarily measure end user experience. End user experience (response time measurements) is measured by Handset UX QA. For more detailed information of End User Experience testing see Handset UX Test Plan at: http://wiki.meego.com/Quality#MeeGo_Handset_Testing&lt;br /&gt;
&lt;br /&gt;
In order to ensure reliability of MeeGo, MeeGo Core OS QA is executing Reliability test cases and driving reliability improvements to MeeGo Core OS stack. As addition to conventional test types such as Long-lasting and iterative, also Feature Interaction Testing is done as part of reliability testing. Feature Interaction Testing is based on user scenarios. &lt;br /&gt;
&lt;br /&gt;
Test cases are following test type definition Aligned with ISO/IEC 9126-1 Software Quality Model and ISTQB Advanced Level Syllabus. Test types are defined in details at: (http://wiki.meego.com/Quality/TestAreas )&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not Be Tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release&lt;br /&gt;
* Certification testing like: Ofono and Bluetooth&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels.&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
It's for Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System).&lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
It's for Trunk. It will run all fully automated test cases for core components and aims to identify the regressions as early as possible. It will be conducted under OTS (Open Test System).&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly images released from distribution team. Usually the test frequency is twice a week, which aligns with distribution's weekly image release cadence.&lt;br /&gt;
&lt;br /&gt;
It's an incremental testing and includes two parts in general: test the basic distribution health to report out regression, test new features when they are ready for testing. We will also do bug verification and regression test which is set of tests to verify that changes from the last build (code enhancements, bug fixes) don't introduce new issues to the previous working code. The purpose of weekly testing is to early test the new features, to track critical/major issues got fixed in timely fashion, and to report out the overall quality status of the whole image so that people could understand where we are.&lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the BAT test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
==== Regression Testing ====&lt;br /&gt;
This is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected.  This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation.&lt;br /&gt;
&lt;br /&gt;
The regression test will be taken in following test cycle:&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested&lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested.&lt;br /&gt;
* Bug verification on weekly basis to make sure the bug fixes be verified within one week after bug fixing&lt;br /&gt;
&lt;br /&gt;
=== Test Report ===&lt;br /&gt;
* Send Test report to mailing list&lt;br /&gt;
** Weekly MeeGo Core Test Report (Bug verification, new feature exploration...)&lt;br /&gt;
** Distribution Milestone Full Pass Test report&lt;br /&gt;
* Archive reports at [http://wiki.meego.com/Quality/CoreTestReports MeeGo Quality] wiki&lt;br /&gt;
&lt;br /&gt;
== Environmental Needs ==&lt;br /&gt;
=== Hardware Platforms ===&lt;br /&gt;
'''MeeGo v1.1'''&lt;br /&gt;
* Aava Koski&lt;br /&gt;
* N900&lt;br /&gt;
* MRST CDK&lt;br /&gt;
* Netbook&lt;br /&gt;
&lt;br /&gt;
=== Test enviromental requirements ===&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* MCTS (MeeGo Core Test Suite) code git tree: http://gitorious.org/qa-tools (to be moved meego.gitorious.org)&lt;br /&gt;
* MCTS docs http://wiki.meego.com/Quality/TestSuite/MCTS&lt;br /&gt;
* MeeGo Architecture: http://meego.com/developers/meego-architecture&lt;br /&gt;
* MeeGo Core test reports archive: http://wiki.meego.com/Quality/CoreTestReports&lt;br /&gt;
* MeeGo bugzilla: http://bugs.meego.com&lt;/div&gt;</summary>
		<author><name>Ttoropainen</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan</id>
		<title>Quality/Plans/MeeGo Core Test Plan</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/Plans/MeeGo_Core_Test_Plan"/>
				<updated>2010-09-23T11:07:45Z</updated>
		
		<summary type="html">&lt;p&gt;Ttoropainen: /* Objectives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Proposal For MeeGo 1.2. This plan is under review. actively revising and updating'''&lt;br /&gt;
= MeeGo Core Overall Test Plan =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This is overall test plan for MeeGo Core of '''MeeGo open source project''', which defines test scope, test strategy, test configurations as well as test execution cycle for MeeGo Core. It will give readers an overview of validation activities for MeeGo Core of MeeGo open source releases. A series of component test plans will also be linked in this overall test plan to cover the detailed test approaches and test design for ingredients of MeeGo Core stack. It will be the joint effort from MeeGo community. &lt;br /&gt;
&lt;br /&gt;
This plan describes MeeGo Core OS QA for MeeGo 1.2 and onwards. Test plan is revised for each MeeGo Release and thus this test plan should be considered as evolving document. New testing methods, practicalities and approaches are described in revisions.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
Objectives in MeeGo Core OS QA is to validate the functionality of entire MeeGo Core OS software delivery by performing hourly, daily and weekly testing for weekly releases. More information about testing cycle and test types can be found later in this document. Target is to ensure that:&lt;br /&gt;
&lt;br /&gt;
*New features introduced in specific Core OS weekly release are working as specified as a part of system. &lt;br /&gt;
*Stakeholders and community get visibility to release quality. &lt;br /&gt;
*Validate that relevant bugs are fixed in software release. &lt;br /&gt;
&lt;br /&gt;
For these activities MeeGo Core OS QA follows iteration cycle and process described in Release Engineering’s release timeline at: http://wiki.meego.com/Release_Engineering/Process&lt;br /&gt;
&lt;br /&gt;
As addition to fast cycle testing more thorough testing (Full Pass) is done for MeeGo Releases. Full Pass testing is massive test execution for entire test asset available at the moment. With full pass all features are re-verified and regression is measured. This activity is taking place after MeeGo Release Feature Complete. Target is to ensure that: &lt;br /&gt;
&lt;br /&gt;
*Delivered features for MeeGo Core OS are working as specified as a part of system. &lt;br /&gt;
*MeeGo Core OS is performing well and is reliable.&lt;br /&gt;
*Program maturity statement can be given. &lt;br /&gt;
For these activities MeeGo Core OS QA follows release cycle described in Release Engineering’s release timeline at: http://wiki.meego.com/Release_Engineering/Release_Timeline&lt;br /&gt;
&lt;br /&gt;
== Test strategy and approach == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Quality requirements for MCTS ==&lt;br /&gt;
&lt;br /&gt;
== Feature test and System test ==&lt;br /&gt;
&lt;br /&gt;
=== Feature Testing ===&lt;br /&gt;
&lt;br /&gt;
=== System Testing ===&lt;br /&gt;
&lt;br /&gt;
== Testability ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test cases ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Features to Be Tested ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overall the MeeGo Core Testing will cover the '''MeeGo OS Middlewares layer''' and '''MeeGo OS Base layer''' in [http://meego.com/developers/meego-architecture MeeGo Architecture]: &lt;br /&gt;
[[File:MeeGoArch.png]]&lt;br /&gt;
&lt;br /&gt;
Specific features to be tested will be aligned with the features under '''MeeGo Core OS Features''' product in [http://bugs.meego.com MeeGo Featurezilla]&lt;br /&gt;
&lt;br /&gt;
== What will not Be Tested ==&lt;br /&gt;
Following feature category won't be covered in MeeGo Core validation for MeeGo open source releases.&lt;br /&gt;
* Any proprietary component which is not included in the open source MeeGo release&lt;br /&gt;
* Certification testing like: Ofono and Bluetooth&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Definition ===&lt;br /&gt;
In order to use resources efficiently and control risk level on component maturity. Testing is done in different levels as follows: &lt;br /&gt;
&lt;br /&gt;
* '''Thorough'''&lt;br /&gt;
** Full testing service for API&lt;br /&gt;
** Target is to have 100% function/method coverage provided by API&lt;br /&gt;
** Parameter coverage defined by using testing techniques as follows: &lt;br /&gt;
*** All Pairs (Pair wise)&lt;br /&gt;
*** Equivalence Partitioning &lt;br /&gt;
*** Boundary Value Analysis&lt;br /&gt;
*** Subjective test case selection (according to Expert opinion or similar)&lt;br /&gt;
&lt;br /&gt;
* '''Average'''&lt;br /&gt;
** Between Thorough and Light&lt;br /&gt;
** Full API coverage (according to rules for Thorough) for new functionality.  &lt;br /&gt;
** Integration level testing for legacy features. &lt;br /&gt;
&lt;br /&gt;
* '''Light'''&lt;br /&gt;
** Integration level testing&lt;br /&gt;
** Upstream Middleware components shall be tested with limited amount of test cases (sub set) ensuring that integration of component to MeeGo is successful and component is working as expected&lt;br /&gt;
&lt;br /&gt;
* '''Not Covered'''&lt;br /&gt;
** No Middleware testing, covered indirectly by UX Testing&lt;br /&gt;
** There will be API’s not feasible to cover with test cases at middleware level but more efficiently tested indirectly by UX testing&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage Measurement === &lt;br /&gt;
&lt;br /&gt;
=== Component Test Plans and Coverage ===&lt;br /&gt;
Go to [[../../TestSuite/MCTS#Test_Suite_Status_For_Middleware |MeeGo Core Test Suite]] for details&lt;br /&gt;
&lt;br /&gt;
=== Test Cycle ===&lt;br /&gt;
MeeGo Core will be tested from the following different test execution levels.&lt;br /&gt;
==== Hourly Testing ====&lt;br /&gt;
It's for Trunk:Testing. It will run a portion of fully automated test cases for core components and aims to provide quick acceptance testing to support incremental packages integration. It will be conducted under OTS (Open Test System).&lt;br /&gt;
&lt;br /&gt;
==== Sanity (Daily) Testing ====&lt;br /&gt;
It's for Trunk. It will run all fully automated test cases for core components and aims to identify the regressions as early as possible. It will be conducted under OTS (Open Test System).&lt;br /&gt;
&lt;br /&gt;
==== Weekly Testing ====&lt;br /&gt;
Weekly Testing is a test cycle against the weekly images released from distribution team. Usually the test frequency is twice a week, which aligns with distribution's weekly image release cadence.&lt;br /&gt;
&lt;br /&gt;
It's an incremental testing and includes two parts in general: test the basic distribution health to report out regression, test new features when they are ready for testing. We will also do bug verification and regression test which is set of tests to verify that changes from the last build (code enhancements, bug fixes) don't introduce new issues to the previous working code. The purpose of weekly testing is to early test the new features, to track critical/major issues got fixed in timely fashion, and to report out the overall quality status of the whole image so that people could understand where we are.&lt;br /&gt;
&lt;br /&gt;
==== Full Pass (Milestone) Testing ====&lt;br /&gt;
In the formal test cycle for milestone test, after a new build passed the BAT test, test team will start the full validation testing for it, following test will be involved:&lt;br /&gt;
* Functional Test – which will follow the component test plan to run all tests.&lt;br /&gt;
* Non Functional Test – which are defined in the individual component test plan.&lt;br /&gt;
&lt;br /&gt;
==== Regression Testing ====&lt;br /&gt;
This is a set of tests to verify that changes from the last build (code enhancements, bug fixes) don’t introduce new issues to the previous working code as well as new features work as expected.  This cycle include the tests for previous major bug fixes and areas of the code that will be affected by new implementation.&lt;br /&gt;
&lt;br /&gt;
The regression test will be taken in following test cycle:&lt;br /&gt;
* In the test cycle for milestone release, before the release criteria is satisfied, it is possible that there are several release candidates which includes bug fixes for previous release candidates. These bug-fixes need be tested&lt;br /&gt;
* In the intermediate regular release, only the modified features need to be heavily tested.&lt;br /&gt;
* Bug verification on weekly basis to make sure the bug fixes be verifie