Yocto 2.1 Overall Test Plan: Difference between revisions

From Yocto Project
Jump to navigationJump to search
 
(58 intermediate revisions by 2 users not shown)
Line 3: Line 3:
! Version || Modifier || Comments
! Version || Modifier || Comments
|-
|-
| 1.0 || Alexandru Georgescu ||  first draft
| 2.1_M2 || Alexandru Georgescu ||  first draft
|-
| 2.1_M3.rc2 || Alexandru Georgescu/ Jose Perez Carranza  ||  Test Plan review 3/29/2016
|}
|}


<!-- Editing tools below -->
<!-- Editing tools below -->
<!-- The table can be edited with this tool : http://www.tablesgenerator.com/mediawiki_tables -->
<!-- The table can be edited with this tool : http://www.tablesgenerator.com/mediawiki_tables -->


= Introduction =
= Introduction =
Line 28: Line 29:
* Running regression tests
* Running regression tests
* Perform exploratory testing on required areas (e.g. Toaster)
* Perform exploratory testing on required areas (e.g. Toaster)
 
* Improve and extend overall automation
[TBD]
 


== Tasks ==
== Tasks ==
Here is a list with all tasks identified by this testing plan.
Here is a list with all tasks identified by this testing plan.


* Testing
* General component testing
* Bug and Feature reporting
* Bug and Feature reporting
* Bug and Feature verification
* Bug and Feature verification
* Test automation
* Test automation
* Exploratory testing
* Exploratory testing
* Creating testing plans for specific areas
* Creating testing plans for required areas
* Review testing approaches with development peers
* Review testing approaches with development peers
* Assign owners on major features
* Assign QA owners on major features


= Testing Strategy =
= Testing Strategy =
Line 57: Line 56:
=== Build System ===
=== 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.
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.
Currently, [[oe-selftest]] covers all [[#Bitbake]], oe-core and [[#Metadata]] autoamted tests.
The Testopia template for oe-selftest is found in oe-core Bugzilla product:
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=5017 oe-core/oe-selftest Weekly Template]


==== BitBake ====
==== BitBake ====
Functional testing of BitBake, as a build engine with all its features and components against various configuration and scenarios.
Functional testing of BitBake, as a build engine with all its features and components against various configuration and scenarios.
The Testopia template for BitBake component is:
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4915 Bitbake Full Pass Template]


==== Toaster ====
==== Toaster ====
Line 70: Line 75:
*The testing objective involves only positive testing for existing features on Toaster.
*The testing objective involves only positive testing for existing features on Toaster.
*Perform exploratory testing focusing on newer features; this can sometimes generate new test cases.
*Perform exploratory testing focusing on newer features; this can sometimes generate new test cases.
Here are the test run templates for Toaster:
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=5175  Backend Managed mode - Full Pass TEMPLATE]
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=5174  UI Managed Mode - Full Pass TEMPLATE]
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=5173  Backend - Weekly TEMPLATE]
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=5172  UI - Full Pass TEMPLATE]
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4073  Exploratory TEMPLATE]


==== Metadata ====
==== Metadata ====
Testing the core metadata of the {{ns:4}} is mainly covered in the overall testing process, through other [[#Test Areas]] like [[#BitBake]] and [[#Toaster]] 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 [[#Toaster]] mentioned above. We also have specific tests covering meta-yocto in the meta-yocto test run template, which we are running regularly at Full Pass:
 
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4855 Meta-yocto - Full Pass Template]


==== Distro Testing ====
==== Distro Testing ====
Line 79: Line 93:


[TBD] - distribution support wiki needs to be updated
[TBD] - distribution support wiki needs to be updated
The test run template for Distro testing, can be found in the [https://bugzilla.yoctoproject.org/tr_show_plan.cgi?plan_id=147 Automated Build testing Bugzilla product] in the master branch.
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4083 Distro Template]
Our Distro config can be found here on contrib: http://git.yoctoproject.org/cgit/cgit.cgi/yocto-autobuilder/log/?h=contrib/QAsetup/ABubuntu


=== Runtime testing ===
=== Runtime testing ===
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.  
 
For test coverage, we are running the automated tests using [[Image tests]].
 
  <!-- The table can be edited with this tool : http://www.tablesgenerator.com/mediawiki_tables -->
  <!-- The table can be edited with this tool : http://www.tablesgenerator.com/mediawiki_tables -->
{| class="wikitable"
{| class="wikitable"
! Release
! CPU Class
! CPU Class
! HW Platform
! HW Platform
Line 90: Line 112:
! linux-yocto
! linux-yocto
! Image-type
! Image-type
! Sanity Testing
! WR
! Weekly Testing
! FP
! Full pass
! Compliance
! Compliance
! pTest
! pTest
|-
|-
| '''generic BSPs (x86)'''
| Big Core
| Big Core
| MinnowMax 32bit
| MinwMax 32bit
| genericx86
| genericx86
| 4.x
| 4.x
| core-image-sato-sdk
| core-image-sato-sdk
| Y
| <span style="background:#00ff00"> Y </span>
| Y
| <span style="background:#00ff00"> Y </span>
| Y
|  
| NO
|  
| Y
|-
|-
|
|
|
|  
|
|  
| 4.x-ltsi
|  
| 4,x-ltsi
| core-image-lsb-sdk
| core-image-lsb-sdk
| NO
| <span style="background:#00ff00"> Y </span>
| Y
|  
| NO
|  
| NO
|  
| NO
|-
|-
|
|  
| MinnowMax 64bit
|  
|
| genericx86-wic
| 4.x
| core-image-sato
| <span style="background:#00ff00"> Y </span>
|
|
|
|-
|
|
|
|
| 4,x-ltsi
| core-image-lsb-sdk
|
|
|
|
|-
|
|
| MinwMax 64bit
| genericx86-64
| genericx86-64
| 4.x
| 4.x
| core-image-sato-sdk
| core-image-sato-sdk
| Y
| <span style="background:#00ff00"> Y </span>
| Y
|  
| NO
|
| NO
|
| NO
|-
|
|
|
|
| 4,x-ltsi
| core-image-lsb-sdk
|
|
|
|
|-
|
|
|
| genericx86-64-wic
| 4.x
| core-image-sato
| <span style="background:#00ff00"> Y </span>
|  
|  
|  
|-
|-
|
|
|
|  
|
|  
| 4.x-ltsi
|  
| 4,x-ltsi
| core-image-lsb-sdk
| core-image-lsb-sdk
| NO
|  
| NO
|  
| NO
|  
| NO
|  
| NO
|-
|-
|
|
|  
| NUC
| NUC
| genericx86-64
| genericx86-64
| 4.x
| 4.x
| core-image-sato-sdk
| core-image-sato-sdk
| Y
| <span style="background:#00ff00"> Y </span>
| Y
| <span style="background:#00ff00"> Y </span>
| Y
|  
| NO
| <span style="background:#00ff00"> Y </span>
| Y
|-
|-
|
|
|
|  
|
|  
| 4.x-ltsi
|  
| 4,x-ltsi
| core-image-lsb-sdk
| core-image-lsb-sdk
| NO
| <span style="background:#00ff00"> Y </span>
| Y
|  
| NO
| <span style="background:#00ff00"> Y </span>
| Y
|  
| NO
|-
|-
|
|
|
|  
|  
| genericx86-64-wic
| genericx86-64-wic
| 4.x
| 4.x
| core-image-sato
| core-image-sato
| Y
| <span style="background:#00ff00"> Y </span>
| Y
|  
| NO
|  
| NO
|  
| NO
|-
|-
|
|
|
|  
|
|  
| 4.x-ltsi
|  
| 4,x-ltsi
| core-image-lsb-sdk
| core-image-lsb-sdk
| NO
|  
| NO
|  
| NO
|  
| NO
|  
| NO
|-
|-
| arm
|  
| Beaglebone Black
| VM
| beaglebone
| QEMU
| qemux86
| 4.x
| 4.x
| core-image-sato
| core-image-sato-sdk
| Y
| <span style="background:#00ff00"> Y </span>
| Y
| <span style="background:#00ff00"> Y </span>
| Y
|  
| NO
|  
| NO
|-
|-
|
|
|
|  
|
|  
| 4.x-ltsi
|  
| 4,x-ltsi
| core-image-lsb-sdk
| core-image-lsb-sdk
| NO
|  
| NO
|  
| No
|  
| Y
|  
| NO
|-
|-
| ppc
|  
| MPC8315e-rdb
|  
| mpc8315e-rdb
|  
| qemux86-64
| 4.x
| 4.x
| core-image-sato
| core-image-sato-sdk
| Y
| <span style="background:#00ff00"> Y </span>
| Y
| <span style="background:#00ff00"> Y </span>
| Y
|  
| NO
|  
| NO
|-
|-
|
|
|
|  
|
|  
| 4.x-ltsi
|  
| 4,x-ltsi
| core-image-lsb-sdk
| core-image-lsb-sdk
| NO
|  
| NO
|  
| No
|  
| Y
|  
| NO
|-
|-
| ppc
| '''generic BSPs (n-x86)'''
| P1022ds
| MIPS
| p1022ds
| EdgeRouter
| EdgeRouter
| 4.x
| 4.x
| core-image-sato
| core-image-sato-sdk
| Y
| <span style="background:#00ff00"> Y </span>
| Y
| <span style="background:#00ff00"> Y </span>
| Y
|  
| NO
|  
| NO
|-
|-
|
|
|
|  
|
|  
| 4.x-ltsi
|  
| 4,x-ltsi
| core-image-lsb-sdk
| core-image-lsb-sdk
| NO
|  
| NO
|  
| No
|  
| NO
|  
| NO
|-
|-
| mips64
|  
| Edgerouter
| PPC
| edgerouter
| MPC8315e-rdb
| MPC8315e-rdb
| 4.x
| 4.x
| core-image-sato
| core-image-sato-sdk
| Y
| <span style="background:#00ff00"> Y </span>
| Y
| <span style="background:#00ff00"> Y </span>
| Y
|  
| NO
|  
| NO
|-
|-
|
|
|
|  
|
|  
| 4.x-ltsi
|  
| 4,x-ltsi
| core-image-lsb-sdk
| core-image-lsb-sdk
| NO
|  
| NO
|  
| No
|  
| Y
|  
| NO
|-
|-
| VM
|  
| QEMU
| PPC
| qemux86
| P1022ds
| P1022ds
| 4.x
| 4.x
| core-image-sato-sdk
| core-image-sato-sdk
| Y
| <span style="background:#00ff00"> Y </span>
| Y
| <span style="background:#00ff00"> Y </span>
| Y
|  
| NO
|  
| NO
|-
|-
|
|
|
|  
|
|  
| 4.x-ltsi
|  
| 4,x-ltsi
| core-image-lsb-sdk
| core-image-lsb-sdk
| NO
|  
| NO
|  
| NO
|  
| NO
|  
| NO
|-
|-
|
|  
|
| ARM
| qemux86-64
| Beaglebone Black
| beaglebone
| 4.x
| 4.x
| core-image-sato-sdk
| core-image-sato-sdk
| Y
| <span style="background:#00ff00"> Y </span>
| Y
| <span style="background:#00ff00"> Y </span>
| Y
|  
| NO
|  
| NO
|-
|-
|
|
|
|  
|
|  
| 4.x-ltsi
|  
| 4,x-ltsi
| core-image-lsb-sdk
| core-image-lsb-sdk
| NO
|  
| NO
|  
| NO
| <span style="background:#00ff00"> Y </span>
| NO
|  
| NO
|-
|-
|
|  
|
| VM
| QEMU
| qemuarm
| qemuarm
| 4.x
| 4.x
| core-image-sato-sdk
| core-image-sato-sdk
| Y
| <span style="background:#00ff00"> Y </span>
| Y
|  
| Y
|  
| NO
|  
| NO
|-
|-
|
|
|
|  
|
|  
| 4.x-ltsi
|  
| 4,x-ltsi
| core-image-lsb-sdk
| core-image-lsb-sdk
| NO
|  
| NO
|  
| NO
|  
| NO
|  
| NO
|-
|-
|
|
|
|  
|  
| qemuarm64
| qemuarm64
| 4.x
| 4.x
| core-image-sato-sdk
| core-image-sato-sdk
| Y
| <span style="background:#00ff00"> Y </span>
| Y
| <span style="background:#00ff00"> Y </span>
| Y
|  
| NO
|  
| NO
|-
|-
|
|
|
|  
|
|  
| 4.x-ltsi
|  
| 4,x-ltsi
| core-image-lsb-sdk
| core-image-lsb-sdk
| NO
|  
| NO
|  
| NO
|  
| NO
|  
| NO
|-
|-
|
|
|
|  
|  
| qemuppc
| qemuppc
| 4.x
| 4.x
| core-image-sato-sdk
| core-image-sato-sdk
| Y
| <span style="background:#00ff00"> Y </span>
| Y
|  
| Y
|  
| NO
|  
| NO
|-
|-
|
|
|
|  
|
|  
| 4.x-ltsi
|  
| 4,x-ltsi
| core-image-lsb-sdk
| core-image-lsb-sdk
| NO
|  
| NO
|  
| NO
|  
| NO
|  
| NO
|-
|-
|
|
|
|  
|  
| qemumips
| qemumips
| 4.x
| 4.x
| core-image-sato-sdk
| core-image-sato-sdk
| Y
| <span style="background:#00ff00"> Y </span>
| Y
|  
| Y
|  
| NO
|  
| NO
|-
|-
|
|
|
|  
|
|  
| 4.x-ltsi
|  
| 4,x-ltsi
| core-image-lsb-sdk
| core-image-lsb-sdk
| NO
|  
| NO
|  
| NO
|  
| NO
|  
| NO
|-
|-
|
|  
|
|  
| qemumips-64
|  
| qemumips64
| 4.x
| 4.x
| core-image-sato-sdk
| core-image-sato-sdk
| Y
| <span style="background:#00ff00"> Y </span>
| Y
|  
| Y
|  
| NO
|  
| NO
|-
|-
|
|
|
|  
|
|  
| 4.x-ltsi
|  
| 4,x-ltsi
| core-image-lsb-sdk
| core-image-lsb-sdk
| NO
|  
| NO
|  
| NO
|  
| NO
|  
| NO
|}
|}


Line 430: Line 495:


==== Sanity Testing ====
==== Sanity Testing ====
[TBD]
BSP Sanity testing is performed by the public [[AutoBuilder]], where all the BSP artifacts are built and checked if they are built correctly. On public [[AutoBuilder]], [[Image tests]] is being run also on the QEMU images as well.


==== Weekly Testing ====
==== Weekly Testing ====
[TBD] - add Weekly templates
Consists in running all automated BSP tests, whihc are targeted to run on a weekly basis against the weekly build. Enabling and running the tests is described on the [[Image tests]] wiki page. The tests are available for QEMU BSPs and as well BSPs installed on real Hardware. For Coverage, please check [[#Runtime testing]] WR column
Automated BSP tests, are targeted to run on a weekly basis against the weekly build. Enabling and running the tests is described on the [[Image tests]] wiki page. The tests are available for QEMU BSPs and as well BSPs installed on real HW.




==== Full Pass ====
==== Full Pass ====
[TBD] - add FP templates
The full pass testing aims to run the BSP test cases which are not automated. They extend what is covered by [[#Weekly Testing]] by containing more complex scenarios like changing runlevels, or audio tests. for reference, please check [[#Runtime testing]] FP column.
The full pass testing aims to run the BSP test cases that are not automated. They extend what is covered by [[#Weekly Testing]] by containing more complex scenarios like changing runlevels, or audio tests.
 


The [[Testopia]] test run templates used for [[#Runtime testing]] can be found in the [https://bugzilla.yoctoproject.org/tr_show_product.cgi?product_id=66 BSPs Bugzilla product] and are the following:
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=5119 GenericX86 2.1 Full Pass]
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=5118 BSP Weekly core-image-sato-sdk (auto)]
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=5116 Genericx86-64 Full Pass]
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=5112 Genericx86-64 WIC  weekly]
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=5111 LSB Weekly]
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=5110 ANYQEMU Weekly]
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=5109 ANYQEMU Full Pass]


==== Stress Testing ====
==== Stress Testing ====
Line 449: Line 519:
* genericx86-64 core-image-lsb-sdk image is tested using Helltest and Crashme stress tests
* genericx86-64 core-image-lsb-sdk image is tested using Helltest and Crashme stress tests


==== System Performance ====
The Runtime test plan Template is available in [https://bugzilla.yoctoproject.org/tr_show_product.cgi Runtime Bugzilla product]:
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=5132 Runtime Full Pass]
 
 
 
==== System Performance (not implemented) ====
*; Objective:
*; Objective:
**Track the run-time performance of targeted systems;
**Track the run-time performance of targeted systems;
Line 462: Line 537:
=== Developer Tools ===
=== Developer Tools ===
==== Application Development Toolkit ====
==== 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.
ADT testing includes tests for meta-toolchain-sdk and user build sdk. It will be covered in Weekly and Fullpass testing.


*Cross-toolchain install&compiling Test
*Cross-toolchain install&compiling Test
*relocatable SDK
*relocatable SDK
*ADT installer
*extensible SDK (eSDK)
*toolchain tarballs
*toolchain tarballs
*yocto build tree
*yocto build tree
The Testopia templates are as following:
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=3476 ADT Full Pass]
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=3475 ADT Weekly]


==== Eclipse IDE Plugin ====
==== Eclipse IDE Plugin ====
Line 480: Line 559:


Depending on the new SDK features (e.g. MacOS and Windows support), additional tests will be run in order to validate the new features.
Depending on the new SDK features (e.g. MacOS and Windows support), additional tests will be run in order to validate the new features.
Currently, Eclipse plugin Testopia templates are available here:
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4031 Eclipse Full Pass]
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4046 Exploratory New Test Cases]
For eclipse test automation, refer to [[#Eclipse Testing Framework]] section.


==== Build Appliance ====
==== Build Appliance ====
The basic functionality of the Build appliance will be tested. The tests consists on building successfully a build-appliance-image, launch HOB.
The basic functionality of the Build appliance will be tested. The tests consists on building successfully a build-appliance-image, launch HOB.
 
Here is the Build Appliance Testopia Template:
=== Distribution Support ===
* [https://bugzilla.yoctoproject.org/tr_show_run.cgi?run_id=4047 Build Appliance Template]
; Criteria: The OS distribution version is still maintained at the time of the {{ns:4}} release (1.7 release date is: OCT, 2014)
; Coverage: Following a table with targeted distribution and versions:
{| class="wikitable"
! Distro !! Version !! Release !! EOL
|-
| rowspan="3" | Ubuntu
|-
| 14.04 LTS || April 17, 2014 || April 2019
|-
| 14.10 || October, 2014 ||
|-
| rowspan="3" | Fedora
|-
|-
| 20 || December 17,  2013 ||
|-
| 21 || December 14,  2014 ||
|-
| rowspan="3" | CentOS
|-
| 5 || ~ || March 31, 2017
|-
| 6 || ~ || November 30, 2020
|-
| rowspan="3" | Debian
|-
| 6 || February 6th, 2011 ||
|-
| 7 || May 4th, 2013 || current
|-
| rowspan="3" | openSUSE
|-
| 12.3 || May 28, 2013 || ~
|-
| 13.1 || Nov 16, 2013 || ~
|}


= Testing tools =
= Testing tools =
== Autobuilder ==
== Autobuilder ==


[TBD] add info
More information can be found in the [[AutoBuilder]] wiki.
 
== oe-selftest ==
 
Oe-selftest is a test framework used for testing the OpenEmbedded build system. Following are some key points in describing oe-selftest:
 
* based on Python unittest
* designed to simulate normal usage patterns
* does not cover image run-time testing
* implements a new layer that contains generic/specific metadata used only by tests


[[Autobuilder]]
Details regarding oe-selftest implementation and usage are available on [[Oe-selftest]] wiki.


== oe-selftest ==
== Image tests ==
== Image tests ==


Line 538: Line 596:
* LTP tests
* LTP tests


Install steps:
# Download lsb image from autobuilder( same image as in LSB weekly testing for genericx86-64-lsb bsp)
#* we test compliance on NUC with genericx86-64-lsb, core-image-lsb-sdk
# Install the image on DUT
# Configure the network so it be able to work externally:
#* edit /etc/resolv.conf and add the gateway ip_address
#* add the ip and netmask using "ifconfig" command
#* add the route using "route add default gw <ip_address>"
#* export the proxy using "export http_proxy=<add your proxy link>" command
#: there is a bug and if you make these steps in another order than above, it may be possible not work
# Copy "compliance_test.py" script on DUT
# Make sure that your network connection is working
# Run the script like this:
#* make the script executable: "chmod a+x compliance_local.py"
#* run in command line the following command "./compliance_test.py <milestone> <date>"
#* wait until "Configuration done. LSB script must be started from machine." in command line( about 8-12 hours)
# Run "LSB_test.sh" via ssh or manually and wait for it to finish( about a day)
# Get the logs from DUT:
#* result-<milestone>-data.fulllog
#* result-<milestone>-data.log
#* result-<milestone>-data.fail
#* posix.log (can be found in: /opt/ltp/testcases/open_posix_testsuite)
#*:*  the three others are found in /opt/ltp directory, in output, temp, result folders . The logs need to be sent to [[yi.zhao@windriver.com]] specifying the version and the type of image
#* in /var/opt/lsb/test/manager/results/x86.../x86....tar.gz (you can find it with auto-complete(tab) easily)
#*:* it has like 18 Mb
#*:*  upload this file on drive and send the link to [[hongxu.jia@windriver.com]] and [[mark.hatle@windriver.com]]
#*:*  also I'll fwd an email to see how it looks
# Put the tests from Testopia - Runtime test run on passed
The scripts can be found here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=cagurida/compliance


== pTest ==
== pTest ==
Ptest (package test) is a concept for building, installing and running the test suites that are included in many packages, and producing a consistent output format. More details on enabling and installing pTest are available on pTest [https://wiki.yoctoproject.org/wiki/Ptest wiki].
Ptest (package test) is a concept for building, installing and running the test suites that the packages include for and by themselves, while producing a consistent test execution output format. More details on enabling and installing pTest are available on [[Ptest]].
 
Install an run steps:
 
#Download pTest image from autobuilder( you can find core-image-sato-sdk image in pTest directory)
#Install the image on DUT (using legacy boot)
# Boot the image and copy "ptest-runner.sh" script on DUT
# In command line run "ptest-runner.sh > ptest.log" and wait for it to finish ( about 5 hours)
 
== Eclipse Testing Framework ==
 
Eclipse Testing Framework uses [https://fedorahosted.org/dogtail/ Dogtail] for test automation. Refer to  eclipse-framework [http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/tree/examples/README?h=vhangan/eclipse-framework&id=dce7364ba85c12683234dc4841830d4ce23a488c README] on contrib for installation and framework details.
[https://fedorahosted.org/dogtail/ Dogtail] is a GUI test tool and automation framework written in Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. dogtail scripts are written in Python and executed like any other Python program.


== Build Performance test ==
== Build Performance test ==
Line 550: Line 653:


== Automatic testing of incoming patches ==
== Automatic testing of incoming patches ==
[TBD] - Not covered yet


= Test Cycle =
= 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.
* Execution according to [[Yocto 2.1 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.
* List of all [[Test Cases]], included in a cycle or not.


{|class="wikitable" style="text-align: center;"
 
| ||
{| class="wikitable"
!colspan="4"|Test execution cycle
! colspan="5" |  
|-
|-
| ||
| colspan="5" style="text-align: center;" | Test execution cycle
! [[#Sanity Test]] || [[#Weekly Test]] || [[#Full Pass Test]] || [[#Release Test]]
|-
|-
! rowspan="5" |Build type
| colspan="2" |  
| #Sanity Test
| #Weekly Test
| #Full Pass Test (Release)
|-
|-
! Daily (M.U.T.)
| rowspan="4" | Build type
| yes || || ||
| Daily (M.U.T.)
| yes
|  
|  
|-
|-
! Weekly
| Weekly
| yes || yes || ||
| yes
| yes
|  
|-
|-
! Release Candidate
| Release Candidate
| yes || yes || yes ||
| yes
| yes
| yes
|-
|-
! Release
| Release
| yes || yes || yes || yes
| yes
| yes
| yes
|-
|-
! rowspan="13" | [[#Test Areas]]
| rowspan="9" | #Test Areas
! [[#BitBake]]
| #Build System (oe-selftest)
| yes || yes || yes ||
| yes
| yes
| yes
|-
|-
! [[#HOB]]
| #BitBake
| || yes || yes ||
|  
|  
| yes
|-
|-
! [[#Toaster]]
| #Toaster
| ||  ||  || yes
| yes
| yes
| yes
|-
|-
! [[#Build Performance]]
| #Metadata
| || yes || ||
|  
|  
| yes
|-
|-
! [[#QEMU Image]]
| #Runtime testing
| yes || yes || yes ||
| yes
| yes
| yes
|-
|-
! [[#BSP Image]]
| #Application Development Toolkit
| || yes || yes ||
|  
| yes
| yes
|-
|-
! [[#Compliance Testing]]
| #Eclipse IDE Plugin
| || || || yes
|  
|  
| yes
|-
|-
! [[#Stress Testing]]
| #Build Appliance
| || || || yes
|  
|  
| yes
|-
|-
! [[#System Performance]]
| Distro Testing
| || || || yes
| yes
| yes
| yes
|-
|-
! [[#Application Development Toolkit]]
| rowspan="3" | Target machine
| || yes || yes ||
| generic BSPs (x86)
| yes
| yes
| yes
|-
|-
! [[#Eclipse IDE Plugin]]
| generic BSPs (non x86)
| || yes || yes || yes
| yes
| yes
| yes
|-
|-
! [[#Build Appliance]]
| VM (x86 and non-x86)
| || || yes ||
| yes
| yes
| yes
|-
|-
! [[Distro Testing]]
| rowspan="6" | Target image
| || || yes ||
| core-image-sato
| yes
|  
|  
|-
|-
! rowspan="11" | Target machine
| core-image-sato-dev
| yes
|
|
|-
|-
! qemuarm
| core-image-sato-sdk
| yes || yes || yes ||
| yes
| yes
| yes
|-
|-
! qemumips
| core-image-lsb-sdk
| yes || yes || yes ||
| yes
| yes
|  
|-
|-
! qemuppc
| core-image-minimal
| yes || yes || yes ||
| yes
|  
|  
|-
|-
! qemux86
| core-image-minimal-dev
| yes || yes || yes ||
| yes
|-
|  
! qemux86-64
|  
| yes || yes || yes ||
|-
! genericx86-64
| || yes || yes ||
|-
! genericx86-64
| || yes || yes ||
|-
! beaglebone black
| || yes || yes || yes
|-
! mpc8315e-rdb
| || yes || yes ||
|-
! edgerouter
| || yes || yes || yes
|-
! rowspan="6" | 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 || || ||
|}
|}


Line 721: Line 840:
** On [[AutoBuilder]] the [[Image tests]] are run.
** On [[AutoBuilder]] the [[Image tests]] are run.
** [[Oe-selftest]] can be used. Currently oe-selftest is run on public [[AutoBuilder]] as well.
** [[Oe-selftest]] can be used. Currently oe-selftest is run on public [[AutoBuilder]] as well.
** HW automation [https://bugzilla.yoctoproject.org/show_bug.cgi?id=1596 1596]
 
 
== Test Automation contrib repositories ==
 
*[[oe-selftest]]
*[[Image tests]]
*[[ptest]]
*[[#Toaster]]
*[http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=vhangan/eclipse-framework&id=dce7364ba85c12683234dc4841830d4ce23a488c Eclipse testing framework]


= Validation =
= Validation =
*; Objective:
*; Objective:
** Verify the correct functionality of [https://wiki.yoctoproject.org/wiki/Yocto_1.7_Features new] changes introduced in version 1.7 of the {{ns:4}}.
** Verify the correct functionality of [https://wiki.yoctoproject.org/wiki/Yocto_1.7_Features new] changes introduced in current version of the {{ns:4}}.


*; Entry criteria:
*; Entry criteria:
** The change is tracked by filling in the "QA Owner" field for the Medium+/High enhancements
** The change is tracked by filling in the "QA Owner" field for the Medium+/High enhancements
** The change is prioritized in [https://bugzilla.yoctoproject.org/ Bugzilla]
** The change is prioritized in [https://bugzilla.yoctoproject.org/ Bugzilla]
** Bugzilla entry has a target milestone within version 1.7
** Bugzilla entry has a target milestone within the current version
** The change is documented or pointed out when no documentation is necessary (the doc flag is set accordingly)
** The change is documented or pointed out when no documentation is necessary (the doc flag is set accordingly)
** Bug status is set to RESOLVED.
** Bug status is set to RESOLVED.
Line 740: Line 867:


*; References:
*; References:
** [[Yocto 1.7 Features]]
** [[2.1 qa owned bugs]] - Bug verification wiki tracker
** [[1.7 qa owned bugs]] - this wiki was created for QA to track easily resolved bugs and features
** [[2.1 qa owned features to verify]] - Feature verification wiki tracker
** [[Yocto Project v1.7 Status]]
** [[2.1 QA Owned Features]] - Feature list tracker that QA needs to implement
 
** [[Old resolved bugs and features]] - A list with old resolved bugs which needs verification
== New features validation and QA integration ==
** [[2.1 QA Status]] - current status of test progress
*; 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 =
= Test Reporting =
*; Objectives:
*; Objectives:
** Show a live [[1.7 QA Status]] of the active test runs, on the latest build;
** Show a live [[2.1 QA Status]] of the active test runs, on the latest build;
** Send out an report email to the {{ns:4}} [https://lists.yoctoproject.org/listinfo/yocto mailing list] at the end of a test cycle;
** Send out an report email to the {{ns:4}} [https://lists.yoctoproject.org/listinfo/yocto mailing list] at the end of a test cycle;
** Archive reports at [[1.6 qa run history]];
** Archive reports at [[2.1 qa run history]];
** Use [[QA Status TEMPLATE]] for reporting;
** Use [[QA Status TEMPLATE]] for reporting;
** Use [[Testopia]] as a tool for reporting;

Latest revision as of 15:39, 29 March 2016

Reversion history

Version Modifier Comments
2.1_M2 Alexandru Georgescu first draft
2.1_M3.rc2 Alexandru Georgescu/ Jose Perez Carranza Test Plan review 3/29/2016


Introduction

This article is the overall test plan for version 2.1 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 and Tasks

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.


Objectives

The Overall testing plan during Yocto Project 2.1 cycle aims to validate the overall enhancements that are currently in development for Yocto Project 2.1 as well as detecting regressions that might appear along.

  • Bug and feature verification
  • Running regression tests
  • Perform exploratory testing on required areas (e.g. Toaster)
  • Improve and extend overall automation

Tasks

Here is a list with all tasks identified by this testing plan.

  • General component testing
  • Bug and Feature reporting
  • Bug and Feature verification
  • Test automation
  • Exploratory testing
  • Creating testing plans for required areas
  • Review testing approaches with development peers
  • Assign QA owners on major features

Testing Strategy

Test Areas

By definition, Yocto Project is an open source collaboration project that provides templates, tools and methods to help you create custom Linux-based systems for embedded products regardless of the hardware architecture. Therefore, 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. Currently, oe-selftest covers all #Bitbake, oe-core and #Metadata autoamted tests. The Testopia template for oe-selftest is found in oe-core Bugzilla product:

* oe-core/oe-selftest Weekly Template

BitBake

Functional testing of BitBake, as a build engine with all its features and components against various configuration and scenarios.

The Testopia template for BitBake component is:

* Bitbake Full Pass Template

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 against Toaster. The test process focuses mostly on validating the data collected from the build process and verifying the correct functionality of the Toaster GUI such as:

  • UI interface
  • Backend interaction with bitbake for build purposes
  • Backend interaction with database for storing and accessing build informations
  • The testing objective involves only positive testing for existing features on Toaster.
  • Perform exploratory testing focusing on newer features; this can sometimes generate new test cases.

Here are the test run templates for Toaster:

* Backend Managed mode - Full Pass TEMPLATE
* UI Managed Mode - Full Pass TEMPLATE
* Backend - Weekly TEMPLATE
* UI - Full Pass TEMPLATE
* Exploratory TEMPLATE

Metadata

Testing the core metadata of the Yocto Project is mainly covered in the overall testing process, through other #Test Areas like #BitBake and #Toaster mentioned above. We also have specific tests covering meta-yocto in the meta-yocto test run template, which we are running regularly at Full Pass:

* Meta-yocto - Full Pass Template

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 are Fedora, Ubuntu, CentOS, OpenSuse with their latest update. If for a distribution, a beta version is available during the release, the n+1 (beta version) will be validated as well.
Refer to Distribution Support wiki for more details.

[TBD] - distribution support wiki needs to be updated

The test run template for Distro testing, can be found in the Automated Build testing Bugzilla product in the master branch.

* Distro Template

Our Distro config can be found here on contrib: http://git.yoctoproject.org/cgit/cgit.cgi/yocto-autobuilder/log/?h=contrib/QAsetup/ABubuntu

Runtime testing

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.

For test coverage, we are running the automated tests using Image tests.

Release CPU Class HW Platform BSP Name linux-yocto Image-type WR FP Compliance pTest
generic BSPs (x86) Big Core MinwMax 32bit genericx86 4.x core-image-sato-sdk Y Y
4,x-ltsi core-image-lsb-sdk Y
genericx86-wic 4.x core-image-sato Y
4,x-ltsi core-image-lsb-sdk
MinwMax 64bit genericx86-64 4.x core-image-sato-sdk Y
4,x-ltsi core-image-lsb-sdk
genericx86-64-wic 4.x core-image-sato Y
4,x-ltsi core-image-lsb-sdk
NUC genericx86-64 4.x core-image-sato-sdk Y Y Y
4,x-ltsi core-image-lsb-sdk Y Y
genericx86-64-wic 4.x core-image-sato Y
4,x-ltsi core-image-lsb-sdk
VM QEMU qemux86 4.x core-image-sato-sdk Y Y
4,x-ltsi core-image-lsb-sdk
qemux86-64 4.x core-image-sato-sdk Y Y
4,x-ltsi core-image-lsb-sdk
generic BSPs (n-x86) MIPS EdgeRouter EdgeRouter 4.x core-image-sato-sdk Y Y
4,x-ltsi core-image-lsb-sdk
PPC MPC8315e-rdb MPC8315e-rdb 4.x core-image-sato-sdk Y Y
4,x-ltsi core-image-lsb-sdk
PPC P1022ds P1022ds 4.x core-image-sato-sdk Y Y
4,x-ltsi core-image-lsb-sdk
ARM Beaglebone Black beaglebone 4.x core-image-sato-sdk Y Y
4,x-ltsi core-image-lsb-sdk Y
VM QEMU qemuarm 4.x core-image-sato-sdk Y
4,x-ltsi core-image-lsb-sdk
qemuarm64 4.x core-image-sato-sdk Y Y
4,x-ltsi core-image-lsb-sdk
qemuppc 4.x core-image-sato-sdk Y
4,x-ltsi core-image-lsb-sdk
qemumips 4.x core-image-sato-sdk Y
4,x-ltsi core-image-lsb-sdk
qemumips64 4.x core-image-sato-sdk Y
4,x-ltsi core-image-lsb-sdk


Sanity Testing

BSP Sanity testing is performed by the public AutoBuilder, where all the BSP artifacts are built and checked if they are built correctly. On public AutoBuilder, Image tests is being run also on the QEMU images as well.

Weekly Testing

Consists in running all automated BSP tests, whihc are targeted to run on a weekly basis against the weekly build. Enabling and running the tests is described on the Image tests wiki page. The tests are available for QEMU BSPs and as well BSPs installed on real Hardware. For Coverage, please check #Runtime testing WR column


Full Pass

The full pass testing aims to run the BSP test cases which are not automated. They extend what is covered by #Weekly Testing by containing more complex scenarios like changing runlevels, or audio tests. for reference, please check #Runtime testing FP column.

The Testopia test run templates used for #Runtime testing can be found in the BSPs Bugzilla product and are the following:

* GenericX86 2.1 Full Pass
* BSP Weekly core-image-sato-sdk (auto)
* Genericx86-64 Full Pass
* Genericx86-64 WIC  weekly
* LSB Weekly
* ANYQEMU Weekly
* ANYQEMU Full Pass

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

The Runtime test plan Template is available in Runtime Bugzilla product:

* Runtime Full Pass


System Performance (not implemented)

  • 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 meta-toolchain-sdk and user build sdk. It will be covered in Weekly and Fullpass testing.

  • Cross-toolchain install&compiling Test
  • relocatable SDK
  • extensible SDK (eSDK)
  • toolchain tarballs
  • yocto build tree

The Testopia templates are as following:

* ADT Full Pass
* ADT Weekly

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.

Currently, Eclipse plugin Testopia templates are available here:

* Eclipse Full Pass
* Exploratory New Test Cases

For eclipse test automation, refer to #Eclipse Testing Framework section.

Build Appliance

The basic functionality of the Build appliance will be tested. The tests consists on building successfully a build-appliance-image, launch HOB. Here is the Build Appliance Testopia Template:

* Build Appliance Template

Testing tools

Autobuilder

More information can be found in the AutoBuilder wiki.

oe-selftest

Oe-selftest is a test framework used for testing the OpenEmbedded build system. Following are some key points in describing oe-selftest:

  • based on Python unittest
  • designed to simulate normal usage patterns
  • does not cover image run-time testing
  • implements a new layer that contains generic/specific metadata used only by tests

Details regarding oe-selftest implementation and usage are available on Oe-selftest wiki.

Image tests

Compliance Testing

Compliance test suites / frameworks used on genericx86-64:

  • LSB tests
  • POSIX tests
  • LTP tests

Install steps:

  1. Download lsb image from autobuilder( same image as in LSB weekly testing for genericx86-64-lsb bsp)
    • we test compliance on NUC with genericx86-64-lsb, core-image-lsb-sdk
  2. Install the image on DUT
  3. Configure the network so it be able to work externally:
    • edit /etc/resolv.conf and add the gateway ip_address
    • add the ip and netmask using "ifconfig" command
    • add the route using "route add default gw <ip_address>"
    • export the proxy using "export http_proxy=<add your proxy link>" command
    there is a bug and if you make these steps in another order than above, it may be possible not work
  4. Copy "compliance_test.py" script on DUT
  5. Make sure that your network connection is working
  6. Run the script like this:
    • make the script executable: "chmod a+x compliance_local.py"
    • run in command line the following command "./compliance_test.py <milestone> <date>"
    • wait until "Configuration done. LSB script must be started from machine." in command line( about 8-12 hours)
  7. Run "LSB_test.sh" via ssh or manually and wait for it to finish( about a day)
  8. Get the logs from DUT:
    • result-<milestone>-data.fulllog
    • result-<milestone>-data.log
    • result-<milestone>-data.fail
    • posix.log (can be found in: /opt/ltp/testcases/open_posix_testsuite)
      • the three others are found in /opt/ltp directory, in output, temp, result folders . The logs need to be sent to yi.zhao@windriver.com specifying the version and the type of image
    • in /var/opt/lsb/test/manager/results/x86.../x86....tar.gz (you can find it with auto-complete(tab) easily)
  9. Put the tests from Testopia - Runtime test run on passed


The scripts can be found here: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=cagurida/compliance

pTest

Ptest (package test) is a concept for building, installing and running the test suites that the packages include for and by themselves, while producing a consistent test execution output format. More details on enabling and installing pTest are available on Ptest.

Install an run steps:

  1. Download pTest image from autobuilder( you can find core-image-sato-sdk image in pTest directory)
  2. Install the image on DUT (using legacy boot)
  3. Boot the image and copy "ptest-runner.sh" script on DUT
  4. In command line run "ptest-runner.sh > ptest.log" and wait for it to finish ( about 5 hours)

Eclipse Testing Framework

Eclipse Testing Framework uses Dogtail for test automation. Refer to eclipse-framework README on contrib for installation and framework details. Dogtail is a GUI test tool and automation framework written in Python. It uses Accessibility (a11y) technologies to communicate with desktop applications. dogtail scripts are written in Python and executed like any other Python program.

Build Performance test

The performance of the build system is tracked, with regards to time spent on passing through a build process, in multiple, commonly used, configurations.

The tool used: http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/scripts/contrib/build-perf-test.sh
For more details, refer to Performance Test wiki.
Currently, build performance results can be viewed here as chart view (starting YP 1.6) here

Automatic testing of incoming patches

[TBD] - Not covered yet

Test Cycle

  • Execution according to Yocto 2.1 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
#Sanity Test #Weekly Test #Full Pass Test (Release)
Build type Daily (M.U.T.) yes
Weekly yes yes
Release Candidate yes yes yes
Release yes yes yes
#Test Areas #Build System (oe-selftest) yes yes yes
#BitBake yes
#Toaster yes yes yes
#Metadata yes
#Runtime testing yes yes yes
#Application Development Toolkit yes yes
#Eclipse IDE Plugin yes
#Build Appliance yes
Distro Testing yes yes yes
Target machine generic BSPs (x86) yes yes yes
generic BSPs (non x86) yes yes yes
VM (x86 and non-x86) yes yes yes
Target image core-image-sato yes
core-image-sato-dev yes
core-image-sato-sdk yes yes yes
core-image-lsb-sdk 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.
    • 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 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.
    • Improve build-time testing.


Test Automation contrib repositories

Validation

  • Objective
    • Verify the correct functionality of new changes introduced in current version of the Yocto Project.
  • 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 the current version
    • 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

Test Reporting