/usr/share/doc/ubuntu-packaging-guide-html-de/auto-pkg-test.html is in ubuntu-packaging-guide-html-de 0.3.5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>3. autopkgtest: Automatische Tests für Pakete — Ubuntu Packaging Guide</title>
<link rel="shortcut icon" href="./_static/images/favicon.ico" type="image/x-icon" />
<link rel="stylesheet" href="./_static/reset.css" type="text/css" />
<link rel="stylesheet" href="./_static/960.css" type="text/css" />
<link rel="stylesheet" href="./_static/base.css" type="text/css" />
<link rel="stylesheet" href="./_static/home.css" type="text/css" />
<link rel="stylesheet" href="./_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="./_static/guide.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '0.3.5',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="./_static/jquery.js"></script>
<script type="text/javascript" src="./_static/underscore.js"></script>
<script type="text/javascript" src="./_static/doctools.js"></script>
<script type="text/javascript" src="./_static/translations.js"></script>
<script type="text/javascript" src="./_static/main.js"></script>
<link rel="top" title="Ubuntu Packaging Guide" href="./index.html" />
<link rel="next" title="4. Den Quelltext bekommen" href="udd-getting-the-source.html" />
<link rel="prev" title="2. Allgemeine Übersicht über das debian/ Verzeichnis" href="debian-dir-overview.html" />
</head>
<body class="home">
<a name="top"></a>
<div class="header-navigation">
<div>
<nav role="navigation">
<ul>
<li class="page_item current_page_item"><a title="Inhalt" href="index.html">Inhalt</a>
<li>
<form id="form-search" method="get" action="search.html">
<fieldset>
<input id="input-search" type="text" name="q" value="Search" />
</fieldset>
</form>
</li>
</ul>
</nav>
<a class="logo-ubuntu" href="http://packaging.ubuntu.com/">
<img src="./_static/images/logo-ubuntu.png" width="119" height="27" alt="Ubuntu logo" />
</a>
<a href="http://packaging.ubuntu.com/"><h2>Packaging Guide</h2></a>
</div>
</div>
<div class="header-content">
<div class="clearfix">
<div class="header-navigation-secondary">
<div>
<nav role="navigation">
<ul class="clearfix">
<li class="page_item"><a style="margin-right: 10px"
href="udd-getting-the-source.html" title="4. Den Quelltext bekommen"
accesskey="N">weiter</a></li>
<li class="page_item"><a
href="debian-dir-overview.html" title="2. Allgemeine Übersicht über das debian/ Verzeichnis"
accesskey="P">zurück</a></li>
<li class="page_item"><a class="sub-nav-item" href="index.html">Ubuntu Packaging Guide »</a></li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="content" class="body container_12">
<div class="grid_12">
<!--<section id="main-section">-->
<div class="grid_9 alpha">
<div class="section" id="autopkgtest-automatic-testing-for-packages">
<h1>3. autopkgtest: Automatische Tests für Pakete<a class="headerlink" href="#autopkgtest-automatic-testing-for-packages" title="Permalink zu dieser Überschrift">¶</a></h1>
<p>Die <a class="reference external" href="http://anonscm.debian.org/gitweb/?p=autopkgtest/autopkgtest.git;a=blob_plain;f=doc/README.package-tests;hb=HEAD">DEP 8-Spezifikation</a> legt fest, wie automatische Tests sehr einfach in Pakete eingebunden werden können. Um einen Test in ein Paket einzubinden, müssen Sie nur folgendes machen:</p>
<ul>
<li><p class="first">fügen Sie folgendes zum Abschnitt “Source” in <tt class="docutils literal"><span class="pre">debian/control</span></tt> hinzu:</p>
<div class="highlight-python"><div class="highlight"><pre>XS-Testsuite: autopkgtest
</pre></div>
</div>
</li>
<li><p class="first">erstellen Sie eine Datei namens <tt class="docutils literal"><span class="pre">debian/tests/control</span></tt>, die die Anforderungen für die Testumgebung festlegt,</p>
</li>
<li><p class="first">fügen Sie die Tests in <tt class="docutils literal"><span class="pre">debian/tests/</span></tt> ein.</p>
</li>
</ul>
<div class="section" id="testbed-requirements">
<h2>3.1. Anforderungen für die Testumgebung<a class="headerlink" href="#testbed-requirements" title="Permalink zu dieser Überschrift">¶</a></h2>
<p>In <tt class="docutils literal"><span class="pre">debian/tests/control</span></tt> legen Sie fest, welche Anforderungen die Testumgebung erfüllen muss. Sie können zum Beispiel alle Pakete auflisten, die für die Tests benötigt werden, oder angeben, ob die Testumgebung beim Erstellen des Pakets beschädigt wird oder ob <tt class="docutils literal"><span class="pre">root</span></tt>-Rechte benötigt werden. Die <a class="reference external" href="http://anonscm.debian.org/gitweb/?p=autopkgtest/autopkgtest.git;a=blob_plain;f=doc/README.package-tests;hb=HEAD">DEP 8 specification</a> listet alle verfügbaren Optionen auf.</p>
<p>Im Folgenden schauen uns das Quellpaket <tt class="docutils literal"><span class="pre">glib2.0</span></tt> an. Im einfachsten Fall sieht die Datei so aus:</p>
<div class="highlight-python"><div class="highlight"><pre>Tests: build
Depends: libglib2.0-dev, build-essential
</pre></div>
</div>
<p>Das stellt für den Test <tt class="docutils literal"><span class="pre">debian/tests/build</span></tt> sicher, dass die Pakete <tt class="docutils literal"><span class="pre">libglib2.0-dev</span></tt> und <tt class="docutils literal"><span class="pre">build-essential</span></tt> installiert sind.</p>
<div class="admonition note">
<p class="first admonition-title">Bemerkung</p>
<p class="last">Sie können in der <tt class="docutils literal"><span class="pre">Depends</span></tt>-Zeile <tt class="docutils literal"><span class="pre">@</span></tt> benutzen, um festzulegen, dass Sie alle Pakete installiert haben wollen, die aus dem jeweiligen Quellpaket erzeugt werden.</p>
</div>
</div>
<div class="section" id="the-actual-tests">
<h2>3.2. Die eigentlichen Tests<a class="headerlink" href="#the-actual-tests" title="Permalink zu dieser Überschrift">¶</a></h2>
<p>Der passende Test für das obige Beispiel könnte folgender sein:</p>
<div class="highlight-sh"><div class="highlight"><pre><span class="c">#!/bin/sh</span>
<span class="c"># autopkgtest check: Build and run a program against glib, to verify that the</span>
<span class="c"># headers and pkg-config file are installed correctly</span>
<span class="c"># (C) 2012 Canonical Ltd.</span>
<span class="c"># Author: Martin Pitt <martin.pitt@ubuntu.com></span>
<span class="nb">set</span> -e
<span class="nv">WORKDIR</span><span class="o">=</span><span class="k">$(</span>mktemp -d<span class="k">)</span>
<span class="nb">trap</span> <span class="s2">"rm -rf $WORKDIR"</span> 0 INT QUIT ABRT PIPE TERM
<span class="nb">cd</span> <span class="nv">$WORKDIR</span>
cat <span class="s"><<EOF > glibtest.c</span>
<span class="s">#include <glib.h></span>
<span class="s">int main()</span>
<span class="s">{</span>
<span class="s"> g_assert_cmpint (g_strcmp0 (NULL, "hello"), ==, -1);</span>
<span class="s"> g_assert_cmpstr (g_find_program_in_path ("bash"), ==, "/bin/bash");</span>
<span class="s"> return 0;</span>
<span class="s">}</span>
<span class="s">EOF</span>
gcc -o glibtest glibtest.c <span class="sb">`</span>pkg-config --cflags --libs glib-2.0<span class="sb">`</span>
<span class="nb">echo</span> <span class="s2">"build: OK"</span>
<span class="o">[</span> -x glibtest <span class="o">]</span>
./glibtest
<span class="nb">echo</span> <span class="s2">"run: OK"</span>
</pre></div>
</div>
<p>An dieser Stelle wird ein sehr einfaches Stück C-Code in ein temporäres Verzeichnis geschrieben. Dies wird mit den Systembibliotheken übersetzt (wobei die Flags und Bibliothekpfade benutzt werden, wie sie uns von <cite>pkg-config</cite> geliefert werden). Dann wird der resultierende Binär-Code ausgeführt, der grundlegende Funtionen in glib testet.</p>
<p>Obwohl es sich um einen kleinen und simplen Test handelt, werden eine größere Anzahl von Systemkomponenten getestet. Dies hilft kritische Fehler früher zu entdecken.</p>
</div>
<div class="section" id="executing-the-test">
<h2>3.3. Den Test ausführen<a class="headerlink" href="#executing-the-test" title="Permalink zu dieser Überschrift">¶</a></h2>
<p>Das Test-Skript kann selbst ausgeführt werden, aber um sicherzustellen, dass der Test auch in der Testumgebung zufriedenstellend abläuft, bietet es sich an “adt-run” (im Paket “autopkgtest”) zu verwenden, um diesen Test auszuführen. Der einfachste Weg dazu ist diesen Befehl im Quellpfad auszuführen.</p>
<div class="highlight-python"><div class="highlight"><pre>sudo adt-run --no-built-binaries --built-tree=. --- adt-virt-null
</pre></div>
</div>
<p>Der Nachteil dieser Herangehensweise ist, dass du es zwar lokal testen kannst, aber nicht sicherstellen kannst, dass es in einer minimalen Umgebung funktioniert. Zum Beispiel ist es schwierig festzustellen, ob alle benötigten Pakete für die Versuche installiert sind. Mit ‘lp:auto-package-testing’ haben wir ein umfangreiches Hilfsmittel, welches auf Basis einer unveränderten virtuellen Machine die Tests durchführt. Um es einzurichten, musst du zuerst die benötigten Abhängigkeiten installieren:</p>
<div class="highlight-python"><div class="highlight"><pre>sudo apt-get install qemu-utils kvm eatmydata
</pre></div>
</div>
<p>Dann besorge dir den Quellcode von Launchpad:</p>
<div class="highlight-python"><div class="highlight"><pre>bzr branch lp:auto-package-testing
cd auto-package-testing
</pre></div>
</div>
<p>And provision a Trusty AMD64 system:</p>
<div class="highlight-python"><div class="highlight"><pre>./bin/prepare-testbed -r trusty amd64
</pre></div>
</div>
<p>This command will create a pristine Trusty AMD64 VM from a cloud image. To
run the tests, simply run:</p>
<div class="highlight-python"><div class="highlight"><pre>./bin/run-adt-test -r trusty -a amd64 \
-S file:///tmp/glib2.0-2.35.7/ glib2.0
</pre></div>
</div>
<p>Das würde das Quellpaket <tt class="docutils literal"><span class="pre">/tmp/glib2.0-2.35.7/</span></tt> auswählen und die Tests gegen das Paket <tt class="docutils literal"><span class="pre">glib2.0</span></tt> aus dem Archiv laufen lassen. Die Option <tt class="docutils literal"><span class="pre">-S</span></tt> unterstützt auch Quellen von bzr, git und apt. Wenn du nur eine Quelle mit <tt class="docutils literal"><span class="pre">-S</span></tt> festlegst, aber den Paketnamen nicht genauer bestimmst, wird diese Funktion stattdessen den Zweig aufbauen und die Binaries von dieser Version installieren; das ist nützlich wenn du Tests für ein neueres Paket durchführen willst als das welches in Ubuntu enthalten ist oder das Paket überhaupt nicht in Ubuntu existiert. Wenn du die Option <tt class="docutils literal"><span class="pre">-k</span></tt> setzt kannst du in die virtuelle Maschine wechseln nachdem die Tests durchgeführt wurden. Das macht es sehr einfach Fehler zu erkennen.</p>
<p>Die ‘auto-package-testing documentation’ hat viele andere wichtige Informationen für andere Testoptionen.</p>
</div>
<div class="section" id="further-examples">
<h2>3.4. Weitere Beispiele<a class="headerlink" href="#further-examples" title="Permalink zu dieser Überschrift">¶</a></h2>
<p>Diese Liste ist nicht vollständig, aber wird dir sicher einen guten Einblick geben wie automatisierte Testdurchläufe in Ubuntu implementiert und benutzt werden.</p>
<ul class="simple">
<li><p class="first">Die <a class="reference external" href="https://bazaar.launchpad.net/+branch/ubuntu/libxml2/files/head:/debian/tests/">libxml2 tests</a> sind sehr ähnlich. Sie enthalten auch eine Test-Kompilierung eines Stücks C-Code und führen es aus.</p>
</li>
<li><p class="first">Der Test ‘gtk+3.0 tests’ erwirkt außerdem einen Kompilierungs-, Link- und Durchlaufstest im ‘’build’’ Test. Es gibt einen zusätzlichen “python3-gi”-Test, welcher sicherstellt, dass die GTK-Bibliothek auch durch “Introspection” benutzt werden kann.</p>
</li>
<li><p class="first">In den <a class="reference external" href="https://bazaar.launchpad.net/+branch/ubiquity/files/head:/debian/tests/">ubiquity tests</a> wird die Test-Suite von Upstream (den Software-Autoren) ausgeführt.</p>
</li>
<li><p class="first">Die <a class="reference external" href="https://bazaar.launchpad.net/+branch/ubuntu/gvfs/files/head:/debian/tests/">gvfs tests</a> haben ausführliche Funktionalitätstests und sind sehr interessant, weil sie die Benutzung von CDs, Samba, DAV und anderen Dingen simulieren.</p>
</li>
</ul>
</div>
<div class="section" id="ubuntu-infrastructure">
<h2>3.5. Ubuntu Infrastruktur<a class="headerlink" href="#ubuntu-infrastructure" title="Permalink zu dieser Überschrift">¶</a></h2>
<p>Pakete, welche <tt class="docutils literal"><span class="pre">autopkgtest</span></tt> aktiviert haben, werden jedes mal, wenn Sie hochgeladen werden oder eine Ihrer Abhängigkeiten sich ändert, einem Testlauf unterzogen. Die Ausgabe der <a class="reference external" href="https://jenkins.qa.ubuntu.com/view/Trusty/view/AutoPkgTest/">automatisch laufenden autopkgtest-Tests</a> können im Internet angesehen werden und werden regelmäßig aktualisiert.</p>
<p>Debian hat bisher noch keine Infrastruktur für Automatisches Testen, aber Tests sollten trotzdem nach Debian weitergeleitet werden, denn DEP-8 ist eine Debian-Spezifikation und Debian-Entwickler und -Nutzer können Tests immerhin manuell ausführen.</p>
<p>Pakete in Debian mit dem Testsuite-Header werden außerdem automatisch hinzugefügt, wenn sie nach Ubuntu gesynced werden.</p>
</div>
<div class="section" id="getting-the-test-into-ubuntu">
<h2>3.6. Die Tests in Ubuntu bekommen<a class="headerlink" href="#getting-the-test-into-ubuntu" title="Permalink zu dieser Überschrift">¶</a></h2>
<p>Der Prozess, um einen autopkgtest in Ubuntu einzubringen ist größtenteils identisch mit <a class="reference internal" href="fixing-a-bug.html"><em>fixing a bug in Ubuntu</em></a>. Im Prinzip muss man einfach:</p>
<ul class="simple">
<li><p class="first">Führe <tt class="docutils literal"><span class="pre">bzr</span> <span class="pre">branch</span> <span class="pre">ubuntu:<Paketname></span></tt> aus,</p>
</li>
<li><p class="first">bearbeiten Sie <tt class="docutils literal"><span class="pre">debian/control</span></tt> um die Tests zu aktivitieren,</p>
</li>
<li><p class="first">fügen Sie ein <tt class="docutils literal"><span class="pre">debian/tests</span></tt>-Verzeichnis hinzu,</p>
</li>
<li><p class="first">schreiben Sie die <tt class="docutils literal"><span class="pre">debian/tests/control</span></tt>-Datei, basierend auf der <a class="reference external" href="http://anonscm.debian.org/gitweb/?p=autopkgtest/autopkgtest.git;a=blob_plain;f=doc/README.package-tests;hb=HEAD">DEP 8 Specification</a>,</p>
</li>
<li><p class="first">fügen Sie Ihre(n) Test(s) zu <tt class="docutils literal"><span class="pre">debian/tests</span></tt> hinzu,</p>
</li>
<li><p class="first">die Änderungen committen, sie nach Launchpad hochladen, und einen Merge vorschlagen, sie dann überprüfen lassen, genau wie jede andere Änderung an einem Quellpaket auch.</p>
</li>
</ul>
</div>
<div class="section" id="what-you-can-do">
<h2>3.7. Was du machen kannst<a class="headerlink" href="#what-you-can-do" title="Permalink zu dieser Überschrift">¶</a></h2>
<p>Das Ubuntu Engineering Team hat eine Liste von <a class="reference external" href="https://wiki.ubuntu.com/QATeam/RequiredTests">list of required test-cases</a> zusammengestellt, wo Pakete die Tests brauchen in verschiedene Kategorien aufgeteilt wurden. Hier kannst du eine Liste von Beispielen von Tests finden und das Schreiben der Tests Dir zuweisen.</p>
<p>Falls irgendwelche Probleme auftreten, kannst du dem <a class="reference external" href="http://webchat.freenode.net/?channels=ubuntu-quality">#ubuntu-quality IRC channel</a> beitreten, um in Kontakt mit den Entwicklern zu treten.</p>
</div>
</div>
<div class="divide"></div>
</div>
<div id="sidebar" class="grid_3 omega">
<div class="container-tweet">
<h3>Inhalt</h3>
<div class="toc">
<ul>
<li><a class="reference internal" href="#">3. autopkgtest: Automatische Tests für Pakete</a><ul>
<li><a class="reference internal" href="#testbed-requirements">3.1. Anforderungen für die Testumgebung</a></li>
<li><a class="reference internal" href="#the-actual-tests">3.2. Die eigentlichen Tests</a></li>
<li><a class="reference internal" href="#executing-the-test">3.3. Den Test ausführen</a></li>
<li><a class="reference internal" href="#further-examples">3.4. Weitere Beispiele</a></li>
<li><a class="reference internal" href="#ubuntu-infrastructure">3.5. Ubuntu Infrastruktur</a></li>
<li><a class="reference internal" href="#getting-the-test-into-ubuntu">3.6. Die Tests in Ubuntu bekommen</a></li>
<li><a class="reference internal" href="#what-you-can-do">3.7. Was du machen kannst</a></li>
</ul>
</li>
</ul>
</div>
<div class="browse-guide">
<h3>Browse The Guide:</h3>
<ul>
<li class="prev">
<a href="debian-dir-overview.html"
title="Vorheriges Thema: 2. Allgemeine Übersicht über das <tt class="docutils literal"><span class="pre">debian/</span></tt> Verzeichnis">Go Previous</a>
</li>
<li class="center">
<a title="Back to Index" href="index.html">Index Guide</a>
</li>
<li class="next">
<a href="udd-getting-the-source.html"
title="Nächstes Thema: 4. Den Quelltext bekommen">Go Next</a>
</li>
</ul>
<span>Diese Seite:</span> <a href="./_sources/auto-pkg-test.txt"
rel="nofollow">Quelltext anzeigen</a>
</div>
</div>
<div id="back_top"><a href="#top">Back to Top</a></div>
</div>
<!--</section>-->
</div>
</div>
<div class="shadow"></div>
<footer>
<div>
Version: 0.3.5.
<a href="https://bugs.launchpad.net/ubuntu-packaging-guide">Report bugs</a> or
<a href="https://code.launchpad.net/~ubuntu-packaging-guide-team/ubuntu-packaging-guide/trunk">grab the source code</a> from Launchpad.
Mit <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2 erstellt.
<br />
© Copyright 2010-2014 , Ubuntu Developers, Creative Commons Attribution-ShareAlike 3.0.
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">
<img alt="Creative Commons License" style="border-width:0"
src="./_static/images/cc-by-sa.png" /></a>
<br />
<a href="http://people.ubuntu.com/~mitya57/ubuntu-packaging-guide-readme.html#translating">Help translate</a> or
<a href="./_static/translators.html">view the list of translators</a>.
</div>
</footer>
</body>
</html>
|