QDoc Regression Testing: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 1: Line 1:
h1.QDoc Regression Testing
h1.QDoc Regression Testing


This page outlines a list of pages and functionalities that must be tested<br /> for every commit to QDoc. Not all of the items in the list applies and it is<br /> up to the commit author and reviewer to decide which test is relevant.
This page outlines a list of pages and functionalities that must be tested<br />for every commit to QDoc. Not all of the items in the list applies and it is<br />up to the commit author and reviewer to decide which test is relevant.


==Essential Testing Strategy==
== Essential Testing Strategy ==


This is a list of tests. Testing these pages should be enough to cover most cases.
This is a list of tests. Testing these pages should be enough to cover most cases.


1. Compile Code<br /> 2. Look at index.html<br /> 3. Look at the Modules page for links to all essentials and add-ons<br /> 4. Look at All Classes<br /> 5. Look at All <span class="caps">QML</span> Types<br /> 6. Look at qtdoc-&gt;qtdoc links<br /> 7. Look at qtbase-&gt;qtbase links<br /> 8. Look at new module-&gt;new module links (qtsensors to qtsensors, for example)<br /> 9. Look at the “5.2” navigation bar<br /> 10. Look at Creator docs or another non-Qt 5 docs<br /> 11. More pages which show obscure edge cases
1. Compile Code<br />2. Look at index.html<br />3. Look at the Modules page for links to all essentials and add-ons<br />4. Look at All Classes<br />5. Look at All QML Types<br />6. Look at qtdoc-&gt;qtdoc links<br />7. Look at qtbase-&gt;qtbase links<br />8. Look at new module-&gt;new module links (qtsensors to qtsensors, for example)<br />9. Look at the &quot;5.2&amp;quot; navigation bar<br />10. Look at Creator docs or another non-Qt 5 docs<br />11. More pages which show obscure edge cases


<span class="caps">QML</span> Cases:<br /> a)Item (C++ page, <span class="caps">QML</span> type)<br /> b)Button (<span class="caps">QML</span> page, <span class="caps">QML</span> type)<br /> c)Audio, Sensor, Positioning, other <span class="caps">QML</span> types that is outside of qtdeclarative.<br /> d)also possible to test Charts, B2Qt, and Enterprise Controls<br /> There is a separate C++ and <span class="caps">QML</span> parser, so these need special attention
QML Cases:<br />a)Item (C++ page, QML type)<br />b)Button (QML page, QML type)<br />c)Audio, Sensor, Positioning, other QML types that is outside of qtdeclarative.<br />d)also possible to test Charts, B2Qt, and Enterprise Controls<br />There is a separate C++ and QML parser, so these need special attention


C++ Cases:<br /> a)QObject (the inheritance)<br /> b)another class in qtbase (Qt <span class="caps">SQL</span> and Qt Network are stable and easy to check)<br /> c)qtdeclarative<br /> d)new module C++ classes<br /> Check the Properties, Functions, grouped properties, inheritance tree. Lots of regression in these areas (missing info, wrong links, and so on).
C++ Cases:<br />a)QObject (the inheritance)<br />b)another class in qtbase (Qt SQL and Qt Network are stable and easy to check)<br />c)qtdeclarative<br />d)new module C++ classes<br />Check the Properties, Functions, grouped properties, inheritance tree. Lots of regression in these areas (missing info, wrong links, and so on).


These cover most of the cases. All do-able for within minutes of clicking around.<br /> Check for past regressions (though not all the time).
These cover most of the cases. All do-able for within minutes of clicking around.<br />Check for past regressions (though not all the time).


==Specific pages:==
== Specific pages: ==


===index.html (Qt 5 main page)===
=== index.html (Qt 5 main page) ===


1. check for the “Qt Creator” link (\externalpage link)<br /> 2. check for the “Multimedia” link (qtdoc-&gt;qtmultimedia link)<br /> 3. check the list of overviews<br /> 4. check title and the navigation bar and build version
1. check for the &quot;Qt Creator&amp;quot; link (link)<br />2. check for the &quot;Multimedia&amp;quot; link (qtdoc-&gt;qtmultimedia link)<br />3. check the list of overviews<br />4. check title and the navigation bar and build version


===“All Classes” – classes.html===
=== &quot;All Classes&amp;quot; - classes.html ===


1.check for new classes such as:
1.check for new classes such as:<br />'''''' QGeoCoordinate (5.2)<br />'''''' QSerialPort (5.1)


* QGeoCoordinate (5.2)
2. check for older or special classes:<br />'''''' QString (sanity check)<br />'''''' QQuickWindow (instantiated by a QML type)
* QSerialPort (5.1)
 
2. check for older or special classes:
 
* QString (sanity check)
* QQuickWindow (instantiated by a <span class="caps">QML</span> type)


3. check that A…Z list at the top is correct
3. check that A…Z list at the top is correct


===“All Modules” – qtmodules.html===
=== &quot;All Modules&amp;quot; - qtmodules.html ===
 
1. check for special modules:


* ActiveQt (Windows-only but should be built)
1. check for special modules:<br />'''''' ActiveQt (Windows-only but should be built)<br />'''''' Qt WebKit (many previous build problems)<br />'''''' Qt Bluetooth (new Add-On)
* Qt WebKit (many previous build problems)
* Qt Bluetooth (new Add-On)


2. links to the modules should be active
2. links to the modules should be active


===“All <span class="caps">QML</span> Types” – qmltypes.html===
=== &quot;All QML Types&amp;quot; - qmltypes.html ===
 
1. check for new types such as:


* Position (5.2)
1. check for new types such as:<br />'''''' Position (5.2)<br />'''''' JumpList (5.2)
* JumpList (5.2)


2. check for older types such as:
2. check for older types such as:<br />'''''' Item or Window<br />'''''' Button
 
* Item or Window
* Button


3. check that the A…Z list at the top is correct
3. check that the A…Z list at the top is correct


===“All <span class="caps">QML</span> <span class="caps">API</span>s by Module” – modules-qml.html===
=== &quot;All QML APIs by Module&amp;quot; - modules-qml.html ===
 
1. check that the list is correct
 
* most modules should be there
* brief and annotated information
* title
 
===“All Classes by Module” – modules-cpp.html===
 
1. check that the list is correct
 
* most modules should be there
* brief and annotated information
* title
 
===“Item” – qml-qtquick-item.html===
 
1. <span class="caps">HTML</span> filename should be qml-&lt;qmlmodule&gt;-&lt;type&gt;.html<br /> 2. check required information:
 
* import statement (same as \qmlmodule)
* instantiates (QQuickItem)
* inherits: (QtObject)
* inherited-by: should be reasonably populated
* clicking on the inherited, instantiated, and other links should work
 
3. check Properties section
 
* “anchors” is a group and has the members in a sub-list
* clicking on a property works
 
4. check Methods section
 
* should look okay
* “Detailed Description” should look okay:
* snippets and images look okay
* “See also” is okay
* general markup is okay
* property and method signatures look okay
* readable and links to the basic type
* should follow writing guidelines (not necessary for regression testing)
 
===“Button” – qml-qtquick-controls-button.html===
 
1. <span class="caps">HTML</span> filename should be correct<br /> 2. check required information:
 
* (see “Item”)
* clicking on inherited-by and inherits should go to the type
 
3. check the “List of All Members” page
 
* doesn’t list private classes and private types


===“QSensor Class” – qsensor.html===
1. check that the list is correct<br />'''''' most modules should be there<br />'''''' brief and annotated information<br />'''''' title


1. <span class="caps">HTML</span> filename should be correct &lt;classname&gt;.html<br /> 2. check required information:
=== &quot;All Classes by Module&amp;quot; - modules-cpp.html ===


* QObject link should work (qtsensors-&gt;qtcore link)
1. check that the list is correct<br />'''''' most modules should be there<br />'''''' brief and annotated information<br />'''''' title
* links to the inherited-by should work (qtsensors-&gt;qtsensors link)
* the fields look okay


3. check Public Types, Properties, functions, and so on.
=== &quot;Item&amp;quot; - qml-qtquick-item.html ===


* links should go to the same page
1. HTML filename should be qml-&lt;qmlmodule&amp;gt;<s>&lt;type&amp;gt;.html<br />2. check required information:<br />'''''' import statement (same as )<br />'''''' instantiates (QQuickItem)<br />'''''' inherits: (QtObject)<br />'''''' inherited-by: should be reasonably populated<br />'''''' clicking on the inherited, instantiated, and other links should work
* return types should be a working link
<br />3. check Properties section<br />'''''' &quot;anchors&amp;quot; is a group and has the members in a sub-list<br />'''''' clicking on a property works
<br />4. check Methods section<br />'''''' should look okay<br />'''''' &quot;Detailed Description&amp;quot; should look okay:<br />'''''' snippets and images look okay<br />'''''' &quot;See also&amp;quot; is okay<br />'''''' general markup is okay<br />'''''' property and method signatures look okay<br />'''''' readable and links to the basic type<br />'''''' should follow writing guidelines (not necessary for regression testing)
<br />h3. &quot;Button&amp;quot;</s> qml-qtquick-controls-button.html


4. check the “List of All Members for QSensor” page
1. HTML filename should be correct<br />2. check required information:<br />'''''' (see &quot;Item&amp;quot;)<br />'''''' clicking on inherited-by and inherits should go to the type


* should look okay
3. check the &quot;List of All Members&amp;quot; page<br />'''''' doesn't list private classes and private types


===“Qt Positioning <span class="caps">QML</span> Types” – qtpositioning-qmlmodule.html===
=== &quot;QSensor Class&amp;quot; - qsensor.html ===


1. check that the module page lists the <span class="caps">QML</span> types
1. HTML filename should be correct &lt;classname&amp;gt;.html<br />2. check required information:<br />'''''' QObject link should work (qtsensors-&gt;qtcore link)<br />'''''' links to the inherited-by should work (qtsensors-&gt;qtsensors link)<br />'''''' the fields look okay


* title and <span class="caps">HTML</span> filename are okay
3. check Public Types, Properties, functions, and so on.<br />'''''' links should go to the same page<br />'''''' return types should be a working link
* it has <span class="caps">QML</span> basic types
* <span class="caps">QML</span> basic type documentation is broken at the moment


===“Qt Core C++ Classes” – qtcore-module.html===
4. check the &quot;List of All Members for QSensor&amp;quot; page<br />'''''' should look okay


1. check that the module page
=== &quot;Qt Positioning QML Types&amp;quot; - qtpositioning-qmlmodule.html ===


* lists the C++ classes and namespace
1. check that the module page lists the QML types<br />'''''' title and HTML filename are okay<br />'''''' it has QML basic types<br />'''''' QML basic type documentation is broken at the moment
* title and <span class="caps">HTML</span> filename are correct


===“Bluetooth Tennis Example” – qtbluetooth-bttennis-example.html===
=== &quot;Qt Core C++ Classes&amp;quot; - qtcore-module.html ===


* any other example page is okay too<br /> 1. check that the files are listed
1. check that the module page<br />'''''' lists the C++ classes and namespace<br />'''''' title and HTML filename are correct
* title and <span class="caps">HTML</span> filename are okay


===Miscellaneous Pages and Tests===
=== &quot;Bluetooth Tennis Example&amp;quot; - qtbluetooth-bttennis-example.html ===


1. check for basic style issues:
'''''' any other example page is okay too<br />1. check that the files are listed<br />'''''' title and HTML filename are okay


* footer and header(should be in every page)
=== Miscellaneous Pages and Tests ===
* <span class="caps">HTML</span> title should be correct (QSensors Class | QtSensors 5.2 – Mozilla Firefox)


1. check “Synchronizing Threads” (threads-synchronizing.html) page for the “next” and “previous” links
1. check for basic style issues:<br />'''''' footer and header(should be in every page)<br />'''''' HTML title should be correct (QSensors Class | QtSensors 5.2 - Mozilla Firefox)


* or check Qt Creator Manual
1. check &quot;Synchronizing Threads&amp;quot; (threads-synchronizing.html) page for the &quot;next&amp;quot; and &quot;previous&amp;quot; links

Revision as of 11:21, 24 February 2015

h1.QDoc Regression Testing

This page outlines a list of pages and functionalities that must be tested
for every commit to QDoc. Not all of the items in the list applies and it is
up to the commit author and reviewer to decide which test is relevant.

Essential Testing Strategy

This is a list of tests. Testing these pages should be enough to cover most cases.

1. Compile Code
2. Look at index.html
3. Look at the Modules page for links to all essentials and add-ons
4. Look at All Classes
5. Look at All QML Types
6. Look at qtdoc->qtdoc links
7. Look at qtbase->qtbase links
8. Look at new module->new module links (qtsensors to qtsensors, for example)
9. Look at the "5.2&quot; navigation bar
10. Look at Creator docs or another non-Qt 5 docs
11. More pages which show obscure edge cases

QML Cases:
a)Item (C++ page, QML type)
b)Button (QML page, QML type)
c)Audio, Sensor, Positioning, other QML types that is outside of qtdeclarative.
d)also possible to test Charts, B2Qt, and Enterprise Controls
There is a separate C++ and QML parser, so these need special attention

C++ Cases:
a)QObject (the inheritance)
b)another class in qtbase (Qt SQL and Qt Network are stable and easy to check)
c)qtdeclarative
d)new module C++ classes
Check the Properties, Functions, grouped properties, inheritance tree. Lots of regression in these areas (missing info, wrong links, and so on).

These cover most of the cases. All do-able for within minutes of clicking around.
Check for past regressions (though not all the time).

Specific pages:

index.html (Qt 5 main page)

1. check for the "Qt Creator&quot; link (link)
2. check for the "Multimedia&quot; link (qtdoc->qtmultimedia link)
3. check the list of overviews
4. check title and the navigation bar and build version

"All Classes&quot; - classes.html

1.check for new classes such as:
' QGeoCoordinate (5.2)
'
QSerialPort (5.1)

2. check for older or special classes:
' QString (sanity check)
'
QQuickWindow (instantiated by a QML type)

3. check that A…Z list at the top is correct

"All Modules&quot; - qtmodules.html

1. check for special modules:
' ActiveQt (Windows-only but should be built)
'
Qt WebKit (many previous build problems)
' Qt Bluetooth (new Add-On)

2. links to the modules should be active

"All QML Types&quot; - qmltypes.html

1. check for new types such as:
' Position (5.2)
'
JumpList (5.2)

2. check for older types such as:
' Item or Window
'
Button

3. check that the A…Z list at the top is correct

"All QML APIs by Module&quot; - modules-qml.html

1. check that the list is correct
' most modules should be there
'
brief and annotated information
' title

"All Classes by Module&quot; - modules-cpp.html

1. check that the list is correct
' most modules should be there
'
brief and annotated information
' title

"Item&quot; - qml-qtquick-item.html

1. HTML filename should be qml-<qmlmodule&gt;<type&gt;.html
2. check required information:
' import statement (same as )
'
instantiates (QQuickItem)
' inherits: (QtObject)
'
inherited-by: should be reasonably populated
' clicking on the inherited, instantiated, and other links should work
3. check Properties section
' "anchors&quot; is a group and has the members in a sub-list
'
clicking on a property works
4. check Methods section
' should look okay
'
"Detailed Description&quot; should look okay:
' snippets and images look okay
'
"See also&quot; is okay
' general markup is okay
'
property and method signatures look okay
' readable and links to the basic type
'
should follow writing guidelines (not necessary for regression testing)
h3. "Button&quot;
qml-qtquick-controls-button.html

1. HTML filename should be correct
2. check required information:
' (see "Item&quot;)
'
clicking on inherited-by and inherits should go to the type

3. check the "List of All Members&quot; page
' doesn't list private classes and private types

"QSensor Class&quot; - qsensor.html

1. HTML filename should be correct <classname&gt;.html
2. check required information:
' QObject link should work (qtsensors->qtcore link)
'
links to the inherited-by should work (qtsensors->qtsensors link)
' the fields look okay

3. check Public Types, Properties, functions, and so on.
' links should go to the same page
'
return types should be a working link

4. check the "List of All Members for QSensor&quot; page
' should look okay

"Qt Positioning QML Types&quot; - qtpositioning-qmlmodule.html

1. check that the module page lists the QML types
' title and HTML filename are okay
'
it has QML basic types
' QML basic type documentation is broken at the moment

"Qt Core C++ Classes&quot; - qtcore-module.html

1. check that the module page
' lists the C++ classes and namespace
'
title and HTML filename are correct

"Bluetooth Tennis Example&quot; - qtbluetooth-bttennis-example.html

' any other example page is okay too
1. check that the files are listed
'
title and HTML filename are okay

Miscellaneous Pages and Tests

1. check for basic style issues:
' footer and header(should be in every page)
'
HTML title should be correct (QSensors Class | QtSensors 5.2 - Mozilla Firefox)

1. check "Synchronizing Threads&quot; (threads-synchronizing.html) page for the "next&quot; and "previous&quot; links