Yocto 1.8 Overall Test Plan

= Reversion history =
Version	Modifier 	Comments
1.0 	Alexandru Georgescu	first draft
= Introduction =
This article is the overall test plan for version 1.7 of the .
It contains an overview of the testing process, such as testing areas, types, cycles and reports, along with a summary and objective for each of the conducted validation activities.
Further on, sections may be linked to other articles that contain further details or information related to them.
Note that the information provided in this article, or articles linked here, is subject to changes when needed as to reflect the actual activities held for the current version of the .
= Objectives =
The test process is mainly focused to track and review the quality and performance of the , along with its reference system and internal projects.
The plan also includes identifying and tracking areas subject to improvement, regression, validation of enhancements and bugs, development of testing methods with emphasis on automated testing.
Documentation and licensing status is not included in the scope of the testing process, unless otherwise noted e.g. as part of the process of verifying new features.
= Test Areas =
Each internal project, under , is an area subject to a testing process. Areas are grouped by the nature of their functionality, as follows:
* #Build System
* #Target System
* #Developer Tools
* #Distribution Support
== Build System ==
The build engine and the surrounding components, that provide the means to build an image or bake a bit of software. In this area the build-time tests are executed.
=== BitBake ===
Functional testing of BitBake, as a build engine with all its features and components against various configuration and scenarios.
=== HOB ===
Functional and usability testing of HOB as a graphical user interface for BitBake.
=== Toaster ===
Toaster is a Web-based interface to the Bitbake build system and the Poky distribution inside the Yocto Project. This project was formely known as Web Hob / Webhob / webhob, and you may still find references to the old name in the documentation. 
The Toaster testing plan wiki covers all the validation performed agasint Toaster. The test process focuses mostly on validating the data collected from the build process and verifying the correct functionality of the Toaster GUI.
=== Metadata ===
Testing the core metadata of the is mainly covered in the overall testing process, through other #Test Areas like #BitBake and #HOB mentioned above.
=== Build Performance ===
The performance of the build system is tracked, with regards to time spent on passing through a build process, in multiple, commonly used, configurations.
; Tool: http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/scripts/contrib/build-perf-test.sh
; Results page: Performance Test
Additionally, build performance will be tracked with/without security flags enabled. The first step is to have several build combinations of core-image-minimal, core-image-sato and core-image-sato-sdk and see the build time differences between the builds.
=== Distro Testing ===
Distro Testing is intended to catch bugs that are distribution specific using the yocto-autobuilder. The tests are all run on identical hardware and with all OS-es updated. The distributions used will be Fedora, Ubuntu, CentOS, OpenSuse with their latest update. The buildsets that are running on Distro testing are:
* buildtools
* nightly-arm
* nightly-multilib
* nightly-qa-systemd
* nightly-x86
* nightly x86-64
* nightly x86-64-lsb
* nightly-world
== Target System ==
Area focused on a target operating system or an application that comes with it, as the output of a build process. In this area the run-time tests are executed.
Machine type 	Target machine		System Testing	#Compliance Testing	#Stress Testing	#System Performance	#Application Development Toolkit
#QEMU Machine	 		 	 	 	 	
#QEMU Machine	qemuarm 		yes 	 	 	 	yes
#QEMU Machine	qemumips 		yes 	 	 	 	yes
#QEMU Machine	qemuppc 		yes 	 	 	 	yes
#QEMU Machine	qemux86 		yes 	 	 	 	yes
#QEMU Machine	qemux86-64 		yes 	 	 	yes 	yes
#BSP Machine 	 		 	 	 	 	
#BSP Machine 	genericx86 		yes 	 	 	 	
#BSP Machine 	genericx86-64 		yes 	 	 	 	
#BSP Machine 	beaglebone 		yes 	yes 	yes 	 	
#BSP Machine 	mpc8315e-rdb 		yes 	yes 	 	 	
#BSP Machine 	edgerouter 		yes 	yes 	 	 	
=== QEMU Machine ===
Covering all core, QEMU, machine definitions:
* qemuarm
* qemumips
* qemuppc
* qemux86
* qemux86-64
=== BSP Machine ===
Covering BSPs included in the :
* genericx86
* genericx86-64
* beaglebone
* mpc8315e-rdb
* edgerouter
=== Compliance Testing ===
Compliance test suites / frameworks used on genericx86-64:
* LSB tests
* POSIX tests
* LTP tests
=== Stress Testing ===
Stress tests are run on Beagleboard and genericx86-64 BSPs. Details as follow:
* Beaglebone core-image-sato-sdk image is tested using LTP and Crashme stress tests
* genericx86-64 core-image-lsb-sdk image is tested using Helltest and Crashme stress tests
=== System Performance ===
*; Objective:
**Track the run-time performance of targeted systems;
**Track the run-time performance of targeted systems with gcc security flags;
*; Indicators:
** Boot time for systemd and sysvinit;
** Image size from Buildhistory to track regression;
** Piglit test suite results;
** Other benchmarks that can be integrated, such as the ones listed in the openbenchmarking site.
== Developer Tools ==
=== Application Development Toolkit ===
ADT testing includes tests for ADT-installer, meta-toolchain-sdk and user build sdk. It will be covered in Weekly and Fullpass testing.
*Cross-toolchain install&compiling Test
*relocatable SDK
*ADT installer
*toolchain tarballs
*yocto build tree
=== Eclipse IDE Plugin ===
Eclipse plugin tests will cover the basic functionalities. This includes installation, configuring Yocto Project ADT settings, Yocto BSP, Bitbake project and project compiling and deployment to the target. Based on the features that will be implemented, new test cases will be added, to support Windows and Mac support. This will be more detailed in the Features section.
*headless build
*C/C++ project creation
*debug/deploy
*user space tools
*Bitbake project
Depending on the new SDK features (e.g. MacOS and Windows support), additional tests will be run in order to validate the new features.
=== Build Appliance ===
The basic functionality of the Build appliance will be tested. The tests consists on building successfully a build-appliance-image, launch HOB.
== Distribution Support ==
; Criteria: The OS distribution version is still maintained at the time of the release (1.7 release date is: OCT, 2014)
; Coverage: Following a table with targeted distribution and versions:
Distro 	Version 	Release 	EOL
Ubuntu 	 	 	
Ubuntu 	14.04 LTS	April 17, 2014 	April 2019
Ubuntu 	14.10 	October, 2014 	
Fedora 	 	 	
Fedora 	20 	December 17, 2013	
Fedora 	21 	December 14, 2014	
CentOS 	 	 	
CentOS 	5 	~ 	March 31, 2017
CentOS 	6 	~ 	November 30, 2020
Debian 	 	 	
Debian 	6 	February 6th, 2011	
Debian 	7 	May 4th, 2013 	current
openSUSE	 	 	
openSUSE	12.3 	May 28, 2013 	~
openSUSE	13.1 	Nov 16, 2013 	~
= Test Cycle =
* Execution according to Yocto 1.7 Schedule. The first section of the table, "Build Type", details what type of tests are performed on Weekly, Release Candidate or Release test.
* List of all Test Cases, included in a cycle or not.
 	 	Test execution cycle	Test execution cycle	Test execution cycle	Test execution cycle
 	 	#Sanity Test 	#Weekly Test 	#Full Pass Test 	#Release Test
Build type 	 	 	 	 	
Build type 	Daily (M.U.T.) 	yes 	 	 	
Build type 	Weekly 	yes 	yes 	 	
Build type 	Release Candidate 	yes 	yes 	yes 	
Build type 	Release 	yes 	yes 	yes 	yes
#Test Areas 	#BitBake 	yes 	yes 	yes 	
#Test Areas 	#HOB 	 	yes 	yes 	
#Test Areas 	#Toaster 	 	 	 	yes
#Test Areas 	#Build Performance 	 	yes 	 	
#Test Areas 	#QEMU Image 	yes 	yes 	yes 	
#Test Areas 	#BSP Image 	 	yes 	yes 	
#Test Areas 	#Compliance Testing 	 	 	 	yes
#Test Areas 	#Stress Testing 	 	 	 	yes
#Test Areas 	#System Performance 	 	 	 	yes
#Test Areas 	#Application Development Toolkit	 	yes 	yes 	
#Test Areas 	#Eclipse IDE Plugin 	 	yes 	yes 	yes
#Test Areas 	#Build Appliance 	 	 	yes 	
#Test Areas 	Distro Testing 	 	 	yes 	
Target machine	 	 	 	 	
Target machine	qemuarm 	yes 	yes 	yes 	
Target machine	qemumips 	yes 	yes 	yes 	
Target machine	qemuppc 	yes 	yes 	yes 	
Target machine	qemux86 	yes 	yes 	yes 	
Target machine	qemux86-64 	yes 	yes 	yes 	
Target machine	genericx86-64 	 	yes 	yes 	
Target machine	genericx86-64 	 	yes 	yes 	
Target machine	beaglebone black 	 	yes 	yes 	yes
Target machine	mpc8315e-rdb 	 	yes 	yes 	
Target machine	edgerouter 	 	yes 	yes 	yes
Target image 	 	 	 	 	
Target image 	core-image-sato 	yes 	 	 	
Target image 	core-image-sato-dev 	yes 	 	 	
Target image 	core-image-sato-sdk 	yes 	yes 	yes 	yes
Target image 	core-image-minimal 	yes 	 	 	
Target image 	core-image-minimal-dev 	yes 	 	 	
== Sanity Test ==
Brief and quick automated tests, with execution time of maximum 10 minutes.
*; Scope:
** Each build process triggered on the AutoBuilder.
*; Objective:
** Build finished with no errors;
** Check basic QEMU image functionality, e.g. boot, network, package manager, etc.;
** Establish if testing cycle can continue, depending on the build type.
** The tests run on AB are the Image tests. Their configurations are stored in the AB config files "yocto-autobuilder/buildset-config" depending on the target image types.
== Weekly Test ==
*; Scope:
** Images built weekly and released through the distribution team.
** Passed #Sanity Test
*; Objective:
** Functionality test on most areas with minimum sets of tests;
** Regression test with high probability to find bugs.
== Full Pass Test ==
*; Scope:
** Images built as candidates for milestone or final release;
** Passed #Weekly Test
*; Objective:
** Ensure functionality of all components.
== Release Test ==
*; Scope:
** Release candidates that pass #Full pass test
*; Objective:
** All scheduled features are covered, or rescheduled;
** All relevant bugs are fixed and verified.
*; Coverage:
** Stress test on RC
** Compliance test on RC
** Distribution test on RC
= Test Automation =
*; Objectives:
** Reduce effort with manual testing, by automating current tests;
** Improve run-time testing.
** Improve build-time testing.
*; Tools:
** #Distro Testing
** AutoBuilder
** On AutoBuilder the Image tests are run.
** Oe-selftest can be used. Currently oe-selftest is run on public AutoBuilder as well.
** HW automation 1596
= Validation =
*; Objective:
** Verify the correct functionality of new changes introduced in version 1.7 of the .
*; Entry criteria:
** The change is tracked by filling in the "QA Owner" field for the Medium+/High enhancements
** The change is prioritized in Bugzilla
** Bugzilla entry has a target milestone within version 1.7
** The change is documented or pointed out when no documentation is necessary (the doc flag is set accordingly)
** Bug status is set to RESOLVED.
*; Exit criteria:
** The change is well documented for writing test case, where applicable
** Planned test case has passed
** Bug status is set to VERIFIED
*; References:
** Yocto 1.7 Features
** 1.7 qa owned bugs - this wiki was created for QA to track easily resolved bugs and features
** Yocto Project v1.7 Status
== New features validation and QA integration ==
*; Objective:
** QA will follow the #Validation process on verifying the new Yocto 1.7 Features and integrating them in the testing process.
*; Some of the areas that need to be tested:
** uClibc integration
** performance using gcc security flags
** Shuku proposal
= Test Report =
*; Objectives:
** Show a live 1.7 QA Status of the active test runs, on the latest build;
** Send out an report email to the mailing list at the end of a test cycle;
** Archive reports at 1.6 qa run history;
** Use QA Status TEMPLATE for reporting;
** Use Testopia as a tool for reporting;