This is an old revision of the document!
Table of Contents
Techniky pro efektivní implementaci uživatelského rozhraní. Příprava uživatelského rozhraní pro testování s/bez uživatele.
B4B39IUR Webové stránky předmětu
- Techniky pro efektivní implementaci uživatelského rozhraní:
- Implementace MVVM modelu – pomocí návrhových vzorů (např. observer, event-delegate, publish-subscribe). Řešení vztahu View-ViewModel pomocí návrhového vzoru “Data Binding”.
- Přizpůsobení (customization) UI komponent – pomocí šablon (DataTemplate, ControlTemplate), stylů a triggerů. Vytváření tzv. User Control a Custom Control.
- Validace uživatelského vstupu – pomocí validačních pravidel a interfaců (Data source exception, data error interface), případně vlastní validační třídou. Prezentace chyb pomocí šablon a triggerů.
- Příprava uživatelského rozhraní pro testování s/bez uživatele:
- Postupy pro důsledné oddělení jednotlivých částí software – podle vzoru MVC/MVP/MVVM. Vytváření UI test skriptu (testovací kód, nahrávání interakce, GUI ripping).
- Příprava software pro uživatelské testování – data mocking, podpora metody Wizard-of-Oz, sběr dat z chování software a interakce s uživatelem.
1. Techniky pro efektivní implementaci uživatelského rozhraní
Implementace MVVM modelu
MVVM (Model–View–ViewModel) umožňuje snadnou správu UI pomocí oddělení zodpovědností: ViewModel zajišťuje logiku a stav aplikace, zatímco View zůstává co nejjednodušší.
- Observer – Design pattern, ve kterém subjekt oznamuje všem zaregistrovaným posluchačům (pozorovatelům) změnu stavu.
- Event-Delegate – Mechanismus v C# pro realizaci observer vzoru pomocí delegate a event handlerů.
- Publish-Subscribe – Nezávislá komunikace komponent pomocí zasílání zpráv přes zprostředkovatelský kanál.
- Data Binding – Umožňuje propojení View a ViewModelu tak, aby se změny v datech automaticky promítly do UI; využívá XAML syntaxi a `INotifyPropertyChanged`.
- Příkazy (`ICommand`) – Objekty, které definují logiku vykonávání akcí v UI (např. kliknutí na tlačítko) a podmínky pro jejich aktivaci.
Přizpůsobení UI komponent
- Styly a triggery:
- `Style` – kolekce setterů, separace vzhledu od logiky.
- `Trigger` – mění vlastnosti na základě stavu (např. `IsMouseOver`).
- `DataTrigger`, `EventTrigger` – specifické reakce na změny dat a události.
- Šablony:
- `DataTemplate` – vizualizace datových objektů (např. ListBox).
- `ControlTemplate` – změna vizuálního stromu komponenty.
- `ContentTemplate` – kombinace obrázků a textu v tlačítkách.
- User Control vs Custom Control:
- *User Control* – složení komponent, snadné, nelze stylovat.
- *Custom Control* – pokročilé přizpůsobení, stylování a šablonování.
- Ukázky použití (z XAML):
- Tlačítko s obrázkem a textem.
- Styl s `StaticResource`.
- Triggery pro zvýraznění při hoveru.
Validace uživatelského vstupu
- Metody validace:
- `ExceptionValidationRule` – validace přes výjimky.
- `IDataErrorInfo` / `INotifyDataErrorInfo` – chybová zpráva per vlastnost.
- Custom ValidationRule – dědění a vlastní logika validace.
- Zobrazení chyb:
- `ErrorTemplate` – šablona zobrazení chybového stavu.
- `Style.Triggers` na `Validation.HasError` – tooltipy, změna barvy rámečku.
- Principy:
- Validace má být srozumitelná, neinvazivní, integrovaná do UI.
2. Příprava uživatelského rozhraní pro testování s/bez uživatele
Postupy pro důsledné oddělení částí systému
- Architektury:
- MVC – klasické oddělení logiky, prezentace a dat. Uživatel interaguje i s View.
- MVP – Presenter zajišťuje komunikaci, View pasivní.
- MVVM – silný binding, ViewModel poskytuje logiku.
- Designové vzory pro interakci:
- Wizard, Breadcrumb, Carousel, Undo, Drag&Drop.
- Deklarativní popis UI (XAML, HTML) umožňuje lepší udržovatelnost.
- UI testovací skripty:
- Manuální – přesně dané kroky.
- Automatizované – Selenium, QTP.
- Model-based testing – generování scénářů na základě UI struktury.
- GUI ripping – automatické mapování komponent a jejich vlastností.
Příprava software pro uživatelské testování
- Data mocking:
- Nahrazení reálných dat fiktivními daty.
- Simulace chybových stavů nebo absence backendu.
- Wizard-of-Oz:
- Simulace neexistující funkcionality člověkem.
- Umožňuje testovat např. hlasové ovládání bez jeho implementace.
- Sběr dat:
- Základní – videozáznamy, dotazníky, pozorování.
- Pokročilé – logy, eye-tracking, senzory, KLM model, Android Monkey.
- Testování bez uživatele:
- Heuristická evaluace – podle pravidel (např. Nielsen).
- Kognitivní průchod – simulace mentálního modelu uživatele krok po kroku.
- Co testovat:
- Funkčnost, dostupnost komponent, dokončení úkolů, chybovost, čitelnost.