Modulfenster geprueft; Screenshot-Verfahren in die Testanleitung aufgenommen
Nach der Lizenzaktivierung durch Richard sind alle vier Module aktiv - die Anwendung meldet "Lizenz gueltig (online geprueft)", der Cache steht auf valid, die Statusleiste zeigt vier Module. Damit ist D-2 live abgenommen, inklusive HWID v2 auf Basis der Linux-machine-id. Ein Stueck von Roadmap A3 nebenbei. Vier weitere Befunde: - B-9: In den Datumsfeldern erscheint statt des Kalendersymbols ein Artefakt. Die Icon-Schriftart fehlt unter Linux, Fontconfig ersetzt sie stillschweigend durch eine andere. Nur im Bild zu sehen, nie im Log. - B-10 (schwerwiegend, im vorigen Commit behoben): kein einziges DataGrid wurde gerendert. - B-11: Spaltenueberschriften werden abgeschnitten, die letzten drei Spalten zeigen gar keinen Text mehr. Genau der A5-Punkt Spaltenbreiten: die festen Pixelwerte stammen aus der WinForms-Fassung mit schmalerer Schrift. Nicht behoben - Spaltenbreiten legt man sinnvoll erst mit echten Daten fest. - B-12: Der Lizenzschluessel liegt im Klartext in server_settings.xml, obwohl die Projektkonvention Verschluesselung at-rest vorsieht und der Code beides unterstuetzt. Positiv: Die acht KPI-Kacheln im Accounting brechen sinnvoll um - eine offene A5-Frage ist damit beantwortet. docs/TESTUMGEBUNG-Linux-VM.md Abschnitt 4.7 neu: wie ein Agent Oberflaechen eigenstaendig begutachtet - Xvfb dauerhaft starten, mit xdotool navigieren, mit import aufnehmen, Ausschnitte vergroessern, Kontraste nachmessen. Mit den Lehren aus diesem Durchgang: grosszuegige Wartezeiten, nur eine Instanz gleichzeitig (sonst kollidiert die zweite mit dem systemd-Dienst in der Datenbank), und auf Zeichen achten, die falsch aussehen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -77,7 +77,9 @@ Test: `ssh testvm "hostname"`
|
||||
| .NET SDK | 10.0.111 (Runtime 10.0.11) | SDK, nicht nur Runtime — auf der VM kann gebaut werden |
|
||||
| MariaDB | 11.8.6 | Dienst `mariadb`, lauscht auf `localhost:3306` |
|
||||
| Git | 2.53.0 | |
|
||||
| Xvfb | vorhanden | Virtueller Framebuffer für GUI-Tests ohne Bildschirm |
|
||||
| Xvfb | vorhanden | Virtueller Framebuffer für GUI-Tests ohne Bildschirm (siehe 4.7) |
|
||||
| xdotool | vorhanden | Klicks und Tastatureingaben skripten |
|
||||
| ImageMagick | vorhanden | `import` für Bildschirmaufnahmen, `convert` zum Zuschneiden |
|
||||
| JetBrains Rider | vorhanden | |
|
||||
| Docker | **nicht** installiert | |
|
||||
| Node.js | **nicht** installiert | |
|
||||
@@ -159,14 +161,78 @@ nicht dauerhaft und niemals auf einer Produktivmaschine.
|
||||
|
||||
### 4.6 GUI-Anwendungen ohne Bildschirm testen
|
||||
|
||||
Braucht eine Anwendung X11, scheitert sie über SSH mit `XOpenDisplay failed`. Lösung:
|
||||
Braucht eine Anwendung X11, scheitert sie über SSH mit `XOpenDisplay failed`. Für einen einzelnen
|
||||
Durchlauf genügt:
|
||||
|
||||
```bash
|
||||
xvfb-run -a ./MeineAnwendung --irgendein-schalter
|
||||
```
|
||||
|
||||
Für einen Test **mit sichtbarem Fenster** muss jemand am Desktop der VM sitzen (oder RDP nutzen,
|
||||
Port 3389 ist offen) und Bildschirmfotos machen.
|
||||
### 4.7 Oberflächen selbst begutachten — ohne Bildschirm, ohne fremde Hilfe
|
||||
|
||||
**Ein Agent kann die Oberfläche eigenständig prüfen.** Kein Mensch muss am Bildschirm sitzen und
|
||||
Bildschirmfotos schicken. Das Verfahren hat sich am 26.08.2026 bewährt und **sieben Befunde
|
||||
zutage gefördert**, darunter einen, der sämtliche Tabellen der Anwendung unsichtbar machte.
|
||||
|
||||
Drei Werkzeuge, alle installiert: **Xvfb** (virtuelles Display), **xdotool** (Klicken und Tippen),
|
||||
**ImageMagick** (`import` für Aufnahmen, `convert` zum Zuschneiden).
|
||||
|
||||
Anders als `xvfb-run` wird das Display hier **dauerhaft** gestartet, damit sich zwischen den
|
||||
Aufnahmen navigieren lässt:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
cd ~/<projekt>-test
|
||||
export DISPLAY=:99
|
||||
|
||||
pkill -f "Xvfb :99" 2>/dev/null; sleep 1
|
||||
Xvfb :99 -screen 0 1600x1000x24 >/dev/null 2>&1 &
|
||||
sleep 3
|
||||
|
||||
nohup ./MeineAnwendung > /tmp/gui.log 2>&1 &
|
||||
APP=$!
|
||||
sleep 25 # Startzeit großzügig bemessen
|
||||
|
||||
# Fenster-ID ermitteln (bestaetigt, dass die Oberflaeche ueberhaupt erscheint)
|
||||
xdotool search --name "^MeinFenstertitel$" | head -1
|
||||
|
||||
# navigieren und aufnehmen
|
||||
shoot() { sleep 5; import -window root /tmp/v_$1.png; }
|
||||
shoot 1_start
|
||||
xdotool mousemove 127 205 click 1; shoot 2_zweite_ansicht
|
||||
xdotool mousemove 127 237 click 1; shoot 3_dritte_ansicht
|
||||
|
||||
kill $APP 2>/dev/null; sleep 2; pkill -f "Xvfb :99" 2>/dev/null
|
||||
```
|
||||
|
||||
Danach die Bilder abholen und ansehen:
|
||||
|
||||
```bash
|
||||
scp testvm:'/tmp/v_*.png' .
|
||||
```
|
||||
|
||||
**Was sich dabei bewährt hat:**
|
||||
|
||||
- **Großzügige Wartezeiten.** 25 Sekunden nach dem Start, 5 Sekunden nach jedem Klick. Wird zu
|
||||
früh aufgenommen, entsteht ein halb gezeichnetes Fenster, und man sucht Fehler, die keine sind.
|
||||
- **Klickpunkte aus dem ersten Bild ablesen.** Erst eine Aufnahme machen, dort die Koordinaten der
|
||||
Menüpunkte bestimmen, dann das Skript damit bestücken.
|
||||
- **Details vergrößern statt raten.** Bei einem Verdacht den Ausschnitt herausschneiden:
|
||||
```bash
|
||||
convert v_1_start.png -crop 560x130+265+540 +repage -resize 200% /tmp/detail.png
|
||||
```
|
||||
- **Kontraste nachmessen statt schätzen.** Ob Text lesbar ist, lässt sich ausrechnen — Pixelfarben
|
||||
auslesen und das WCAG-Verhältnis bestimmen (4,5:1 für normalen Text). So wird aus „wirkt blass"
|
||||
ein belegter Befund.
|
||||
- **Nur eine Instanz gleichzeitig.** Läuft der systemd-Dienst noch, schreiben zwei Prozesse in
|
||||
dieselbe Datenbank und es entstehen Fehler, die nichts mit der Oberfläche zu tun haben. Vorher
|
||||
`sudo systemctl stop <projekt>`.
|
||||
- **Auf Zeichen achten, die falsch aussehen.** Fehlt eine Icon-Schriftart, ersetzt Fontconfig sie
|
||||
stillschweigend durch etwas anderes — ein Kalendersymbol wird dann zu einer sinnlosen Zahl. Das
|
||||
fällt nur im Bild auf, nie im Log.
|
||||
|
||||
Für einen Test **mit echtem Bildschirm** kann trotzdem jemand am Desktop der VM sitzen (oder RDP
|
||||
nutzen, Port 3389 ist offen) — nötig ist es für die Sichtprüfung nicht.
|
||||
|
||||
---
|
||||
|
||||
@@ -205,7 +271,8 @@ Port 3389 ist offen) und Bildschirmfotos machen.
|
||||
| 5000 | vorhandener Dienst (nur IPv6-localhost) |
|
||||
| 631 | CUPS |
|
||||
|
||||
**Nachträglich installiert:** MariaDB 11.8.6, Xvfb (beide am 26.08.2026 für PolyTrader).
|
||||
**Nachträglich installiert:** MariaDB 11.8.6, Xvfb, xdotool, ImageMagick, x11-utils
|
||||
(alle am 26.08.2026 für PolyTrader).
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user