Yocto 1.5 Overall Test Plan: Difference between revisions

From Yocto Project
Jump to navigationJump to search
 
(22 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= Reversion history =
= Reversion history =
{|class="wikitable"
{|class="wikitable"
| Version || Modifier || Comments
! Version || Modifier || Comments
|-
|-
| 1.0 || Alexandru Georgescu || Initial Version  
| 1.0 || Alexandru Georgescu || Initial Version  
|-
| 2.0 || Mihai Lindner || RFC Version
|}
|}


Line 10: Line 12:
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.
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.
Further on, sections may be linked to other articles that contain further details or information related to them.
As a note, the information provided in this article, or one that's linked here, is subject to changes at any time, as to reflect the actual activities held for the current version of the project.
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 {{ns:4}}.


= Objectives =
= Objectives =
Line 18: Line 20:


= Test Areas =
= Test Areas =
Each internal project, under the {{ns:4}}, represents an area subject to testing process. Areas are grouped by the nature of their functionality, as follows:
Each internal project, under {{ns:4}}, is an area subject to a testing process. Areas are grouped by the nature of their functionality, as follows:


== Build System ==
== Build System ==
Including 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.
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 ===
=== BitBake ===
Line 30: Line 32:


=== Metadata ===
=== Metadata ===
Testing the core metadata of the {{ns:4}} is mainly covered in the overall testing process, of other [[#Test Area]]s like [[#BitBake]] and [[#HOB]] mentioned above.
Testing the core metadata of the {{ns:4}} is mainly covered in the overall testing process, through other [[#Test Areas]] like [[#BitBake]] and [[#HOB]] mentioned above.


=== Build Performance ===
=== Build Performance ===
Line 40: Line 42:
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.
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.


=== QEMU Image ===
{|class="wikitable" style="text-align: center;"
| Machine type
!Target machine
|
! System Testing || [[#Compliance Testing]] || [[#Stress Testing]] || [[#System Performance]] || [[#Application Development Toolkit]]
|-
| rowspan="6" | [[#QEMU Machine]]
|-
! qemuarm
| || yes || || || || yes
|-
! qemumips
| || yes || || || || yes
|-
! qemuppc
| || yes || || || || yes
|-
! qemux86
| || yes || || || || yes
|-
! qemux86-64
| || yes || || || yes || yes
|-
| rowspan="5" | [[#BSP Machine]]
|-
! atom-pc
| || yes || || || ||
|-
! beagleboard
| || yes || yes || yes || ||
|-
! mpc8315e-rdb
| || yes || yes || || ||
|-
! routerstationpro
| || yes || yes || || ||
|}
 
 
=== QEMU Machine ===
Covering all core, QEMU, machine definitions:
Covering all core, QEMU, machine definitions:
* qemuarm
* qemuarm
Line 48: Line 89:
* qemux86-64
* qemux86-64


=== BSP Image ===
=== BSP Machine ===
Covering BSPs included in the {{ns:4}}:
Covering BSPs included in the {{ns:4}}:
* atom-pc
* atom-pc
Line 68: Line 109:


=== System Performance ===
=== System Performance ===
*; Objective:
**Track the run-time performance of targeted systems;


The run-time performance metrics will be measured using the following methods:
*; Indicators:
 
** Boot time for <tt>systemd</tt> and <tt>sysvinit</tt>;
* measure boot time for SystemD and SysVinit features
** Image size from [[Buildhistory]] to track regression;
* record image size from buildhistory to track regression
** Piglit test suite results;
* use Phoronix Test Suite tests to benchmark Yocto images
* run Piglit test suite


== Developer Tools ==
== Developer Tools ==
Line 99: Line 140:


== Distribution Support ==
== Distribution Support ==
The most recent previous version of one of the 4 supported distributions '''Ubuntu''', '''Fedora''', '''CentOS''', '''OpenSUSE''', and the latest beta version of those are the target for these tests.
; Criteria: The OS distribution version is still maintained at the time of the {{ns:4}} release (1.5 release date is: Oct. 18, 2013)
Basic functionalities of ADT, toolchaion, HOB2 and Core Build System ar testested on these targets.
; Coverage: Following a table with targeted distribution and versions:
 
{| class="wikitable"
The following coverage matrix will reprezent the supported distributions:
! Distro !! Version !! Release !! EOL
 
|-
{| class="wikitable" style=" color: green;"
| rowspan="4" | Ubuntu
|-
| 12.04.2 LTS || February 14, 2013 || April 2017
|-
| 12.10 || October 18, 2012 || April 2014
|-
| 13.04 || April 25, 2013 || January 2014
|-
| rowspan="4" | Fedora
|-
| 17 || May 29, 2012 || ~August 02, 2013
|-
| 18 || January 15, 2013 || ~December 12, 2013
|-
| 19 || July 2013 || ~
|-
| rowspan="3" | CentOS
|-
| 5 || ~ || March 31, 2017
|-
| 6 || ~ || November 30, 2020
|-
| rowspan="3" | Debian
|-
| 6 || February 6th, 2011 || obsolete
|-
|-
! Distribution
| 7 || May 4th, 2013 || current
! colspan="2" | '''Ubuntu'''
! colspan="2" | '''Fedora'''
! colspan="2" | '''CentOS'''
! colspan="2" | '''OpenSUSE'''
|-
|-
| '''Version''' || 13.04 || 13.10 || 18 || 19 || 6.3 || 6.4 || 12.3 || 13.1
| rowspan="3" | openSUSE
|-
|-
| '''RC Supported''' || Yes || || Yes || || Yes || || Yes ||
| 12.2 || October 22, 2012 || ~
|-
|-
| '''1.5 Supported''' || Yes || Yes || Yes || Yes || Yes || Yes || Yes || Yes
| 12.3 || May 28, 2013 || ~
|}
|}


Line 123: Line 184:
* List of all [[Test Cases]], included in a cycle or not.
* List of all [[Test Cases]], included in a cycle or not.


{|class="wikitable"
{|class="wikitable" style="text-align: center;"
| ||
| ||
!colspan="4"|Test execution cycle
!colspan="4"|Test execution cycle
Line 130: Line 191:
! [[#Sanity Test]] || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]
! [[#Sanity Test]] || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]
|-
|-
! rowspan="4" |Build type  
! rowspan="5" |Build type  
|-
! Daily (M.U.T.)
! Daily (M.U.T.)
| yes || || ||
| yes || || ||
|-
|-
! Weekly build
! Weekly
| yes || yes || ||
| yes || yes || ||
|-
|-
! RC build
! Release Candidate
| yes || yes || yes ||
| yes || yes || yes ||
|-
|-
! Release
! Release
| yes || yes || yes || yes
| yes || yes || yes || yes
|}
{| class="wikitable"
|-
|-
!colspan="4"|Test Areas
! rowspan="11" | [[#Test Areas]]
! [[#BitBake]]
| yes || yes || yes ||
|-
! [[#HOB]]
| || yes || yes ||
|-
! [[#Build Performance]]
| || yes || ||
|-
! [[#QEMU Image]]
| yes || yes || yes ||
|-
! [[#BSP Image]]
| || yes || yes ||
|-
! [[#Compliance Testing]]
| || || || yes
|-
! [[#Stress Testing]]
| || || || yes
|-
! [[#System Performance]]
| || || || yes
|-
! [[#Application Development Toolkit]]
| || yes || yes ||
|-
! [[#Eclipse IDE Plugin]]
| || yes || yes || yes
|-
|-
|
! [[#Build Appliance]]
|'''Components'''
| || || yes ||
|'''Weekly'''
|'''Full Pass'''
|-
|-
!rowspan="4"|Build System
! rowspan="10" | Target machine
!Bitbake !! Yes* !! Yes
|-
|-
!Build performance !! Yes* !! Yes
! qemuarm
| yes || yes || yes ||
|-
|-
!Metadata !! Yes* !! Yes
! qemumips
| yes || yes || yes ||
|-
|-
!Distribution  !! Yes* !! Yes
! qemuppc
| yes || yes || yes ||
|-
|-
!rowspan="6"|Target
! qemux86
!Build Appliance !!  !! Yes
| yes || yes || yes ||
|-
|-
!QEMU images !! Yes* !! Yes
! qemux86-64
| yes || yes || yes ||
|-
|-
!BSP images  !! Yes* !! Yes
! atom-pc
| || yes || yes ||
|-
|-
!Stress !! Yes* !! Yes
! beagleboard
| || yes || yes || yes
|-
|-
!Target performance  !! Yes* !! Yes
! mpc8315e-rdb
| || yes || yes ||
|-
|-
!Compliance !!  !! Yes
! routerstationpro
| || yes || yes || yes
|-
|-
!rowspan="6"|Tools
! rowspan="6" | Target image
!Eclipse !! Yes* !! Yes
|-
|-
!ADT !! Yes* !! Yes
! core-image-sato
| yes || || ||
|-
|-
!Autobuilder !! Yes* !! Yes
! core-image-sato-dev
|}
| yes || || ||
 
 
 
Note:
* On weekly test, the basic BSP will be covered: Atom-PC, Beagleboard, Routerstationpro, MPC8315e-rdb, P1022ds-rdb, and all the QEMU images (arm, x86, x86_64, ppc, mips)
* as mentioned in the Weekly test section, the weekly tests will cover the basic functionalities of the component.
* Compliance Test on Beagleboard and routerstation will only cover LTP and POSIX Test, since LSB test suite does not support ARM and MIPS.
* Jasperforest is selected for stress test, because it is powerful with 12 CPUs and 2GB memory. Moreover, it is a server, which needs more stress tests.
 
The following matrix represents Full pass and Weekly coverage of BSP testing.
 
{| class="wikitable" style=" color: green;"
|-
|-
! Test levels !!  Atom-PC !!  NUC !! Emenlow !! Sugarbay !! Jasperforest !! Crownbay !! FRI2 !! Beagleboard !! RouterstationPro !! MPC8315e-rdb !! P1022ds-rdb
! core-image-sato-sdk
| yes || yes || yes || yes
|-
|-
! Weekly !! Yes !!  !!  !!  !!  !!  !!  !! Yes !! Yes !! Yes !! Yes
! core-image-minimal
| yes || || ||
|-
|-
! Full Pass !! Yes !! Yes !! Yes !! Yes !! Yes !! Yes !! Yes !! Yes !! Yes !! Yes !! Yes
! core-image-minimal-dev
| yes || || ||
|}
|}


== Sanity Test ==
== Sanity Test ==
Line 212: Line 294:


*; Objective:
*; Objective:
** Ensure the build output is sane / as expected;
** Build finished with no errors;
** Check basic QEMU image functionality, e.g. boot, network, package manager, etc.;
** Check basic QEMU image functionality, e.g. boot, network, package manager, etc.;
** Establish if testing cycle can continue, depending on the build type.
** Establish if testing cycle can continue, depending on the build type.
Line 228: Line 310:
*; Scope:
*; Scope:
** Images built as candidates for milestone or final release;
** Images built as candidates for milestone or final release;
** Passed [[#Sanity Test]]
** Passed [[#Weekly Test]]
** Passed [[#Weekly Test]]


Line 250: Line 331:
*; Objectives:
*; Objectives:
** Reduce effort with manual testing, by automating current tests;
** Reduce effort with manual testing, by automating current tests;
** Improve build-time and run-time testing.
** Improve run-time testing.


*; Tools:
*; Tools:
Line 274: Line 355:
** [[Yocto Project v1.5 Status#Feature/Task Board]]
** [[Yocto Project v1.5 Status#Feature/Task Board]]


= Test report =
= Test Report =
* [[1.5 QA Status]] will show a live status of currently active test runs;
*; Objectives:
* When a test cycle is complete, an email containing the test report is sent to the {{ns:4}} [https://lists.yoctoproject.org/listinfo/yocto mailing list];
** Show a live [[1.5 QA Status]] of the active test runs, on the latest build;
* [[1.5 qa run history]] contains previous test reports;
** Send out an report email to the {{ns:4}} [https://lists.yoctoproject.org/listinfo/yocto mailing list] at the end of a test cycle;
* [[QA Status TEMPLATE]] is used for reports;
** Archive reports at [[1.5 qa run history]];
* [[Testopia]] is used for test case management and reporting.
** Use [[QA Status TEMPLATE]] for reporting;
** Use [[Testopia]] as a tool for reporting;

Latest revision as of 13:03, 2 July 2013

Reversion history

Version Modifier Comments
1.0 Alexandru Georgescu Initial Version
2.0 Mihai Lindner RFC Version

Introduction

This article is the overall test plan for version 1.5 of the Yocto Project. 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 Yocto Project.

Objectives

The test process is mainly focused to track and review the quality and performance of the Yocto Project, 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 Yocto Project, is an area subject to a testing process. Areas are grouped by the nature of their functionality, as follows:

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.

Metadata

Testing the core metadata of the Yocto Project 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

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
qemuarm yes yes
qemumips yes yes
qemuppc yes yes
qemux86 yes yes
qemux86-64 yes yes yes
#BSP Machine
atom-pc yes
beagleboard yes yes yes
mpc8315e-rdb yes yes
routerstationpro yes yes


QEMU Machine

Covering all core, QEMU, machine definitions:

  • qemuarm
  • qemumips
  • qemuppc
  • qemux86
  • qemux86-64

BSP Machine

Covering BSPs included in the Yocto Project:

  • atom-pc
  • beagleboard
  • mpc8315e-rdb
  • routerstationpro

Compliance Testing

Compliance test suites / frameworks used:

  • LSB tests
  • POSIX tests
  • LTP tests

Stress Testing

Stress tests are run on Beagleboard and Jasperforest BSPs. Details as follow:

  • Beagleboard core-image-sato-sdk image is tested using LTP and Crashme stress tests
  • Jasperforest core-image-lsb-sdk image is tested using Helltest and Crashme stress tests

System Performance

  • Objective
    • Track the run-time performance of targeted systems;
  • Indicators
    • Boot time for systemd and sysvinit;
    • Image size from Buildhistory to track regression;
    • Piglit test suite results;

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

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 Yocto Project release (1.5 release date is: Oct. 18, 2013)
Coverage
Following a table with targeted distribution and versions:
Distro Version Release EOL
Ubuntu
12.04.2 LTS February 14, 2013 April 2017
12.10 October 18, 2012 April 2014
13.04 April 25, 2013 January 2014
Fedora
17 May 29, 2012 ~August 02, 2013
18 January 15, 2013 ~December 12, 2013
19 July 2013 ~
CentOS
5 ~ March 31, 2017
6 ~ November 30, 2020
Debian
6 February 6th, 2011 obsolete
7 May 4th, 2013 current
openSUSE
12.2 October 22, 2012 ~
12.3 May 28, 2013 ~

Test Cycle

Test execution cycle
#Sanity Test #Weekly Test #Full Pass Test #Release Test
Build type
Daily (M.U.T.) yes
Weekly yes yes
Release Candidate yes yes yes
Release yes yes yes yes
#Test Areas #BitBake yes yes yes
#HOB yes yes
#Build Performance yes
#QEMU Image yes yes yes
#BSP Image yes yes
#Compliance Testing yes
#Stress Testing yes
#System Performance yes
#Application Development Toolkit yes yes
#Eclipse IDE Plugin yes yes yes
#Build Appliance yes
Target machine
qemuarm yes yes yes
qemumips yes yes yes
qemuppc yes yes yes
qemux86 yes yes yes
qemux86-64 yes yes yes
atom-pc yes yes
beagleboard yes yes yes
mpc8315e-rdb yes yes
routerstationpro yes yes yes
Target image
core-image-sato yes
core-image-sato-dev yes
core-image-sato-sdk yes yes yes yes
core-image-minimal yes
core-image-minimal-dev yes


Sanity Test

Brief and quick automated tests, with execution time of maximum 10 minutes.

  • 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.

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 Yocto Project components.

Release 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.

Validation

  • Objective
    • Verify the correct functionality of new changes introduced in version 1.5 of the Yocto Project.
  • Entry criteria
    • The change is tracked and prioritized in Bugzilla;
    • Bugzilla entry has a target milestone within version 1.5;
    • The change is documented or pointed out when no documentation is necessary;
    • 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.

Test Report