Testy

V úlohách MDP a RL mají funkce find_policy_…() a learn_policy() vracet tzv. strategii (policy). V zadání se uvádí, že by měla být reprezentována slovníkem. Občas ale studenti odevzdají řešení, kde funkce vrací něco jiného, nebo obsah slovníku není formálně správný, což svědčí o tom, že neporozuměli dobře specifikacím. Jako autoři řešení byste měli sami být schopni otestovat, zda návratová hodnota funkce odpovídá požadavkům. Jak na to?

Požadavky na strategii

Jaké požadavky by tedy měla vrácená strategie (policy) splňovat?

  1. Jakým datovým typem má být strategie reprezentovaná?
  2. Kolik položek by měl tento slovník mít? Jak tento počet zjistím z prostředí (env)?
  3. Co mají představovat klíče slovníku? Jakého typu mají být?
  4. Co jsou hodnoty slovníku? Jakého typu mají být?
  5. Obsahuje slovník všechny klíče?
  6. Jaká konkrétní strategie by měla být vrácena pro nějaké jednoduché prostředí?

Úkoly

  • Pokuste se implementovat kontroly výše uvedených požadavků přímo v Pythonu.
  • Uspořádejte vhodně kód tak, abyste mohli tyto testy snadno spouštět prostřednictvím frameworku pytest.
  • Při implementaci jednotlivých algoritmů (value iteration, policy iteration, …) budete jistě používat spoustu podpůrných funkcí pro jednotlivé dílčí části, např. pro policy evaluation. Zkuste i pro tyto podpůrné funkce rozmyslet, jaké požadavky musí splňovat, a implementujte je ve formě pytest testů.

Proč?

Automatizované testy vám umožní

  • lépe pochopit/vyjasnit si jednotlivé požadavky, včetně rozhraní jednotlivých funkcí,
  • snadno spustit celou dávku testů najednou (a tím ověřit shodu s testovanými specifikacemi),
  • ověřit, že při změnách v kódu nedošlo ke změně důležitého (testovaného) chování,
courses/b3b33kui/semestralni_ulohy/testy/start.txt · Last modified: 2023/04/28 16:51 by xposik