<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.yoctoproject.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mihail+Stanciu</id>
	<title>Yocto Project - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.yoctoproject.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mihail+Stanciu"/>
	<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/Special:Contributions/Mihail_Stanciu"/>
	<updated>2026-06-05T03:13:20Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17786</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17786"/>
		<updated>2016-03-04T12:34:38Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: Undo revision 17769 by Mihail Stanciu (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
=LEGACY= Starting with 2.1 M3, the following will no longer be tested by the QA team. The dev team will be taking over responsibility for these components:&lt;br /&gt;
* Backend interaction with bitbake for build purposes&lt;br /&gt;
* Backend interaction with database for storing and accessing build information&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
Backend features:&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
*Data presence&lt;br /&gt;
*Data consistency &lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== BackEnd functionalities ===&lt;br /&gt;
=== LEGACY === Starting with 2.1 M3 the dev team will be taking responsibility for these tests. They will become a part of their internal CI testing.&lt;br /&gt;
Covers data integrity, data transfer between Bitbake and Toaster, Start/Stop, building images, configuration, etc&lt;br /&gt;
&lt;br /&gt;
Testing needs:&lt;br /&gt;
*Built in python 2.7&lt;br /&gt;
*Direct sql requests to local sqlite instance&lt;br /&gt;
 YP2.1 TODO: Direct SQL tests are going to be hard to maintain and could be done more effectively by either using unit tests in django or by accessing the django ORM. This would also make the test database database backend agnostic.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
Brian&#039;s Comments&lt;br /&gt;
1) I would like to remove the manual element from all the toaster tests.&lt;br /&gt;
2) unless we are using something from within bitbake that I didn&#039;t see these tests do seem to be more amenable to django unit tests since they are already using the orm.models.* &lt;br /&gt;
3)we should avoid presuming that we are running from inside poky. referencing ../bitbake/lib/toaster is a bad idea.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Requires sqlite3 client installed (for manual debugging/investigation)&lt;br /&gt;
*BackEnd automated tests are verifying the correctness of the data gathered by the build process as presented in the Backend template: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
**In order for these tests to run properly, check the the steps for “The oe-selftest toaster tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For BackEnd managed mode  manual testing follow the steps from the following template https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030 &lt;br /&gt;
*please validate and add info from Testing Toaster wiki in this section(Test Strategy): https://wiki.yoctoproject.org/wiki/Testing_Toaster&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The oe-selftest toaster tests ===&lt;br /&gt;
=== LEGACY === These are no longer valid as of 2.1 M3&lt;br /&gt;
&lt;br /&gt;
These tests are verifying the correctness of the data gathered by the build process - it tests the bitbake/lib/bb/ui/toasterui.py and bitbake/lib/bb/ui/buildinfohelper.py files and the interface to the bitbake server process.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
&lt;br /&gt;
*Create new project using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Create 1 core-image-sato image to check building from cache&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To run these tests you need to source an environment by issuing:&lt;br /&gt;
  source oe-init-build-env&lt;br /&gt;
&lt;br /&gt;
then modify the bblayers.conf file to add the meta-selftest layer, create a symbolic link to the toaster.sqlite file:&lt;br /&gt;
  ln -s ../toaster.sqlite toaster.sqlite&lt;br /&gt;
&lt;br /&gt;
and then run the command:&lt;br /&gt;
  oe-selftest --run-tests _toaster&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression&lt;br /&gt;
Regression testing is being performed by the QA team for Backend and Frontend according to the Schedule matrix. Part of regression Backend and Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**BackEnd&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster Backend - Weekly: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
*Toaster Backend - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
*Toaster Exploratory - https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Backend===&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
**Download poky &lt;br /&gt;
**Checkout on desired version&lt;br /&gt;
**Start Toaster with “bitbake/bin/toaster” command&lt;br /&gt;
&lt;br /&gt;
*Data integrity &lt;br /&gt;
**Data presence - the information is being recorded into the database&lt;br /&gt;
**Data consistency - the information is being recorded properly when modified from UI&lt;br /&gt;
**Build data - all the information from bitbake process is being transmitted properly to the database&lt;br /&gt;
*Data transfer between Toaster and Bitbake &lt;br /&gt;
*Toaster and Bitbake complete cycle communication&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster backend are are found in Testopia, as following&lt;br /&gt;
*Toaster Backend - Weekly: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
*Toaster Backend - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030&lt;br /&gt;
&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17785</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17785"/>
		<updated>2016-03-04T12:34:20Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: Undo revision 17770 by Mihail Stanciu (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
=LEGACY= Starting with 2.1 M3, the following will no longer be tested by the QA team. The dev team will be taking over responsibility for these components:&lt;br /&gt;
* Backend interaction with bitbake for build purposes&lt;br /&gt;
* Backend interaction with database for storing and accessing build information&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
Backend features:&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
*Data presence&lt;br /&gt;
*Data consistency &lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== BackEnd functionalities ===&lt;br /&gt;
=== LEGACY === Starting with 2.1 M3 the dev team will be taking responsibility for these tests. They will become a part of their internal CI testing.&lt;br /&gt;
Covers data integrity, data transfer between Bitbake and Toaster, Start/Stop, building images, configuration, etc&lt;br /&gt;
&lt;br /&gt;
Testing needs:&lt;br /&gt;
*Built in python 2.7&lt;br /&gt;
*Direct sql requests to local sqlite instance&lt;br /&gt;
 YP2.1 TODO: Direct SQL tests are going to be hard to maintain and could be done more effectively by either using unit tests in django or by accessing the django ORM. This would also make the test database database backend agnostic.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
Brian&#039;s Comments&lt;br /&gt;
1) I would like to remove the manual element from all the toaster tests.&lt;br /&gt;
2) unless we are using something from within bitbake that I didn&#039;t see these tests do seem to be more amenable to django unit tests since they are already using the orm.models.* &lt;br /&gt;
3)we should avoid presuming that we are running from inside poky. referencing ../bitbake/lib/toaster is a bad idea.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Requires sqlite3 client installed (for manual debugging/investigation)&lt;br /&gt;
*BackEnd automated tests are verifying the correctness of the data gathered by the build process as presented in the Backend template: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
**In order for these tests to run properly, check the the steps for “The oe-selftest toaster tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For BackEnd managed mode  manual testing follow the steps from the following template https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030 &lt;br /&gt;
*please validate and add info from Testing Toaster wiki in this section(Test Strategy): https://wiki.yoctoproject.org/wiki/Testing_Toaster&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The oe-selftest toaster tests ===&lt;br /&gt;
=== LEGACY === These are no longer valid as of 2.1 M3&lt;br /&gt;
&lt;br /&gt;
These tests are verifying the correctness of the data gathered by the build process - it tests the bitbake/lib/bb/ui/toasterui.py and bitbake/lib/bb/ui/buildinfohelper.py files and the interface to the bitbake server process.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
&lt;br /&gt;
*Create new project using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Create 1 core-image-sato image to check building from cache&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To run these tests you need to source an environment by issuing:&lt;br /&gt;
  source oe-init-build-env&lt;br /&gt;
&lt;br /&gt;
then modify the bblayers.conf file to add the meta-selftest layer, create a symbolic link to the toaster.sqlite file:&lt;br /&gt;
  ln -s ../toaster.sqlite toaster.sqlite&lt;br /&gt;
&lt;br /&gt;
and then run the command:&lt;br /&gt;
  oe-selftest --run-tests _toaster&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression&lt;br /&gt;
Regression testing is being performed by the QA team for Backend and Frontend according to the Schedule matrix. Part of regression Backend and Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**BackEnd&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Backend===&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
**Download poky &lt;br /&gt;
**Checkout on desired version&lt;br /&gt;
**Start Toaster with “bitbake/bin/toaster” command&lt;br /&gt;
&lt;br /&gt;
*Data integrity &lt;br /&gt;
**Data presence - the information is being recorded into the database&lt;br /&gt;
**Data consistency - the information is being recorded properly when modified from UI&lt;br /&gt;
**Build data - all the information from bitbake process is being transmitted properly to the database&lt;br /&gt;
*Data transfer between Toaster and Bitbake &lt;br /&gt;
*Toaster and Bitbake complete cycle communication&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster backend are are found in Testopia, as following&lt;br /&gt;
*Toaster Backend - Weekly: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
*Toaster Backend - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030&lt;br /&gt;
&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17784</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17784"/>
		<updated>2016-03-04T12:34:07Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: Undo revision 17771 by Mihail Stanciu (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
=LEGACY= Starting with 2.1 M3, the following will no longer be tested by the QA team. The dev team will be taking over responsibility for these components:&lt;br /&gt;
* Backend interaction with bitbake for build purposes&lt;br /&gt;
* Backend interaction with database for storing and accessing build information&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
Backend features:&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
*Data presence&lt;br /&gt;
*Data consistency &lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The oe-selftest toaster tests ===&lt;br /&gt;
=== LEGACY === These are no longer valid as of 2.1 M3&lt;br /&gt;
&lt;br /&gt;
These tests are verifying the correctness of the data gathered by the build process - it tests the bitbake/lib/bb/ui/toasterui.py and bitbake/lib/bb/ui/buildinfohelper.py files and the interface to the bitbake server process.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
&lt;br /&gt;
*Create new project using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Create 1 core-image-sato image to check building from cache&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To run these tests you need to source an environment by issuing:&lt;br /&gt;
  source oe-init-build-env&lt;br /&gt;
&lt;br /&gt;
then modify the bblayers.conf file to add the meta-selftest layer, create a symbolic link to the toaster.sqlite file:&lt;br /&gt;
  ln -s ../toaster.sqlite toaster.sqlite&lt;br /&gt;
&lt;br /&gt;
and then run the command:&lt;br /&gt;
  oe-selftest --run-tests _toaster&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression&lt;br /&gt;
Regression testing is being performed by the QA team for Backend and Frontend according to the Schedule matrix. Part of regression Backend and Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**BackEnd&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Backend===&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
**Download poky &lt;br /&gt;
**Checkout on desired version&lt;br /&gt;
**Start Toaster with “bitbake/bin/toaster” command&lt;br /&gt;
&lt;br /&gt;
*Data integrity &lt;br /&gt;
**Data presence - the information is being recorded into the database&lt;br /&gt;
**Data consistency - the information is being recorded properly when modified from UI&lt;br /&gt;
**Build data - all the information from bitbake process is being transmitted properly to the database&lt;br /&gt;
*Data transfer between Toaster and Bitbake &lt;br /&gt;
*Toaster and Bitbake complete cycle communication&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster backend are are found in Testopia, as following&lt;br /&gt;
*Toaster Backend - Weekly: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
*Toaster Backend - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030&lt;br /&gt;
&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17783</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17783"/>
		<updated>2016-03-04T12:33:53Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: Undo revision 17772 by Mihail Stanciu (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
=LEGACY= Starting with 2.1 M3, the following will no longer be tested by the QA team. The dev team will be taking over responsibility for these components:&lt;br /&gt;
* Backend interaction with bitbake for build purposes&lt;br /&gt;
* Backend interaction with database for storing and accessing build information&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
Backend features:&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
*Data presence&lt;br /&gt;
*Data consistency &lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression&lt;br /&gt;
Regression testing is being performed by the QA team for Backend and Frontend according to the Schedule matrix. Part of regression Backend and Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**BackEnd&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Backend===&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
**Download poky &lt;br /&gt;
**Checkout on desired version&lt;br /&gt;
**Start Toaster with “bitbake/bin/toaster” command&lt;br /&gt;
&lt;br /&gt;
*Data integrity &lt;br /&gt;
**Data presence - the information is being recorded into the database&lt;br /&gt;
**Data consistency - the information is being recorded properly when modified from UI&lt;br /&gt;
**Build data - all the information from bitbake process is being transmitted properly to the database&lt;br /&gt;
*Data transfer between Toaster and Bitbake &lt;br /&gt;
*Toaster and Bitbake complete cycle communication&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster backend are are found in Testopia, as following&lt;br /&gt;
*Toaster Backend - Weekly: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
*Toaster Backend - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030&lt;br /&gt;
&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17782</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17782"/>
		<updated>2016-03-04T12:33:39Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: Undo revision 17773 by Mihail Stanciu (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
=LEGACY= Starting with 2.1 M3, the following will no longer be tested by the QA team. The dev team will be taking over responsibility for these components:&lt;br /&gt;
* Backend interaction with bitbake for build purposes&lt;br /&gt;
* Backend interaction with database for storing and accessing build information&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
Backend features:&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
*Data presence&lt;br /&gt;
*Data consistency &lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression&lt;br /&gt;
Regression testing is being performed by the QA team for Backend and Frontend according to the Schedule matrix. Part of regression Backend and Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Backend===&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
**Download poky &lt;br /&gt;
**Checkout on desired version&lt;br /&gt;
**Start Toaster with “bitbake/bin/toaster” command&lt;br /&gt;
&lt;br /&gt;
*Data integrity &lt;br /&gt;
**Data presence - the information is being recorded into the database&lt;br /&gt;
**Data consistency - the information is being recorded properly when modified from UI&lt;br /&gt;
**Build data - all the information from bitbake process is being transmitted properly to the database&lt;br /&gt;
*Data transfer between Toaster and Bitbake &lt;br /&gt;
*Toaster and Bitbake complete cycle communication&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster backend are are found in Testopia, as following&lt;br /&gt;
*Toaster Backend - Weekly: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
*Toaster Backend - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030&lt;br /&gt;
&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17781</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17781"/>
		<updated>2016-03-04T12:33:24Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: Undo revision 17774 by Mihail Stanciu (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
=LEGACY= Starting with 2.1 M3, the following will no longer be tested by the QA team. The dev team will be taking over responsibility for these components:&lt;br /&gt;
* Backend interaction with bitbake for build purposes&lt;br /&gt;
* Backend interaction with database for storing and accessing build information&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
Backend features:&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
*Data presence&lt;br /&gt;
*Data consistency &lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression&lt;br /&gt;
Regression testing is being performed by the QA team for Backend and Frontend according to the Schedule matrix. Part of regression Backend and Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17780</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17780"/>
		<updated>2016-03-04T12:33:11Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: Undo revision 17775 by Mihail Stanciu (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
Backend features:&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
*Data presence&lt;br /&gt;
*Data consistency &lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression&lt;br /&gt;
Regression testing is being performed by the QA team for Backend and Frontend according to the Schedule matrix. Part of regression Backend and Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17779</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17779"/>
		<updated>2016-03-04T12:32:58Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: Undo revision 17776 by Mihail Stanciu (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression&lt;br /&gt;
Regression testing is being performed by the QA team for Backend and Frontend according to the Schedule matrix. Part of regression Backend and Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17778</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17778"/>
		<updated>2016-03-04T12:32:31Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: Undo revision 17777 by Mihail Stanciu (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression testing is being performed by the QA team for Frontend according to the Schedule matrix. Part of regression Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17777</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17777"/>
		<updated>2016-03-04T08:07:45Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: /* Frontend */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression testing is being performed by the QA team for Frontend according to the Schedule matrix. Part of regression Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17776</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17776"/>
		<updated>2016-03-04T08:07:29Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: /* Test Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression testing is being performed by the QA team for Frontend according to the Schedule matrix. Part of regression Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17775</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17775"/>
		<updated>2016-03-04T08:07:05Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: /* Scope */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression&lt;br /&gt;
Regression testing is being performed by the QA team for Backend and Frontend according to the Schedule matrix. Part of regression Backend and Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17774</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17774"/>
		<updated>2016-03-04T08:06:47Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: /* Objectives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
Backend features:&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
*Data presence&lt;br /&gt;
*Data consistency &lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression&lt;br /&gt;
Regression testing is being performed by the QA team for Backend and Frontend according to the Schedule matrix. Part of regression Backend and Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17773</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17773"/>
		<updated>2016-03-04T08:06:34Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: /* Backend */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
=LEGACY= Starting with 2.1 M3, the following will no longer be tested by the QA team. The dev team will be taking over responsibility for these components:&lt;br /&gt;
* Backend interaction with bitbake for build purposes&lt;br /&gt;
* Backend interaction with database for storing and accessing build information&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
Backend features:&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
*Data presence&lt;br /&gt;
*Data consistency &lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression&lt;br /&gt;
Regression testing is being performed by the QA team for Backend and Frontend according to the Schedule matrix. Part of regression Backend and Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17772</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17772"/>
		<updated>2016-03-04T08:05:28Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: /* Regression */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
=LEGACY= Starting with 2.1 M3, the following will no longer be tested by the QA team. The dev team will be taking over responsibility for these components:&lt;br /&gt;
* Backend interaction with bitbake for build purposes&lt;br /&gt;
* Backend interaction with database for storing and accessing build information&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
Backend features:&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
*Data presence&lt;br /&gt;
*Data consistency &lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression&lt;br /&gt;
Regression testing is being performed by the QA team for Backend and Frontend according to the Schedule matrix. Part of regression Backend and Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Backend===&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
**Download poky &lt;br /&gt;
**Checkout on desired version&lt;br /&gt;
**Start Toaster with “bitbake/bin/toaster” command&lt;br /&gt;
&lt;br /&gt;
*Data integrity &lt;br /&gt;
**Data presence - the information is being recorded into the database&lt;br /&gt;
**Data consistency - the information is being recorded properly when modified from UI&lt;br /&gt;
**Build data - all the information from bitbake process is being transmitted properly to the database&lt;br /&gt;
*Data transfer between Toaster and Bitbake &lt;br /&gt;
*Toaster and Bitbake complete cycle communication&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster backend are are found in Testopia, as following&lt;br /&gt;
*Toaster Backend - Weekly: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
*Toaster Backend - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030&lt;br /&gt;
&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17771</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17771"/>
		<updated>2016-03-04T08:05:11Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: /* The oe-selftest toaster tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
=LEGACY= Starting with 2.1 M3, the following will no longer be tested by the QA team. The dev team will be taking over responsibility for these components:&lt;br /&gt;
* Backend interaction with bitbake for build purposes&lt;br /&gt;
* Backend interaction with database for storing and accessing build information&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
Backend features:&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
*Data presence&lt;br /&gt;
*Data consistency &lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression&lt;br /&gt;
Regression testing is being performed by the QA team for Backend and Frontend according to the Schedule matrix. Part of regression Backend and Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**BackEnd&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Backend===&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
**Download poky &lt;br /&gt;
**Checkout on desired version&lt;br /&gt;
**Start Toaster with “bitbake/bin/toaster” command&lt;br /&gt;
&lt;br /&gt;
*Data integrity &lt;br /&gt;
**Data presence - the information is being recorded into the database&lt;br /&gt;
**Data consistency - the information is being recorded properly when modified from UI&lt;br /&gt;
**Build data - all the information from bitbake process is being transmitted properly to the database&lt;br /&gt;
*Data transfer between Toaster and Bitbake &lt;br /&gt;
*Toaster and Bitbake complete cycle communication&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster backend are are found in Testopia, as following&lt;br /&gt;
*Toaster Backend - Weekly: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
*Toaster Backend - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030&lt;br /&gt;
&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17770</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17770"/>
		<updated>2016-03-04T08:04:52Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: /* BackEnd functionalities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
=LEGACY= Starting with 2.1 M3, the following will no longer be tested by the QA team. The dev team will be taking over responsibility for these components:&lt;br /&gt;
* Backend interaction with bitbake for build purposes&lt;br /&gt;
* Backend interaction with database for storing and accessing build information&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
Backend features:&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
*Data presence&lt;br /&gt;
*Data consistency &lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The oe-selftest toaster tests ===&lt;br /&gt;
=== LEGACY === These are no longer valid as of 2.1 M3&lt;br /&gt;
&lt;br /&gt;
These tests are verifying the correctness of the data gathered by the build process - it tests the bitbake/lib/bb/ui/toasterui.py and bitbake/lib/bb/ui/buildinfohelper.py files and the interface to the bitbake server process.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
&lt;br /&gt;
*Create new project using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Create 1 core-image-sato image to check building from cache&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To run these tests you need to source an environment by issuing:&lt;br /&gt;
  source oe-init-build-env&lt;br /&gt;
&lt;br /&gt;
then modify the bblayers.conf file to add the meta-selftest layer, create a symbolic link to the toaster.sqlite file:&lt;br /&gt;
  ln -s ../toaster.sqlite toaster.sqlite&lt;br /&gt;
&lt;br /&gt;
and then run the command:&lt;br /&gt;
  oe-selftest --run-tests _toaster&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression&lt;br /&gt;
Regression testing is being performed by the QA team for Backend and Frontend according to the Schedule matrix. Part of regression Backend and Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**BackEnd&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Backend===&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
**Download poky &lt;br /&gt;
**Checkout on desired version&lt;br /&gt;
**Start Toaster with “bitbake/bin/toaster” command&lt;br /&gt;
&lt;br /&gt;
*Data integrity &lt;br /&gt;
**Data presence - the information is being recorded into the database&lt;br /&gt;
**Data consistency - the information is being recorded properly when modified from UI&lt;br /&gt;
**Build data - all the information from bitbake process is being transmitted properly to the database&lt;br /&gt;
*Data transfer between Toaster and Bitbake &lt;br /&gt;
*Toaster and Bitbake complete cycle communication&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster backend are are found in Testopia, as following&lt;br /&gt;
*Toaster Backend - Weekly: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
*Toaster Backend - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030&lt;br /&gt;
&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17769</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17769"/>
		<updated>2016-03-04T08:04:05Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: /* Maintaining the test cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
=LEGACY= Starting with 2.1 M3, the following will no longer be tested by the QA team. The dev team will be taking over responsibility for these components:&lt;br /&gt;
* Backend interaction with bitbake for build purposes&lt;br /&gt;
* Backend interaction with database for storing and accessing build information&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
Backend features:&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
*Data presence&lt;br /&gt;
*Data consistency &lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== BackEnd functionalities ===&lt;br /&gt;
=== LEGACY === Starting with 2.1 M3 the dev team will be taking responsibility for these tests. They will become a part of their internal CI testing.&lt;br /&gt;
Covers data integrity, data transfer between Bitbake and Toaster, Start/Stop, building images, configuration, etc&lt;br /&gt;
&lt;br /&gt;
Testing needs:&lt;br /&gt;
*Built in python 2.7&lt;br /&gt;
*Direct sql requests to local sqlite instance&lt;br /&gt;
 YP2.1 TODO: Direct SQL tests are going to be hard to maintain and could be done more effectively by either using unit tests in django or by accessing the django ORM. This would also make the test database database backend agnostic.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
Brian&#039;s Comments&lt;br /&gt;
1) I would like to remove the manual element from all the toaster tests.&lt;br /&gt;
2) unless we are using something from within bitbake that I didn&#039;t see these tests do seem to be more amenable to django unit tests since they are already using the orm.models.* &lt;br /&gt;
3)we should avoid presuming that we are running from inside poky. referencing ../bitbake/lib/toaster is a bad idea.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Requires sqlite3 client installed (for manual debugging/investigation)&lt;br /&gt;
*BackEnd automated tests are verifying the correctness of the data gathered by the build process as presented in the Backend template: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
**In order for these tests to run properly, check the the steps for “The oe-selftest toaster tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For BackEnd managed mode  manual testing follow the steps from the following template https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030 &lt;br /&gt;
*please validate and add info from Testing Toaster wiki in this section(Test Strategy): https://wiki.yoctoproject.org/wiki/Testing_Toaster&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The oe-selftest toaster tests ===&lt;br /&gt;
=== LEGACY === These are no longer valid as of 2.1 M3&lt;br /&gt;
&lt;br /&gt;
These tests are verifying the correctness of the data gathered by the build process - it tests the bitbake/lib/bb/ui/toasterui.py and bitbake/lib/bb/ui/buildinfohelper.py files and the interface to the bitbake server process.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
&lt;br /&gt;
*Create new project using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Create 1 core-image-sato image to check building from cache&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To run these tests you need to source an environment by issuing:&lt;br /&gt;
  source oe-init-build-env&lt;br /&gt;
&lt;br /&gt;
then modify the bblayers.conf file to add the meta-selftest layer, create a symbolic link to the toaster.sqlite file:&lt;br /&gt;
  ln -s ../toaster.sqlite toaster.sqlite&lt;br /&gt;
&lt;br /&gt;
and then run the command:&lt;br /&gt;
  oe-selftest --run-tests _toaster&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression&lt;br /&gt;
Regression testing is being performed by the QA team for Backend and Frontend according to the Schedule matrix. Part of regression Backend and Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**BackEnd&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Backend===&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
**Download poky &lt;br /&gt;
**Checkout on desired version&lt;br /&gt;
**Start Toaster with “bitbake/bin/toaster” command&lt;br /&gt;
&lt;br /&gt;
*Data integrity &lt;br /&gt;
**Data presence - the information is being recorded into the database&lt;br /&gt;
**Data consistency - the information is being recorded properly when modified from UI&lt;br /&gt;
**Build data - all the information from bitbake process is being transmitted properly to the database&lt;br /&gt;
*Data transfer between Toaster and Bitbake &lt;br /&gt;
*Toaster and Bitbake complete cycle communication&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster backend are are found in Testopia, as following&lt;br /&gt;
*Toaster Backend - Weekly: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
*Toaster Backend - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030&lt;br /&gt;
&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17768</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17768"/>
		<updated>2016-03-04T08:03:28Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: /* The oe-selftest toaster tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
=LEGACY= Starting with 2.1 M3, the following will no longer be tested by the QA team. The dev team will be taking over responsibility for these components:&lt;br /&gt;
* Backend interaction with bitbake for build purposes&lt;br /&gt;
* Backend interaction with database for storing and accessing build information&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
Backend features:&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
*Data presence&lt;br /&gt;
*Data consistency &lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== BackEnd functionalities ===&lt;br /&gt;
=== LEGACY === Starting with 2.1 M3 the dev team will be taking responsibility for these tests. They will become a part of their internal CI testing.&lt;br /&gt;
Covers data integrity, data transfer between Bitbake and Toaster, Start/Stop, building images, configuration, etc&lt;br /&gt;
&lt;br /&gt;
Testing needs:&lt;br /&gt;
*Built in python 2.7&lt;br /&gt;
*Direct sql requests to local sqlite instance&lt;br /&gt;
 YP2.1 TODO: Direct SQL tests are going to be hard to maintain and could be done more effectively by either using unit tests in django or by accessing the django ORM. This would also make the test database database backend agnostic.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
Brian&#039;s Comments&lt;br /&gt;
1) I would like to remove the manual element from all the toaster tests.&lt;br /&gt;
2) unless we are using something from within bitbake that I didn&#039;t see these tests do seem to be more amenable to django unit tests since they are already using the orm.models.* &lt;br /&gt;
3)we should avoid presuming that we are running from inside poky. referencing ../bitbake/lib/toaster is a bad idea.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Requires sqlite3 client installed (for manual debugging/investigation)&lt;br /&gt;
*BackEnd automated tests are verifying the correctness of the data gathered by the build process as presented in the Backend template: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
**In order for these tests to run properly, check the the steps for “The oe-selftest toaster tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For BackEnd managed mode  manual testing follow the steps from the following template https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030 &lt;br /&gt;
*please validate and add info from Testing Toaster wiki in this section(Test Strategy): https://wiki.yoctoproject.org/wiki/Testing_Toaster&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The oe-selftest toaster tests ===&lt;br /&gt;
=== LEGACY === These are no longer valid as of 2.1 M3&lt;br /&gt;
&lt;br /&gt;
These tests are verifying the correctness of the data gathered by the build process - it tests the bitbake/lib/bb/ui/toasterui.py and bitbake/lib/bb/ui/buildinfohelper.py files and the interface to the bitbake server process.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
&lt;br /&gt;
*Create new project using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Create 1 core-image-sato image to check building from cache&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To run these tests you need to source an environment by issuing:&lt;br /&gt;
  source oe-init-build-env&lt;br /&gt;
&lt;br /&gt;
then modify the bblayers.conf file to add the meta-selftest layer, create a symbolic link to the toaster.sqlite file:&lt;br /&gt;
  ln -s ../toaster.sqlite toaster.sqlite&lt;br /&gt;
&lt;br /&gt;
and then run the command:&lt;br /&gt;
  oe-selftest --run-tests _toaster&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression&lt;br /&gt;
Regression testing is being performed by the QA team for Backend and Frontend according to the Schedule matrix. Part of regression Backend and Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**BackEnd&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster Backend - Weekly: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
*Toaster Backend - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
*Toaster Exploratory - https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Backend===&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
**Download poky &lt;br /&gt;
**Checkout on desired version&lt;br /&gt;
**Start Toaster with “bitbake/bin/toaster” command&lt;br /&gt;
&lt;br /&gt;
*Data integrity &lt;br /&gt;
**Data presence - the information is being recorded into the database&lt;br /&gt;
**Data consistency - the information is being recorded properly when modified from UI&lt;br /&gt;
**Build data - all the information from bitbake process is being transmitted properly to the database&lt;br /&gt;
*Data transfer between Toaster and Bitbake &lt;br /&gt;
*Toaster and Bitbake complete cycle communication&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster backend are are found in Testopia, as following&lt;br /&gt;
*Toaster Backend - Weekly: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
*Toaster Backend - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030&lt;br /&gt;
&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17767</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17767"/>
		<updated>2016-03-04T08:02:38Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: /* BackEnd functionalities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
=LEGACY= Starting with 2.1 M3, the following will no longer be tested by the QA team. The dev team will be taking over responsibility for these components:&lt;br /&gt;
* Backend interaction with bitbake for build purposes&lt;br /&gt;
* Backend interaction with database for storing and accessing build information&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
Backend features:&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
*Data presence&lt;br /&gt;
*Data consistency &lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== BackEnd functionalities ===&lt;br /&gt;
=== LEGACY === Starting with 2.1 M3 the dev team will be taking responsibility for these tests. They will become a part of their internal CI testing.&lt;br /&gt;
Covers data integrity, data transfer between Bitbake and Toaster, Start/Stop, building images, configuration, etc&lt;br /&gt;
&lt;br /&gt;
Testing needs:&lt;br /&gt;
*Built in python 2.7&lt;br /&gt;
*Direct sql requests to local sqlite instance&lt;br /&gt;
 YP2.1 TODO: Direct SQL tests are going to be hard to maintain and could be done more effectively by either using unit tests in django or by accessing the django ORM. This would also make the test database database backend agnostic.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
Brian&#039;s Comments&lt;br /&gt;
1) I would like to remove the manual element from all the toaster tests.&lt;br /&gt;
2) unless we are using something from within bitbake that I didn&#039;t see these tests do seem to be more amenable to django unit tests since they are already using the orm.models.* &lt;br /&gt;
3)we should avoid presuming that we are running from inside poky. referencing ../bitbake/lib/toaster is a bad idea.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Requires sqlite3 client installed (for manual debugging/investigation)&lt;br /&gt;
*BackEnd automated tests are verifying the correctness of the data gathered by the build process as presented in the Backend template: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
**In order for these tests to run properly, check the the steps for “The oe-selftest toaster tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For BackEnd managed mode  manual testing follow the steps from the following template https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030 &lt;br /&gt;
*please validate and add info from Testing Toaster wiki in this section(Test Strategy): https://wiki.yoctoproject.org/wiki/Testing_Toaster&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The oe-selftest toaster tests ===&lt;br /&gt;
&lt;br /&gt;
These tests are verifying the correctness of the data gathered by the build process - it tests the bitbake/lib/bb/ui/toasterui.py and bitbake/lib/bb/ui/buildinfohelper.py files and the interface to the bitbake server process.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
&lt;br /&gt;
*Create new project using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Create 1 core-image-sato image to check building from cache&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To run these tests you need to source an environment by issuing:&lt;br /&gt;
  source oe-init-build-env&lt;br /&gt;
&lt;br /&gt;
then modify the bblayers.conf file to add the meta-selftest layer, create a symbolic link to the toaster.sqlite file:&lt;br /&gt;
  ln -s ../toaster.sqlite toaster.sqlite&lt;br /&gt;
&lt;br /&gt;
and then run the command:&lt;br /&gt;
  oe-selftest --run-tests _toaster&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression&lt;br /&gt;
Regression testing is being performed by the QA team for Backend and Frontend according to the Schedule matrix. Part of regression Backend and Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**BackEnd&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster Backend - Weekly: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
*Toaster Backend - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
*Toaster Exploratory - https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Backend===&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
**Download poky &lt;br /&gt;
**Checkout on desired version&lt;br /&gt;
**Start Toaster with “bitbake/bin/toaster” command&lt;br /&gt;
&lt;br /&gt;
*Data integrity &lt;br /&gt;
**Data presence - the information is being recorded into the database&lt;br /&gt;
**Data consistency - the information is being recorded properly when modified from UI&lt;br /&gt;
**Build data - all the information from bitbake process is being transmitted properly to the database&lt;br /&gt;
*Data transfer between Toaster and Bitbake &lt;br /&gt;
*Toaster and Bitbake complete cycle communication&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster backend are are found in Testopia, as following&lt;br /&gt;
*Toaster Backend - Weekly: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
*Toaster Backend - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030&lt;br /&gt;
&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17766</id>
		<title>Toaster testing plan</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Toaster_testing_plan&amp;diff=17766"/>
		<updated>2016-03-04T07:59:01Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: /* Objectives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
This article is the test plan for [https://wiki.yoctoproject.org/wiki/WebHob Toaster].&lt;br /&gt;
&lt;br /&gt;
= About Toaster =&lt;br /&gt;
Toaster is a web interface to the [http://www.yoctoproject.org/docs/2.0/dev-manual/dev-manual.html#build-system-term Yocto Project’s OpenEmbedded] build system that allows a user to run and build his own builds. The information is collected and stored in a database, so Toaster provides information and statistics about the build process. Toaster can be used to configure and start builds on multiple remote build servers.&lt;br /&gt;
&lt;br /&gt;
Currently positive testing is being executed for existing features.&lt;br /&gt;
Tasks:&lt;br /&gt;
*Validating the current build (running regression test)&lt;br /&gt;
*Bug &amp;amp; Feature verification&lt;br /&gt;
*Exploratory on existing functionalities&lt;br /&gt;
&lt;br /&gt;
= Objectives =&lt;br /&gt;
Verify all Toaster components to be fully functional.&lt;br /&gt;
 &lt;br /&gt;
Components to be verified:&lt;br /&gt;
* UI interface&lt;br /&gt;
&lt;br /&gt;
The testing objective involves only positive testing for existing features on Toaster.&lt;br /&gt;
Perform exploratory testing focusing on newer features &lt;br /&gt;
*this can sometimes generate new test cases.&lt;br /&gt;
Verifying the bugs and features.&lt;br /&gt;
&lt;br /&gt;
=LEGACY= Starting with 2.1 M3, the following will no longer be tested by the QA team. The dev team will be taking over responsibility for these components:&lt;br /&gt;
* Backend interaction with bitbake for build purposes&lt;br /&gt;
* Backend interaction with database for storing and accessing build information&lt;br /&gt;
&lt;br /&gt;
= Team members =&lt;br /&gt;
==QA Team involved in Toaster testing==&lt;br /&gt;
&lt;br /&gt;
 [mailto:stanciux.mihail@intel.com Mihail, Stanciu]&lt;br /&gt;
 [mailto:cristina-danielax.agurida@intel.com Agurida, Cristina ]&lt;br /&gt;
 [mailto:alexandru.c.georgescu@intel.com Georgescu, Alexandru]&lt;br /&gt;
&lt;br /&gt;
= Scope =&lt;br /&gt;
Testing scope has been agreed upon as local installation only, using sqlite database on Fedora and Ubuntu operating systems on Firefox browser.&lt;br /&gt;
&lt;br /&gt;
New features are to be tested as they are finished with test cases written for them once features are stabilized.&lt;br /&gt;
&lt;br /&gt;
UI features being tested:&lt;br /&gt;
*Create new project&lt;br /&gt;
*Modify project settings and variables&lt;br /&gt;
*Add/Remove layers to project&lt;br /&gt;
*Building images&lt;br /&gt;
*Build details&lt;br /&gt;
*All builds report table&lt;br /&gt;
&lt;br /&gt;
Backend features:&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
*Data presence&lt;br /&gt;
*Data consistency &lt;br /&gt;
*Build data&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO - we need toaster-next on poky-contrib to be tested. Basically to add some of the poky-contrib branches to be tested routinely&lt;br /&gt;
 YP2.1 TODO - add mysql testing as well&lt;br /&gt;
&lt;br /&gt;
= Test Strategy =&lt;br /&gt;
There are several test approaches for Toaster Testing, such as:&lt;br /&gt;
*Perform test cases agreed upon the development during periodic full passes according to the Schedule&lt;br /&gt;
*Write new test cases based on developer request or new features requires it.&lt;br /&gt;
**Maintain current test cases and update them accordingly&lt;br /&gt;
*Perform exploratory testing on existing functionalities. &lt;br /&gt;
**YP 2.1 Testopia template [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043 here].&lt;br /&gt;
&lt;br /&gt;
== Major feature groups  and their testing approach ==&lt;br /&gt;
=== FrontEnd - UI Basic functionalities ===&lt;br /&gt;
&lt;br /&gt;
Toaster UI features are tested such as links, buttons, tables, pages basic functionalities.&lt;br /&gt;
&lt;br /&gt;
Testing needs :&lt;br /&gt;
*Built only in python 2.7&lt;br /&gt;
*Latest version of Selenium as python module&lt;br /&gt;
*Latest version of Firefox&lt;br /&gt;
*In order to test Selenium automated based tests (https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027 ), the following steps need to be taken before running, on a clean toaster setup&lt;br /&gt;
**ckeck the steps and requirements for “The Selenium automated UI tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For UI manual testing follow the steps from https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029 TCs &lt;br /&gt;
**currently working on their automation using Selenium&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== BackEnd functionalities ===&lt;br /&gt;
Covers data integrity, data transfer between Bitbake and Toaster, Start/Stop, building images, configuration, etc&lt;br /&gt;
&lt;br /&gt;
Testing needs:&lt;br /&gt;
*Built in python 2.7&lt;br /&gt;
*Direct sql requests to local sqlite instance&lt;br /&gt;
 YP2.1 TODO: Direct SQL tests are going to be hard to maintain and could be done more effectively by either using unit tests in django or by accessing the django ORM. This would also make the test database database backend agnostic.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
Brian&#039;s Comments&lt;br /&gt;
1) I would like to remove the manual element from all the toaster tests.&lt;br /&gt;
2) unless we are using something from within bitbake that I didn&#039;t see these tests do seem to be more amenable to django unit tests since they are already using the orm.models.* &lt;br /&gt;
3)we should avoid presuming that we are running from inside poky. referencing ../bitbake/lib/toaster is a bad idea.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Requires sqlite3 client installed (for manual debugging/investigation)&lt;br /&gt;
*BackEnd automated tests are verifying the correctness of the data gathered by the build process as presented in the Backend template: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
**In order for these tests to run properly, check the the steps for “The oe-selftest toaster tests” from https://wiki.yoctoproject.org/wiki/Testing_Toaster &lt;br /&gt;
*For BackEnd managed mode  manual testing follow the steps from the following template https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030 &lt;br /&gt;
**currently working on their automation&lt;br /&gt;
**AR Cristina + Mihai:&lt;br /&gt;
*please validate and add info from Testing Toaster wiki in this section(Test Strategy): https://wiki.yoctoproject.org/wiki/Testing_Toaster&lt;br /&gt;
&lt;br /&gt;
== Test automation ==&lt;br /&gt;
Toaster has 3 testing suites, targeted at verifying different parts of the system.&lt;br /&gt;
&lt;br /&gt;
=== Django Unit Tests ===&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
 ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: QA start running tests&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
=== Toaster Test System (TTS) ===&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system.&lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The oe-selftest toaster tests ===&lt;br /&gt;
&lt;br /&gt;
These tests are verifying the correctness of the data gathered by the build process - it tests the bitbake/lib/bb/ui/toasterui.py and bitbake/lib/bb/ui/buildinfohelper.py files and the interface to the bitbake server process.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
&lt;br /&gt;
*Create new project using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Create 1 core-image-sato image to check building from cache&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To run these tests you need to source an environment by issuing:&lt;br /&gt;
  source oe-init-build-env&lt;br /&gt;
&lt;br /&gt;
then modify the bblayers.conf file to add the meta-selftest layer, create a symbolic link to the toaster.sqlite file:&lt;br /&gt;
  ln -s ../toaster.sqlite toaster.sqlite&lt;br /&gt;
&lt;br /&gt;
and then run the command:&lt;br /&gt;
  oe-selftest --run-tests _toaster&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The selenium automated UI tests ===&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
The selenium tests require a couple of components:&lt;br /&gt;
*scrot (a screen capture utility) and pip - a utility for installing python modules. The following is how you install it for ubuntu:&lt;br /&gt;
 sudo apt-get install scrot python-pip python-virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
 pip install selenium&lt;br /&gt;
*Since this is a web application, the UI can also be tested from a mac. To install the requirements there do:&lt;br /&gt;
 sudo easy_install pip&lt;br /&gt;
 sudo pip install virtualenv&lt;br /&gt;
 virtualenv t-selenium&lt;br /&gt;
 source ./t-selenium/bin/activate&lt;br /&gt;
*also install the latest filefox extension from selenium located at: http://release.seleniumhq.org/selenium-ide/ and install all the extensions.&lt;br /&gt;
&lt;br /&gt;
The selenium tests are located in:&lt;br /&gt;
 ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
You run them with:&lt;br /&gt;
 ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
The above command takes the list of the tests to run from the toaster_test.cfg file. The tests themselves are located in toaster_automation_test.py. The toaster_test.cfg file has a couple of important variables in it separated by which os you are running the tests on. These varables control where the toaster instance is located (defaults to http://127.0.0.1:8000) what browser to use (firefox is safest for selenium though there is a chrome driver available as well), what tests to run and what log level to save data at.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
 YP2.1 TODO: Update this section, since the steps are a WIP for automation.&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
 test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The code for running Selenium UI tests is available here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=alimon/toaster_tests_squash&lt;br /&gt;
&lt;br /&gt;
== Test Approach ==&lt;br /&gt;
Regression&lt;br /&gt;
Regression testing is being performed by the QA team for Backend and Frontend according to the Schedule matrix. Part of regression Backend and Frontend are covered.&lt;br /&gt;
&lt;br /&gt;
=== Sanity testing ===&lt;br /&gt;
*Not covered at this moment&lt;br /&gt;
*TBD following DEV discussions&lt;br /&gt;
&lt;br /&gt;
=== Performance and Stress ===&lt;br /&gt;
*Testing two concurrent builds&lt;br /&gt;
*TC…&lt;br /&gt;
&lt;br /&gt;
=== Load testing ===&lt;br /&gt;
*Not covered&lt;br /&gt;
*TBD&lt;br /&gt;
&lt;br /&gt;
=== System Integration Testing ===&lt;br /&gt;
*Not covered (maybe covered by DEV w/ Jenkins)&lt;br /&gt;
&lt;br /&gt;
===Regression===&lt;br /&gt;
*All Full pass tests for&lt;br /&gt;
**BackEnd&lt;br /&gt;
**FrontEnd&lt;br /&gt;
&lt;br /&gt;
== Maintaining the test cases ==&lt;br /&gt;
&lt;br /&gt;
Toaster test cases are officially stored in Testopia, the Yocto Project test case management system. Testopia is a test case management platform and an extension for Bugzilla developed by the Mozilla Foundation that helps organize test cases using a tight relation with elements in Bugzilla. More details on Testopia, can be found on the YP Wiki at https://wiki.yoctoproject.org/wiki/Testopia. &lt;br /&gt;
&lt;br /&gt;
A quick start guide for Testopia is found on the Testopia wiki at https://wiki.yoctoproject.org/wiki/Testopia#What_do_I_need_to_start_using_Testopia.3F.&lt;br /&gt;
&lt;br /&gt;
As currently Testopia is structured, all Toaster test cases are stored under Classifications/Build System &amp;amp; Metadata/ Toaster component within Testopia. All the test cases are organized in Test Run Templates as following:&lt;br /&gt;
*Toaster Backend - Weekly: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
*Toaster Backend - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
*Toaster Exploratory - https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4043&lt;br /&gt;
&lt;br /&gt;
== Submitting Bugs ==&lt;br /&gt;
Being part of the Yocto Project, Toaster follows the same Yocto Project guidelines and principles. The guidelines can be found at https://wiki.yoctoproject.org/wiki/Community_Guidelines. &lt;br /&gt;
Toaster bugs are no different and are tracked into Bugzilla, the official Yocto Project bug tracker. Learn more about [https://wiki.yoctoproject.org/wiki/Bugzilla_Configuration_and_Bug_Tracking our process for reporting bugs].&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
==HW Requirements==&lt;br /&gt;
A host system with a minimum of 50 Gbytes of free disk space that is running a supported Linux distribution&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
*Django 1.6&lt;br /&gt;
*South 0.8.4&lt;br /&gt;
*argparse 1.2.1&lt;br /&gt;
*wsgiref 0.1.2&lt;br /&gt;
*beautifulsoup4 4.4.0 or greater&lt;br /&gt;
*A release of the Yocto Project: http://git.yoctoproject.org/cgit/cgit.cgi/poky/&lt;br /&gt;
*YP [http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Quick Start] requirements &lt;br /&gt;
**Git 1.7.8 or greater &lt;br /&gt;
**tar 1.24 or greater&lt;br /&gt;
**Python 2.7.3&lt;br /&gt;
&lt;br /&gt;
==Environment Requirements==&lt;br /&gt;
*Supported Browsers – no official browser selected yet, usually Firefox is used&lt;br /&gt;
*Supported operating systems as per SANITY_TESTED_DISTROS listed in  meta-yocto/conf/distro/poky.conf&lt;br /&gt;
**YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Latest version of Selenium installed as python module&lt;br /&gt;
*YP QS (Maybe, depending where Toaster server is installed)&lt;br /&gt;
*SQLITE 3 Client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Features=&lt;br /&gt;
==Features to be tested==&lt;br /&gt;
===Backend===&lt;br /&gt;
*Toaster installation and first time configuration&lt;br /&gt;
**Download poky &lt;br /&gt;
**Checkout on desired version&lt;br /&gt;
**Start Toaster with “bitbake/bin/toaster” command&lt;br /&gt;
&lt;br /&gt;
*Data integrity &lt;br /&gt;
**Data presence - the information is being recorded into the database&lt;br /&gt;
**Data consistency - the information is being recorded properly when modified from UI&lt;br /&gt;
**Build data - all the information from bitbake process is being transmitted properly to the database&lt;br /&gt;
*Data transfer between Toaster and Bitbake &lt;br /&gt;
*Toaster and Bitbake complete cycle communication&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster backend are are found in Testopia, as following&lt;br /&gt;
*Toaster Backend - Weekly: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4028&lt;br /&gt;
*Toaster Backend - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4030&lt;br /&gt;
&lt;br /&gt;
===Frontend===&lt;br /&gt;
*Verifying if all view elements work (buttons, tables, sort buttons, etc.)&lt;br /&gt;
*Configurations&lt;br /&gt;
**Communication between UI-BackEnd&lt;br /&gt;
**Browse and build any layers published in [http://layers.openembedded.org/layerindex/branch/master/layers/ OpenEmbedded Metadata Index]&lt;br /&gt;
**Import your own layers for building&lt;br /&gt;
**Add/Remove layers from configuration&lt;br /&gt;
**Set configurations variables&lt;br /&gt;
**Select a target or multiple targets to build &lt;br /&gt;
*Building images&lt;br /&gt;
**Build base images(core-image-minimal, core-image-sato etc)&lt;br /&gt;
**Build images with added layers&lt;br /&gt;
**Build images after modifying project settings&lt;br /&gt;
*Data Presentation&lt;br /&gt;
**All builds report table&lt;br /&gt;
**View what was built and what packages were installed into final image&lt;br /&gt;
**Browse the directory structure of the image &lt;br /&gt;
**View the value of all variables form build configuration&lt;br /&gt;
**Examine errors, warnings and trace messages &lt;br /&gt;
**View information about the Bitbake task executed and reused during a build&lt;br /&gt;
**View dependency relations between recipes, packages and tasks&lt;br /&gt;
**View performance informations such as build time, task time, CPU usage and disk I/O&lt;br /&gt;
**Build details&lt;br /&gt;
***Build configuration page&lt;br /&gt;
****Build artifacts&lt;br /&gt;
****Bitbake variables table&lt;br /&gt;
***Tasks report table&lt;br /&gt;
***Metrics report tables&lt;br /&gt;
****CPU usage&lt;br /&gt;
****Disk I/O&lt;br /&gt;
****Time&lt;br /&gt;
***Included packages report table&lt;br /&gt;
****Package details page&lt;br /&gt;
***Recipes used during build&lt;br /&gt;
****Recipe details page&lt;br /&gt;
**Definition data from JSON file&lt;br /&gt;
***file path: “/poky/meta-yocto/conf”&lt;br /&gt;
***contains default settings and informations for:&lt;br /&gt;
****configuration&lt;br /&gt;
****layer source&lt;br /&gt;
****releases&lt;br /&gt;
****bitbake&lt;br /&gt;
&lt;br /&gt;
;The test runs templates for Toaster frontend are are found in Testopia, as following:&lt;br /&gt;
*Toaster UI: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4027&lt;br /&gt;
*Toaster UI - Managed Mode: https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4029&lt;br /&gt;
&lt;br /&gt;
== New Features to be tested 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Image Customization&lt;br /&gt;
*Create, edit, delete custom image&lt;br /&gt;
*Add/remove packages&lt;br /&gt;
*Build image&lt;br /&gt;
*Image details page&lt;br /&gt;
*Downloading the image custom recipe&lt;br /&gt;
&lt;br /&gt;
== Setup covered by QA tests ==&lt;br /&gt;
*SQLITE database&lt;br /&gt;
**add MySQL database testing&lt;br /&gt;
**add running TOaster as a service with Apache (e.g. production instance)&lt;br /&gt;
&lt;br /&gt;
*YP 2.0 Release:&lt;br /&gt;
**Ubuntu-14.04&lt;br /&gt;
**Ubuntu-14.10&lt;br /&gt;
**Ubuntu-15.04&lt;br /&gt;
**Fedora-21&lt;br /&gt;
**CentOS-6.*&lt;br /&gt;
**CentOS-7.*&lt;br /&gt;
**Debian-7.*&lt;br /&gt;
**Debian-8.*&lt;br /&gt;
**openSUSE-project-13.2&lt;br /&gt;
&lt;br /&gt;
*Firefox browser&lt;br /&gt;
*Add Chrome as well&lt;br /&gt;
&lt;br /&gt;
== We don’t cover yet ==&lt;br /&gt;
*Layer integrity (covering all layers is impossible)&lt;br /&gt;
**AR Mihai to get Brian’s supported layer list&lt;br /&gt;
*Toaster-next branch&lt;br /&gt;
**what’s the easiest way to run the automated tests for a person.&lt;br /&gt;
**holy grail - make a single framework solution.&lt;br /&gt;
*Safari browser&lt;br /&gt;
*TBD - to check with DEV what it’s not covered yet.&lt;br /&gt;
&lt;br /&gt;
= Schedule =&lt;br /&gt;
&lt;br /&gt;
*Toaster is tested only at Full Pass by QA Team&lt;br /&gt;
**the plan is to run it according to the Test execution Cycle, after automation is in place.&lt;br /&gt;
*Toaster is tested on toaster-next branch before every merge into Master by Dev team&lt;br /&gt;
&lt;br /&gt;
*Toaster will be tested according to the [https://wiki.yoctoproject.org/wiki/Yocto_2.1_Schedule YP 2.1 Schedule].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test execution Cycle==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Build&lt;br /&gt;
! Sanity Test/E2E&lt;br /&gt;
! Weekly Test&lt;br /&gt;
! Full Pass&lt;br /&gt;
|-&lt;br /&gt;
| Daily Master&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Weekly Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| NO&lt;br /&gt;
|-&lt;br /&gt;
| Milestone Build&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
| Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Sanity Test is described [https://docs.google.com/document/d/1RN6t-_HfaVWKfcMD4DCl8RYwX_yfsnPcugXVMYz02GE/edit#heading=h.pcitht2lsb0q here].&lt;br /&gt;
*run on toaster-next or poky-contrib. &lt;br /&gt;
**TBD &lt;br /&gt;
***need info from DEV owners on what Sanity testing is done by them&lt;br /&gt;
***detail the set of tests. e.g. django unit tests, Toaster oe-selftest&lt;br /&gt;
Weekly test&lt;br /&gt;
*Weekly testing is performed on a weekly basis on the poky weekly build.&lt;br /&gt;
*E2E consists of all automated tests that can be run on Toaster&lt;br /&gt;
**oe-selftest toaster tests&lt;br /&gt;
*selenium UI tests&lt;br /&gt;
*TBD &lt;br /&gt;
**add E2E integration information&lt;br /&gt;
**add more information&lt;br /&gt;
Full Pass&lt;br /&gt;
*On full pass all available tests will be run:&lt;br /&gt;
**Automated tests:&lt;br /&gt;
***Django Unit Tests&lt;br /&gt;
***oe-selftest toaster tests&lt;br /&gt;
***Selenium automated UI tests&lt;br /&gt;
**Manual tests&lt;br /&gt;
***The non-automated tests from the Toaster test runs.&lt;br /&gt;
*Full pass is scheduled to be run on every YP release candidate. The YP is divided in four release milestone structure as described in the YP Schedule.&lt;br /&gt;
&lt;br /&gt;
=Dependencies=&lt;br /&gt;
*YP Dependencies&lt;br /&gt;
**Bitbake works&lt;br /&gt;
*Some changes in the Toaster UI might affect running the UI automated tests using Selenium &lt;br /&gt;
**e.g. Changing the element ID’s in the Toaster pages reflected in failing all UI related automated TC’s&lt;br /&gt;
*recipe image we’re testing to get build data (metadata broken)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Risk Assumptions=&lt;br /&gt;
*TBD (AlexG)&lt;br /&gt;
*Project Risks&lt;br /&gt;
**QA and DEV to define this&lt;br /&gt;
**Toaster doesn’t affect atm any other YP component (confirmed)&lt;br /&gt;
**Changes in Bitbake, bitbake logging might affect Toaster functionality&lt;br /&gt;
**Is reliant by host/browser environment&lt;br /&gt;
***TBD - add opensuse as well at some point&lt;br /&gt;
***TBD - expand the Toaster test framework to the supported host distributions of YP&lt;br /&gt;
*Testing Risks&lt;br /&gt;
**Toaster quality might be affected&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
*Refer to Requirements section&lt;br /&gt;
*TBD (need more detailed info of required tools)&lt;br /&gt;
&lt;br /&gt;
= Release Criteria/ Exit Criteria =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
THIS IS THE OLD TESTING PLAN &lt;br /&gt;
&lt;br /&gt;
= Test Areas =&lt;br /&gt;
Toaster consists of two big components, as follows:&lt;br /&gt;
&lt;br /&gt;
== Backend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*  [[REST_API_Contracts | REST API]]  verification – create Django tests to detect API calls returning incomplete (fields having null values) or wrong data for a certain set of entries from each table - our goal is to have 90% data collected. The tests can be found [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=andreeap/toaster-tests&amp;amp;id=7cfd179be5db2a5530d60093fd09d0240138c2fa here];&lt;br /&gt;
*  Calculation of the data collection rate - the ratio between the number of the variables having null values ​​and the total number of variables collected (the data collection rate does not include wrong values); Run: ./fail_rate.py path_to_toaster.sqlite_file. Output: table_name field_name value_that_never_changes and for each table a percentage: (the number of occurences of all the fields that never change their values)/(total number of entries for that table);&lt;br /&gt;
*  Verify that all links in the simple UI are available;&lt;br /&gt;
*  Verify the quality of the data collected through the simple UI;&lt;br /&gt;
*  Verify the quality of the data collected by verifying most of the values from the database by connecting directly to the database - our immediate goal is to have 90% correct data collected;&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ====&lt;br /&gt;
*  Verify the easy usage of Toaster ([https://wiki.yoctoproject.org/wiki/WebHob#Installation_and_Running easy to install and start/stop the toaster server])&lt;br /&gt;
&lt;br /&gt;
== Frontend ==&lt;br /&gt;
&lt;br /&gt;
==== Functionality tests ====&lt;br /&gt;
*   Manual testing in the first stage;&lt;br /&gt;
*   Automate testing using  [http://www.seleniumhq.org/ Selenium], in the second stage;&lt;br /&gt;
&lt;br /&gt;
==== Compatibility tests ====&lt;br /&gt;
*   Verify the behavior of the GUI on different browsers and operating systems; TBD&lt;br /&gt;
&lt;br /&gt;
==== Usability tests ==== &lt;br /&gt;
*   Verify if the GUI design is as described here: http://yoctoproject.org/webhob;&lt;br /&gt;
*   Friendly graphical user interface;&lt;br /&gt;
&lt;br /&gt;
==== Performance tests ====&lt;br /&gt;
*   Stress testing (e.g. display appropriate error messages when the system is under stress);&lt;br /&gt;
&lt;br /&gt;
= Test Cycle =&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| || || colspan=&amp;quot;3&amp;quot; | Test execution cycle&lt;br /&gt;
|-&lt;br /&gt;
| || || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Build type || Weekly  || Yes || Yes ||&lt;br /&gt;
|-&lt;br /&gt;
| Release || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | [[#Test Areas]] || [[#Backend]] || Yes || Yes || Yes &lt;br /&gt;
|-&lt;br /&gt;
| [[#Frontend]]  || Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Target machine || qemuarm || || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemumips|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemuppc|| || || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86|| Yes || Yes || Yes&lt;br /&gt;
|-&lt;br /&gt;
| qemux86-64  ||  ||  || Yes&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Target image|| core-image-minimal|| Yes || || &lt;br /&gt;
|-&lt;br /&gt;
| core-image-sato-sdk|| || Yes || Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weekly Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built weekly and released through the distribution team.&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Functionality test on most areas with minimum sets of tests;&lt;br /&gt;
** Regression test with high probability to find bugs.&lt;br /&gt;
&lt;br /&gt;
== Full Pass Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Images built as candidates for milestone or final release;&lt;br /&gt;
** Passed [[#Weekly Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** Ensure functionality of Toaster component.&lt;br /&gt;
&lt;br /&gt;
== Release Test ==&lt;br /&gt;
*; Scope:&lt;br /&gt;
** Release candidates that pass [[#Full Pass Test]]&lt;br /&gt;
&lt;br /&gt;
*; Objective:&lt;br /&gt;
** All scheduled features are covered, or rescheduled;&lt;br /&gt;
** All relevant bugs are fixed and verified.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Weekly_5b12268f6e17574999f91628a60e21711cf62ee4&amp;diff=17553</id>
		<title>Weekly 5b12268f6e17574999f91628a60e21711cf62ee4</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Weekly_5b12268f6e17574999f91628a60e21711cf62ee4&amp;diff=17553"/>
		<updated>2016-02-11T15:03:50Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[https://wiki.yoctoproject.org/wiki/QA_sanity_history &amp;lt; Back]&lt;br /&gt;
&amp;lt;br /&amp;gt;Ran on a genericx86_minnowmax and compared with commit dd0ba9ea4a11ab15348d4fe3574e4b28784db82f&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Results&lt;br /&gt;
|- style=&amp;quot;background-color:#F0F8FC; padding:10px;&amp;quot;&lt;br /&gt;
|Package Name ||Tests ran ||Passed ||Failed ||Passrate ||Last Passrate ||Run difference&lt;br /&gt;
        |-&lt;br /&gt;
        |genericx86_minnowmax ||57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |56 ||style=&amp;quot;background-color:#F78D72;&amp;quot; |1 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|98.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|96.0&amp;amp;#37; ||style=&amp;quot;background-color:#F78D72;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;Yes&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;p&amp;gt;Results for genericx86_minnowmax weekly runtime 2016-02-09:&amp;lt;br /&amp;gt;********************************&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now and worked last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that passed now and and failed last time:&amp;lt;/b&amp;gt; 1&amp;lt;/p&amp;gt;testcase-215&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped now and worked last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped last time and worked now:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now:&amp;lt;/b&amp;gt; 1&amp;lt;/p&amp;gt;testcase-1059&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |genericx86-64_minnowmax ||57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |56 ||style=&amp;quot;background-color:#F78D72;&amp;quot; |1 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|98.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|96.0&amp;amp;#37; ||style=&amp;quot;background-color:#F78D72;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;Yes&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;p&amp;gt;Results for genericx86-64_minnowmax weekly runtime 2016-02-09:&amp;lt;br /&amp;gt;********************************&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now and worked last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that passed now and and failed last time:&amp;lt;/b&amp;gt; 1&amp;lt;/p&amp;gt;testcase-215&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped now and worked last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped last time and worked now:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now:&amp;lt;/b&amp;gt; 1&amp;lt;/p&amp;gt;testcase-1059&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |qemux86 ||57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |0 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;No&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |genericx86-lsb_minnowmax ||58 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |55 ||style=&amp;quot;background-color:#F78D72;&amp;quot; |2 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|95.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|93.0&amp;amp;#37; ||style=&amp;quot;background-color:#F78D72;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;Yes&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;p&amp;gt;Results for genericx86-lsb_minnowmax weekly runtime 2016-02-09:&amp;lt;br /&amp;gt;********************************&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now and worked last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that passed now and and failed last time:&amp;lt;/b&amp;gt; 1&amp;lt;/p&amp;gt;testcase-215&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped now and worked last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped last time and worked now:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now:&amp;lt;/b&amp;gt; 2&amp;lt;/p&amp;gt;testcase-1059&amp;lt;br /&amp;gt;testcase-316&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |toaster ||11 ||style=&amp;quot;background-color:#F78D72;&amp;quot; |8 ||style=&amp;quot;background-color:#F78D72;&amp;quot; |3 ||style=&amp;quot;background-color:#F78D72;&amp;quot;|73.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|88.0&amp;amp;#37; ||style=&amp;quot;background-color:#F78D72;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;Yes&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;p&amp;gt;Results for toaster weekly toaster 2016-02-09:&amp;lt;br /&amp;gt;********************************&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now and worked last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that passed now and and failed last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped now and worked last time:&amp;lt;/b&amp;gt; 31&amp;lt;/p&amp;gt;testcase-test_946&amp;lt;br /&amp;gt;testcase-test_956&amp;lt;br /&amp;gt;testcase-test_955&amp;lt;br /&amp;gt;testcase-test_948&amp;lt;br /&amp;gt;testcase-test_1093&amp;lt;br /&amp;gt;testcase-test_1091&amp;lt;br /&amp;gt;testcase-test_913&amp;lt;br /&amp;gt;testcase-test_912&amp;lt;br /&amp;gt;testcase-test_911&amp;lt;br /&amp;gt;testcase-test_910&amp;lt;br /&amp;gt;testcase-test_916&amp;lt;br /&amp;gt;testcase-test_915&amp;lt;br /&amp;gt;testcase-test_914&amp;lt;br /&amp;gt;testcase-test_1088&amp;lt;br /&amp;gt;testcase-test_1072&amp;lt;br /&amp;gt;testcase-test_940&amp;lt;br /&amp;gt;testcase-test_1084&amp;lt;br /&amp;gt;testcase-test_943&amp;lt;br /&amp;gt;testcase-test_944&amp;lt;br /&amp;gt;testcase-test_923&amp;lt;br /&amp;gt;testcase-test_1083&amp;lt;br /&amp;gt;testcase-test_947&amp;lt;br /&amp;gt;testcase-test_904&amp;lt;br /&amp;gt;testcase-test_949&amp;lt;br /&amp;gt;testcase-test_906&amp;lt;br /&amp;gt;testcase-test_1089&amp;lt;br /&amp;gt;testcase-test_901&amp;lt;br /&amp;gt;testcase-test_902&amp;lt;br /&amp;gt;testcase-test_903&amp;lt;br /&amp;gt;testcase-test_941&amp;lt;br /&amp;gt;testcase-test_942&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped last time and worked now:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now:&amp;lt;/b&amp;gt; 3&amp;lt;/p&amp;gt;testcase-test_1076&amp;lt;br /&amp;gt;testcase-test_1092&amp;lt;br /&amp;gt;testcase-test_1090&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |qemux86_64 ||57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |0 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;No&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |qemumips ||57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |0 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;No&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |qemuppc ||57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |0 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;No&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |eclipse-luna ||23 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |23 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |0 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#F78D72;&amp;quot;|50.0&amp;amp;#37; ||style=&amp;quot;background-color:#F78D72;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;Yes&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;p&amp;gt;Results for eclipse-luna weekly eclipse-luna 2016-02-09:&amp;lt;br /&amp;gt;********************************&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now and worked last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that passed now and and failed last time:&amp;lt;/b&amp;gt; 2&amp;lt;/p&amp;gt;testcase-25&amp;lt;br /&amp;gt;testcase-26&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped now and worked last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped last time and worked now:&amp;lt;/b&amp;gt; 19&amp;lt;/p&amp;gt;testcase-39&amp;lt;br /&amp;gt;testcase-38&amp;lt;br /&amp;gt;testcase-32&amp;lt;br /&amp;gt;testcase-31&amp;lt;br /&amp;gt;testcase-388&amp;lt;br /&amp;gt;testcase-380&amp;lt;br /&amp;gt;testcase-385&amp;lt;br /&amp;gt;testcase-386&amp;lt;br /&amp;gt;testcase-387&amp;lt;br /&amp;gt;testcase-42&amp;lt;br /&amp;gt;testcase-27&amp;lt;br /&amp;gt;testcase-153&amp;lt;br /&amp;gt;testcase-157&amp;lt;br /&amp;gt;testcase-159&amp;lt;br /&amp;gt;testcase-374&amp;lt;br /&amp;gt;testcase-377&amp;lt;br /&amp;gt;testcase-373&amp;lt;br /&amp;gt;testcase-379&amp;lt;br /&amp;gt;testcase-378&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |genericx86-64-lsb_nuc ||55 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |55 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |0 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#F78D72;&amp;quot;|66.0&amp;amp;#37; ||style=&amp;quot;background-color:#F78D72;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;Yes&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;p&amp;gt;Results for genericx86-64-lsb_nuc weekly runtime 2016-02-09:&amp;lt;br /&amp;gt;********************************&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now and worked last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that passed now and and failed last time:&amp;lt;/b&amp;gt; 9&amp;lt;/p&amp;gt;testcase-965&amp;lt;br /&amp;gt;testcase-1096&amp;lt;br /&amp;gt;testcase-719&amp;lt;br /&amp;gt;testcase-208&amp;lt;br /&amp;gt;testcase-1059&amp;lt;br /&amp;gt;testcase-726&amp;lt;br /&amp;gt;testcase-215&amp;lt;br /&amp;gt;testcase-211&amp;lt;br /&amp;gt;testcase-718&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped now and worked last time:&amp;lt;/b&amp;gt; 3&amp;lt;/p&amp;gt;testcase-289&amp;lt;br /&amp;gt;testcase-202&amp;lt;br /&amp;gt;testcase-test_1_logrotate_setup&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped last time and worked now:&amp;lt;/b&amp;gt; 2&amp;lt;/p&amp;gt;testcase-195&amp;lt;br /&amp;gt;testcase-234&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |genericx86-64_nuc ||57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |56 ||style=&amp;quot;background-color:#F78D72;&amp;quot; |1 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|98.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|85.0&amp;amp;#37; ||style=&amp;quot;background-color:#F78D72;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;Yes&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;p&amp;gt;Results for genericx86-64_nuc weekly runtime 2016-02-09:&amp;lt;br /&amp;gt;********************************&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now and worked last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that passed now and and failed last time:&amp;lt;/b&amp;gt; 7&amp;lt;/p&amp;gt;testcase-965&amp;lt;br /&amp;gt;testcase-208&amp;lt;br /&amp;gt;testcase-723&amp;lt;br /&amp;gt;testcase-1059&amp;lt;br /&amp;gt;testcase-726&amp;lt;br /&amp;gt;testcase-215&amp;lt;br /&amp;gt;testcase-211&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped now and worked last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped last time and worked now:&amp;lt;/b&amp;gt; 2&amp;lt;/p&amp;gt;testcase-195&amp;lt;br /&amp;gt;testcase-234&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now:&amp;lt;/b&amp;gt; 1&amp;lt;/p&amp;gt;testcase-1096&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |eclipse-mars ||23 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |23 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |0 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#F78D72;&amp;quot;|0.0&amp;amp;#37; ||style=&amp;quot;background-color:#F78D72;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;Yes&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;p&amp;gt;Results for eclipse-mars weekly eclipse-mars 2016-02-09:&amp;lt;br /&amp;gt;********************************&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now and worked last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that passed now and and failed last time:&amp;lt;/b&amp;gt; 1&amp;lt;/p&amp;gt;testcase-24&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped now and worked last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped last time and worked now:&amp;lt;/b&amp;gt; 22&amp;lt;/p&amp;gt;testcase-39&amp;lt;br /&amp;gt;testcase-38&amp;lt;br /&amp;gt;testcase-32&amp;lt;br /&amp;gt;testcase-31&amp;lt;br /&amp;gt;testcase-388&amp;lt;br /&amp;gt;testcase-380&amp;lt;br /&amp;gt;testcase-385&amp;lt;br /&amp;gt;testcase-386&amp;lt;br /&amp;gt;testcase-387&amp;lt;br /&amp;gt;testcase-739&amp;lt;br /&amp;gt;testcase-42&amp;lt;br /&amp;gt;testcase-25&amp;lt;br /&amp;gt;testcase-26&amp;lt;br /&amp;gt;testcase-27&amp;lt;br /&amp;gt;testcase-153&amp;lt;br /&amp;gt;testcase-157&amp;lt;br /&amp;gt;testcase-159&amp;lt;br /&amp;gt;testcase-374&amp;lt;br /&amp;gt;testcase-377&amp;lt;br /&amp;gt;testcase-373&amp;lt;br /&amp;gt;testcase-379&amp;lt;br /&amp;gt;testcase-378&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Setting_up_a_production_instance_of_Toaster&amp;diff=17488</id>
		<title>Setting up a production instance of Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Setting_up_a_production_instance_of_Toaster&amp;diff=17488"/>
		<updated>2016-02-09T15:08:52Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This page is the development version of the documentation to provide the latest information, if you&#039;re using a release please refer to [https://www.yoctoproject.org/documentation/archived the published manual]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A production instance of Toaster is one in which you wish to share the Toaster instance with remote and multiple users. It is also the setup which can cope with heavier loads on the web service. These instructions setup toaster in Build mode where builds and projects are run, viewed and defined by the Toaster web interface.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* [http://www.yoctoproject.org/docs/2.0/yocto-project-qs/yocto-project-qs.html#packages Build requirements]&lt;br /&gt;
* Apache webserver&lt;br /&gt;
* mod-wsgi for Apache webserver&lt;br /&gt;
* Mysql database server&lt;br /&gt;
&lt;br /&gt;
Ubuntu 14.04.3:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    $ sudo apt-get install apache2 libapache2-mod-wsgi mysql-server python-virtualenv libmysqlclient-dev python-dev python-mysqldb&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fedora 22/RH:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    $ sudo dnf install httpd mod_wsgi python-virtualenv gcc mysql-devel&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Checkout a copy of Poky into the web server directory. We&#039;re going to be using /var/www/toaster.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  $ mkdir -p /var/www/toaster&lt;br /&gt;
  $ cd /var/www/toaster/&lt;br /&gt;
  $ git clone git://git.yoctoproject.org/poky&lt;br /&gt;
  $ cd poky&lt;br /&gt;
  $ git checkout jethro # change for any release name required&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Initialise a virtualenv and install Toaster dependencies. (Use virtualenv to keep the python packages isolated from your system provided packages - not required but recommended, alternative use your OS&#039;s package manager to install the packages)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   $ cd /var/www/toaster/&lt;br /&gt;
   $ virtualenv venv&lt;br /&gt;
   $ source ./venv/bin/activate&lt;br /&gt;
   $ pip install -r ./poky/bitbake/toaster-requirements.txt&lt;br /&gt;
   $ pip install mysqlclient&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Configure toaster edit /var/www/toaster/poky/bitbake/lib/toaster/toastermain/settings.py&lt;br /&gt;
&lt;br /&gt;
Edit the DATABASE settings:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 DATABASES = {&lt;br /&gt;
     &#039;default&#039;: {&lt;br /&gt;
         &#039;ENGINE&#039;: &#039;django.db.backends.mysql&#039;, &lt;br /&gt;
         &#039;NAME&#039;: &#039;toaster_data&#039;,                     &lt;br /&gt;
         &#039;USER&#039;: &#039;toaster&#039;,&lt;br /&gt;
         &#039;PASSWORD&#039;: &#039;yourpasswordhere&#039;,&lt;br /&gt;
         &#039;HOST&#039;: &#039;localhost&#039;,                 &lt;br /&gt;
         &#039;PORT&#039;: &#039;3306&#039;,                      &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit the [https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/#secret-key SECRET_KEY]:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 SECRET_KEY = &#039;YOUR SECRET RANDOM KEY HERE&#039;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit the STATIC_ROOT:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 STATIC_ROOT = &#039;/var/www/toaster/static_files/&#039;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit BUILD_MODE:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 BUILD_MODE = True&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039;&#039; Now add the database and user to your mysql server that we just defined&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ mysql -u root -p&lt;br /&gt;
 mysql&amp;gt; CREATE DATABASE toaster_data;&lt;br /&gt;
 mysql&amp;gt; CREATE USER &#039;toaster&#039;@&#039;localhost&#039; identified by &#039;yourpasswordhere&#039;;&lt;br /&gt;
 mysql&amp;gt; GRANT all on toaster_data.* to &#039;toaster&#039;@&#039;localhost&#039;;&lt;br /&gt;
 mysql&amp;gt; quit&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
n.b. You may want to decide on fewer [https://dev.mysql.com/doc/refman/5.1/en/grant.html privileges] to the toaster user. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.&#039;&#039;&#039; Get toaster to create the database schema, default data, update the TOASTER_DIR which is the build work dir and collect up the statically served files&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 $ cd  /var/www/toaster/poky/&lt;br /&gt;
 $ ./bitbake/lib/toaster/manage.py migrate&lt;br /&gt;
 $ ./bitbake/lib/toaster/manage.py loadconf ./meta-yocto/conf/toasterconf.json&lt;br /&gt;
 $ TOASTER_DIR=/var/www/toaster/poky/ ./bitbake/lib/toaster/manage.py checksettings&lt;br /&gt;
 $ ./bitbake/lib/toaster/manage.py lsupdates&lt;br /&gt;
 $ ./bitbake/lib/toaster/manage.py collectstatic&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6.&#039;&#039;&#039; Add a config file for Toaster to your Apache web server&#039;s configurations available directory.&lt;br /&gt;
&lt;br /&gt;
Ubuntu/Debian put it here: /etc/apache2/conf-available/toaster.conf&lt;br /&gt;
Fedora/RH usually here: /etc/httpd/conf.d/toaster.conf&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Alias /static /var/www/toaster/static_files&lt;br /&gt;
 &amp;lt;Directory /var/www/toaster/static_files&amp;gt;&lt;br /&gt;
 	Order allow,deny&lt;br /&gt;
 	Allow from all&lt;br /&gt;
 	Require all granted&lt;br /&gt;
 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
 WSGIDaemonProcess toaster_wsgi python-path=/var/www/toaster/poky/bitbake/lib/toaster:/var/www/toaster/venv/lib/python2.7/site-packages&lt;br /&gt;
 WSGIScriptAlias / &amp;quot;/var/www/toaster/poky/bitbake/lib/toaster/toastermain/wsgi.py&amp;quot;&lt;br /&gt;
 &amp;lt;Location /&amp;gt;&lt;br /&gt;
     WSGIProcessGroup toaster_wsgi&lt;br /&gt;
 &amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Ubuntu/Debain you will need to enable the config and module in Apache webserver&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   $ sudo a2enmod wsgi&lt;br /&gt;
   $ sudo a2enconf toaster&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart Apache web server to make sure all new configuration is loaded&lt;br /&gt;
&lt;br /&gt;
Ubuntu/Debian:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   $ sudo service apache2 restart&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fedora/RH:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   $ sudo service httpd restart&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;7.&#039;&#039;&#039; Install the build runner service&lt;br /&gt;
&lt;br /&gt;
This service needs to be running in order to dispatch builds the command that needs to be run is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 /var/www/toaster/poky/bitbake/lib/toaster/manage.py runbuilds&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sample script:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # toaster run builds dispatcher&lt;br /&gt;
 cd /var/www/toaster/&lt;br /&gt;
 source ./venv/bin/activate&lt;br /&gt;
 while true; do ./poky/bitbake/lib/toaster/manage.py runbuilds; sleep 3; done&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
N.b. You may wish to add a service entry to your OS&#039;s init system so that it starts up on start up as well as adding a dedicated user.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now open up a browser and you can start using Toaster!&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Weekly_dd0ba9ea4a11ab15348d4fe3574e4b28784db82f&amp;diff=17117</id>
		<title>Weekly dd0ba9ea4a11ab15348d4fe3574e4b28784db82f</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Weekly_dd0ba9ea4a11ab15348d4fe3574e4b28784db82f&amp;diff=17117"/>
		<updated>2016-01-19T14:56:15Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[https://wiki.yoctoproject.org/wiki/QA_sanity_history &amp;lt; Back]&lt;br /&gt;
&amp;lt;br /&amp;gt;Ran on a genericx86_minnowmax and compared with commit 5e3e2e0cbb0a49986f4653e64c4c8d2b5461645e&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Results&lt;br /&gt;
|- style=&amp;quot;background-color:#F0F8FC; padding:10px;&amp;quot;&lt;br /&gt;
|Package Name ||Tests ran ||Passed ||Failed ||Passrate ||Last Passrate ||Run difference&lt;br /&gt;
        |-&lt;br /&gt;
        |genericx86_minnowmax ||57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |55 ||style=&amp;quot;background-color:#F78D72;&amp;quot; |2 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|96.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|98.0&amp;amp;#37; ||style=&amp;quot;background-color:#F78D72;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;Yes&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;p&amp;gt;Results for genericx86_minnowmax weekly runtime 2016-01-18:&amp;lt;br /&amp;gt;********************************&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now and worked last time:&amp;lt;/b&amp;gt; 1&amp;lt;/p&amp;gt;testcase-215&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that passed now and and failed last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped now and worked last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped last time and worked now:&amp;lt;/b&amp;gt; 1&amp;lt;/p&amp;gt;testcase-215&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now:&amp;lt;/b&amp;gt; 2&amp;lt;/p&amp;gt;testcase-1059&amp;lt;br /&amp;gt;testcase-215&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |qemux86 ||57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |0 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;No&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |genericx86-64_minnowmax ||57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |55 ||style=&amp;quot;background-color:#F78D72;&amp;quot; |2 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|96.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|98.0&amp;amp;#37; ||style=&amp;quot;background-color:#F78D72;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;Yes&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;p&amp;gt;Results for genericx86-64_minnowmax weekly runtime 2016-01-18:&amp;lt;br /&amp;gt;********************************&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now and worked last time:&amp;lt;/b&amp;gt; 1&amp;lt;/p&amp;gt;testcase-215&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that passed now and and failed last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped now and worked last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped last time and worked now:&amp;lt;/b&amp;gt; 1&amp;lt;/p&amp;gt;testcase-215&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now:&amp;lt;/b&amp;gt; 2&amp;lt;/p&amp;gt;testcase-1059&amp;lt;br /&amp;gt;testcase-215&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |genericx86-lsb_minnowmax ||58 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |54 ||style=&amp;quot;background-color:#F78D72;&amp;quot; |3 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|93.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|96.0&amp;amp;#37; ||style=&amp;quot;background-color:#F78D72;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;Yes&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;p&amp;gt;Results for genericx86-lsb_minnowmax weekly runtime 2016-01-18:&amp;lt;br /&amp;gt;********************************&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now and worked last time:&amp;lt;/b&amp;gt; 2&amp;lt;/p&amp;gt;testcase-215&amp;lt;br /&amp;gt;testcase-316&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that passed now and and failed last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped now and worked last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped last time and worked now:&amp;lt;/b&amp;gt; 1&amp;lt;/p&amp;gt;testcase-215&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now:&amp;lt;/b&amp;gt; 3&amp;lt;/p&amp;gt;testcase-1059&amp;lt;br /&amp;gt;testcase-215&amp;lt;br /&amp;gt;testcase-316&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |qemux86_64 ||57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |0 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;No&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |genericx86-64_nuc ||55 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |47 ||style=&amp;quot;background-color:#F78D72;&amp;quot; |8 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|85.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|98.0&amp;amp;#37; ||style=&amp;quot;background-color:#F78D72;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;Yes&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;p&amp;gt;Results for genericx86-64_nuc weekly runtime 2016-01-18:&amp;lt;br /&amp;gt;********************************&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now and worked last time:&amp;lt;/b&amp;gt; 7&amp;lt;/p&amp;gt;testcase-965&amp;lt;br /&amp;gt;testcase-1096&amp;lt;br /&amp;gt;testcase-208&amp;lt;br /&amp;gt;testcase-723&amp;lt;br /&amp;gt;testcase-726&amp;lt;br /&amp;gt;testcase-215&amp;lt;br /&amp;gt;testcase-211&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that passed now and and failed last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped now and worked last time:&amp;lt;/b&amp;gt; 2&amp;lt;/p&amp;gt;testcase-195&amp;lt;br /&amp;gt;testcase-234&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped last time and worked now:&amp;lt;/b&amp;gt; 1&amp;lt;/p&amp;gt;testcase-215&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now:&amp;lt;/b&amp;gt; 8&amp;lt;/p&amp;gt;testcase-965&amp;lt;br /&amp;gt;testcase-1096&amp;lt;br /&amp;gt;testcase-208&amp;lt;br /&amp;gt;testcase-723&amp;lt;br /&amp;gt;testcase-726&amp;lt;br /&amp;gt;testcase-1059&amp;lt;br /&amp;gt;testcase-215&amp;lt;br /&amp;gt;testcase-211&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |genericx86-64-lsb_nuc ||56 ||style=&amp;quot;background-color:#F78D72;&amp;quot; |44 ||style=&amp;quot;background-color:#F78D72;&amp;quot; |10 ||style=&amp;quot;background-color:#F78D72;&amp;quot;|79.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|96.0&amp;amp;#37; ||style=&amp;quot;background-color:#F78D72;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;Yes&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;p&amp;gt;Results for genericx86-64-lsb_nuc weekly runtime 2016-01-18:&amp;lt;br /&amp;gt;********************************&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now and worked last time:&amp;lt;/b&amp;gt; 9&amp;lt;/p&amp;gt;testcase-965&amp;lt;br /&amp;gt;testcase-1096&amp;lt;br /&amp;gt;testcase-208&amp;lt;br /&amp;gt;testcase-723&amp;lt;br /&amp;gt;testcase-726&amp;lt;br /&amp;gt;testcase-test_1_logrotate_setup&amp;lt;br /&amp;gt;testcase-215&amp;lt;br /&amp;gt;testcase-211&amp;lt;br /&amp;gt;testcase-718&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that passed now and and failed last time:&amp;lt;/b&amp;gt; 0&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped now and worked last time:&amp;lt;/b&amp;gt; 2&amp;lt;/p&amp;gt;testcase-195&amp;lt;br /&amp;gt;testcase-234&amp;lt;br /&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that were skipped last time and worked now:&amp;lt;/b&amp;gt; 1&amp;lt;/p&amp;gt;testcase-215&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Tests that failed now:&amp;lt;/b&amp;gt; 10&amp;lt;/p&amp;gt;testcase-965&amp;lt;br /&amp;gt;testcase-1096&amp;lt;br /&amp;gt;testcase-208&amp;lt;br /&amp;gt;testcase-723&amp;lt;br /&amp;gt;testcase-726&amp;lt;br /&amp;gt;testcase-1059&amp;lt;br /&amp;gt;testcase-test_1_logrotate_setup&amp;lt;br /&amp;gt;testcase-215&amp;lt;br /&amp;gt;testcase-211&amp;lt;br /&amp;gt;testcase-718&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |qemuarm ||57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |0 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;No&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |qemumips ||57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |0 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;No&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        |-&lt;br /&gt;
        |qemuppc ||57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |57 ||style=&amp;quot;background-color:#C4FF33;&amp;quot; |0 ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|100.0&amp;amp;#37; ||style=&amp;quot;background-color:#C4FF33;&amp;quot;|&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;overflow: hidden;&amp;quot;&amp;gt;No&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Testing_Toaster&amp;diff=15584</id>
		<title>Testing Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Testing_Toaster&amp;diff=15584"/>
		<updated>2015-08-21T11:57:27Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: /* The oe-selftest toaster tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
&lt;br /&gt;
Toaster has 4 testing suites, targeted at verifying different parts of the system. This document briefly describes each testing suite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Django Unit Tests ==&lt;br /&gt;
&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
&lt;br /&gt;
    ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
== Toaster Test System (TTS) ==&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system. &lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
&lt;br /&gt;
    ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
== The oe-selftest toaster tests ==&lt;br /&gt;
&lt;br /&gt;
These tests are verifying the correctness of the data gathered by the build process - it tests the bitbake/lib/bb/ui/toasterui.py and bitbake/lib/bb/ui/buildinfohelper.py files and the interface to the bitbake server process.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
* Create new project using local poky release&lt;br /&gt;
* Create 1 core-image-minimal image&lt;br /&gt;
* Create 1 core-image-sato image to check building from cache&lt;br /&gt;
* Break a recipe file (by modifying a link, for example)&lt;br /&gt;
* Create a new image using broken recipe to check error detection is working&lt;br /&gt;
&lt;br /&gt;
To run these tests you need to source an environment by issuing:&lt;br /&gt;
&lt;br /&gt;
    source oe-init-build-env&lt;br /&gt;
&lt;br /&gt;
then modify the bblayers.conf file to add the meta-selftest layer, create a symbolic link to the toaster.sqlite file:&lt;br /&gt;
&lt;br /&gt;
    ln -s ../toaster.sqlite toaster.sqlite&lt;br /&gt;
&lt;br /&gt;
and then run the command:&lt;br /&gt;
&lt;br /&gt;
    oe-selftest --run-tests _toaster&lt;br /&gt;
&lt;br /&gt;
== The selenium automated UI tests ==&lt;br /&gt;
&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
To run the selenium tests, please use:&lt;br /&gt;
&lt;br /&gt;
    ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
   ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
    test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Testing_Toaster&amp;diff=15582</id>
		<title>Testing Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Testing_Toaster&amp;diff=15582"/>
		<updated>2015-08-21T09:58:47Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: /* The oe-selftest toaster tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
&lt;br /&gt;
Toaster has 4 testing suites, targeted at verifying different parts of the system. This document briefly describes each testing suite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Django Unit Tests ==&lt;br /&gt;
&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
&lt;br /&gt;
    ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
== Toaster Test System (TTS) ==&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system. &lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
&lt;br /&gt;
    ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
== The oe-selftest toaster tests ==&lt;br /&gt;
&lt;br /&gt;
These tests are verifying the correctness of the data gathered by the build process - it tests the bitbake/lib/bb/ui/toasterui.py and bitbake/lib/bb/ui/buildinfohelper.py files and the interface to the bitbake server process.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
* Create new project using local poky release&lt;br /&gt;
* Create 1 core-image-minimal image&lt;br /&gt;
* Create 1 core-image-sato image to check building from cache&lt;br /&gt;
* Break a recipe file (by modifying a link, for example)&lt;br /&gt;
* Create a new image using broken recipe to check error detection is working&lt;br /&gt;
&lt;br /&gt;
To run these tests you need to source an environment by issuing:&lt;br /&gt;
&lt;br /&gt;
    source oe-init-build-env&lt;br /&gt;
&lt;br /&gt;
then modify the bblayers.conf file to add the meta-selftest layer and then run the command:&lt;br /&gt;
&lt;br /&gt;
    oe-selftest --run-tests _toaster&lt;br /&gt;
&lt;br /&gt;
== The selenium automated UI tests ==&lt;br /&gt;
&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
To run the selenium tests, please use:&lt;br /&gt;
&lt;br /&gt;
    ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
   ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
    test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Testing_Toaster&amp;diff=15575</id>
		<title>Testing Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Testing_Toaster&amp;diff=15575"/>
		<updated>2015-08-20T15:24:20Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: /* The selenium automated UI tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
&lt;br /&gt;
Toaster has 4 testing suites, targeted at verifying different parts of the system. This document briefly describes each testing suite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Django Unit Tests ==&lt;br /&gt;
&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
&lt;br /&gt;
    ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
== Toaster Test System (TTS) ==&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system. &lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
&lt;br /&gt;
    ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
== The oe-selftest toaster tests ==&lt;br /&gt;
&lt;br /&gt;
These tests are verifying the correctness of the data gathered by the build process - it tests the bitbake/lib/bb/ui/toasterui.py and bitbake/lib/bb/ui/buildinfohelper.py files and the interface to the bitbake server process.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
* Create new project using local poky release&lt;br /&gt;
* Create 1 core-image-minimal image&lt;br /&gt;
* Create 1 core-image-sato image to check building from cache&lt;br /&gt;
* Break a recipe file (by modifying a link, for example)&lt;br /&gt;
* Create a new image using broken recipe to check error detection is working&lt;br /&gt;
&lt;br /&gt;
To run these tests you need to source an environment by issuing:&lt;br /&gt;
&lt;br /&gt;
    source oe-init-build-env&lt;br /&gt;
&lt;br /&gt;
and then run the command:&lt;br /&gt;
&lt;br /&gt;
    oe-selftest --run-tests _toaster&lt;br /&gt;
&lt;br /&gt;
== The selenium automated UI tests ==&lt;br /&gt;
&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
To run the selenium tests, please use:&lt;br /&gt;
&lt;br /&gt;
    ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
   ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
*Create new project named &amp;quot;selenium-project&amp;quot; using local poky release&lt;br /&gt;
*Create 1 core-image-minimal image&lt;br /&gt;
*Break a recipe file (by modifying a link, for example)&lt;br /&gt;
*Create a new image using broken recipe to check error detection is working&lt;br /&gt;
*Fix the recipe broken in previous step&lt;br /&gt;
*Create 1 core-image-sato image&lt;br /&gt;
&lt;br /&gt;
In order to run all current tests, you need to modify the configuration file &amp;quot;toaster_test.cfg&amp;quot; with the following line:&lt;br /&gt;
&lt;br /&gt;
    test_cases = [901, 902, 903, 904, 906, 910, 911, 912, 913, 914, 915, 916, 923, 924, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 955, 956]&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Testing_Toaster&amp;diff=15574</id>
		<title>Testing Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Testing_Toaster&amp;diff=15574"/>
		<updated>2015-08-20T15:11:53Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: /* The oe-selftest toaster tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
&lt;br /&gt;
Toaster has 4 testing suites, targeted at verifying different parts of the system. This document briefly describes each testing suite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Django Unit Tests ==&lt;br /&gt;
&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
&lt;br /&gt;
    ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
== Toaster Test System (TTS) ==&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system. &lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
&lt;br /&gt;
    ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
== The oe-selftest toaster tests ==&lt;br /&gt;
&lt;br /&gt;
These tests are verifying the correctness of the data gathered by the build process - it tests the bitbake/lib/bb/ui/toasterui.py and bitbake/lib/bb/ui/buildinfohelper.py files and the interface to the bitbake server process.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
* Create new project using local poky release&lt;br /&gt;
* Create 1 core-image-minimal image&lt;br /&gt;
* Create 1 core-image-sato image to check building from cache&lt;br /&gt;
* Break a recipe file (by modifying a link, for example)&lt;br /&gt;
* Create a new image using broken recipe to check error detection is working&lt;br /&gt;
&lt;br /&gt;
To run these tests you need to source an environment by issuing:&lt;br /&gt;
&lt;br /&gt;
    source oe-init-build-env&lt;br /&gt;
&lt;br /&gt;
and then run the command:&lt;br /&gt;
&lt;br /&gt;
    oe-selftest --run-tests _toaster&lt;br /&gt;
&lt;br /&gt;
== The selenium automated UI tests ==&lt;br /&gt;
&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
To run the selenium tests, please use:&lt;br /&gt;
&lt;br /&gt;
    ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
   ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
	<entry>
		<id>https://wiki.yoctoproject.org/wiki/index.php?title=Testing_Toaster&amp;diff=15573</id>
		<title>Testing Toaster</title>
		<link rel="alternate" type="text/html" href="https://wiki.yoctoproject.org/wiki/index.php?title=Testing_Toaster&amp;diff=15573"/>
		<updated>2015-08-20T15:09:29Z</updated>

		<summary type="html">&lt;p&gt;Mihail Stanciu: /* The oe-selftest toaster tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Toaster]]&lt;br /&gt;
&lt;br /&gt;
Toaster has 4 testing suites, targeted at verifying different parts of the system. This document briefly describes each testing suite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Django Unit Tests ==&lt;br /&gt;
&lt;br /&gt;
Toaster is primarely a Django application. As such, it makes use of the Django test system that runs unit tests on mock data to ensure pieces of functionality work as expected, and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
To run the django unit tests, invoke them as with any Django test suite&lt;br /&gt;
&lt;br /&gt;
    ./bitbake/lib/toaster/manage.py test&lt;br /&gt;
&lt;br /&gt;
To add unit tests, simply add needed tests to the _tests.py_ file in the module you&#039;re editing.&lt;br /&gt;
&lt;br /&gt;
== Toaster Test System (TTS) ==&lt;br /&gt;
&lt;br /&gt;
The TTS is a suite aimed at running integration and acceptance tests. Currently, it verifying the correct syntax and form of the Python code, tries to start Toaster in both modes, and runs HTML5 validation on HTML-returning pages.&lt;br /&gt;
&lt;br /&gt;
The tests are designed to be triggered through a continuous integration system. &lt;br /&gt;
&lt;br /&gt;
To start manually it, run the tts test runner:&lt;br /&gt;
&lt;br /&gt;
    ./bitbake/lib/toaster/contrib/tts/runner.py&lt;br /&gt;
&lt;br /&gt;
== The oe-selftest toaster tests ==&lt;br /&gt;
&lt;br /&gt;
These tests are verifying the correctness of the data gathered by the build process - it tests the bitbake/lib/bb/ui/toasterui.py and bitbake/lib/bb/ui/buildinfohelper.py files and the interface to the bitbake server process.&lt;br /&gt;
&lt;br /&gt;
In order for these tests to run properly, the following steps need to be taken before running, on a clean toaster setup:&lt;br /&gt;
* Create new project using local poky release&lt;br /&gt;
* Create 1 core-image-minimal image&lt;br /&gt;
* Create 1 core-image-sato image to check building from cache&lt;br /&gt;
* Break a recipe file (by modifying a link, for example)&lt;br /&gt;
* Create a new image using broken recipe to check error detection is working&lt;br /&gt;
&lt;br /&gt;
To run these tests you need to source an environment and then run the command &amp;quot;oe-selftest --run-tests _toaster&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== The selenium automated UI tests ==&lt;br /&gt;
&lt;br /&gt;
The automated UI tests are targeted at validating and identifying regressions in the UI pages. These tests are based on the Selenium framework to drive interactions in the interface.&lt;br /&gt;
&lt;br /&gt;
To run the selenium tests, please use:&lt;br /&gt;
&lt;br /&gt;
    ./ bitbake/lib/toaster/contrib/tts/toasteruitest&lt;br /&gt;
&lt;br /&gt;
   ./bitbake/lib/toaster/contrib/tts/toasteruitest/run_toastertests.py&lt;/div&gt;</summary>
		<author><name>Mihail Stanciu</name></author>
	</entry>
</feed>