Commit 00a9b3f1 authored by Klaus-Dieter Quibeldey-Cirkel's avatar Klaus-Dieter Quibeldey-Cirkel
Browse files

revise demo cardset

parent 17e43046
......@@ -628,8 +628,8 @@
"navigationDisabled": "Karte wird gewechselt…",
"cardType0": {
"name": "Lernkartei",
"longName": "Lernkartei (Lernzielfrage | Vertiefung | Fazit | Literatur)",
"content1": "Lernzielfrage",
"longName": "Lernkartei (Lernziel | Vertiefung | Fazit | Literatur)",
"content1": "Lernziel",
"content2": "Fazit",
"content3": "Literatur ",
"content4": "Vertiefung",
......
{"name":"B: Beispiel für eine Lernkarte","description":"Die Lernkartei ist Teil der Demo-Kartei, siehe den roten Button auf der Startseite.","date":"2018-05-25T07:24:31.276Z","dateUpdated":"2018-07-01T06:34:01.983Z","editors":[],"owner":"jCZ6oHcbZhJaKKodN","visible":false,"ratings":true,"kind":"personal","price":0,"reviewed":false,"reviewer":"undefined","request":false,"relevance":0,"raterCount":0,"quantity":1,"license":["by","nc","sa"],"userDeleted":false,"learningActive":false,"maxCards":1,"daysBeforeReset":7,"learningStart":"2018-05-25T07:24:31.276Z","learningEnd":"2038-01-19T19:42:43.323Z","learningInterval":[1,3,7,28,84],"learners":1,"wordcloud":true,"shuffled":false,"cardType":0,"difficulty":1,"originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}, {"subject":"Die Test-Pyramide","difficulty":1,"centerTextElement":[false,false,false,false],"date":"2018-05-25T07:31:40.262Z","learningGoalLevel":0,"backgroundStyle":1,"learningIndex":"0","learningUnit":"0","cardType":0,"front":"!!! TIP Hinweis\n Diese **Lernkarte** bereitet den Inhalt des Artikels [The Practical Test Pyramid](https://martinfowler.com/articles/practical-test-pyramid.html) von Ham Vocke auf. Im Zentrum steht die **Test Pyramide** von Mike Cohn und die **Testautomation** im Kontext einer _Continuous Delivery Pipeline_. Das Thema Testautomation wurde von den Teilnehmern des Master-Informatikkurses \"Continuous Delivery\" im SoSe 2018 am Fachbereich MNI der THM bearbeitet.</br></br>Während des Semesters erstellten die Studenten auf .cards jeder für sich ein Kursglossar, Lernkarteien zu einzelnen Kursinhalten, eine Zitatensammlung und eine Prüfungskartei mit insgesamt ca. 200 Karten. In den Sommerferien lernten sie kontinuierlich ca. 500 Karten -- max. 20 täglich -- nach der [5-Fächer-Lernmethode von Sebastian Leitner](https://de.wikipedia.org/wiki/Lernkartei). Wer dies befolgte, erhielt für seine Lernleistung einen Bonus von 15 Prozent auf die Klausurnote. Die Klausur umfasste 15 zufällige Lernziel- und Prüfungsfragen aus allen Lern- und Prüfungskarteien sowie eine Transferaufgabe.\n\n!!! NOTE Danksagung\n Die Lernkarte basiert auf einer Exzerpt-Karte des Kursteilnehmers Felix Brück. \n\n---\n\nDie Test-Pyramide von Mike Cohn dient als **Metapher für die Testautomation**.\n\n![Test-Pyramide nach Mike Cohn ([Zeichnung von Ham Vocke](https://martinfowler.com/articles/practical-test-pyramid.html))](https://martinfowler.com/articles/practical-test-pyramid/testPyramid.png)\n\n!!! Tip Lernziel\n Sie sollen den Aufbau der Test-Pyramide beschreiben können und verstehen, welche automatisierten Tests in welcher Quantität und Qualität für eine CI/CD-Pipeline erforderlich sind. </br> </br>\n\n","dateUpdated":"2018-07-01T06:34:01.956Z","back":"Die **Test-Pyramide** ist ein Konzept, ursprünglich von **Mike Cohn** vorgestellt, das eine anschauliche Gliederung von automatisierten Testprozessen in drei Schichten vorschlägt:\n\n1. **Unit Tests** (viele und möglichst kleine Tests von Funktionen und Klassen)\n2. **Service Tests** (weitere, gröbere Tests unter Beteiligung externer Dienste)\n3. **User Interface Tests** (möglichst wenige End-to-End-Akzeptanztests)\n\n!!! Tip Merke \n Tests werden mit **unterschiedlicher Granularität** geschrieben und **je höher die Ebene, desto weniger Tests**! </br></br>\n","hint":"**Fowler, Martin (2006)**: *”TestDouble”*. Online-Artikel, veröffentlicht: 17. Januar 2006. URL: https://martinfowler.com/bliki/TestDouble.html (Stand: 25.05.2018). \n\n**Vocke, Ham (2018)**: *\"The Practical Test Pyramid\"*. Online-Artikel, veröffentlicht: 26. Februar 2018. URL: https://martinfowler.com/articles/practical-test-pyramid.html (Stand: 25.05.2018)\n\n![\"The Practical Test Pyramid\", Zeichnung von Ham Vocke](https://martinfowler.com/articles/practical-test-pyramid/teaser.png)\n","lecture":"# The Importance of (Test) Automation\nSoftware wird immer wichtiger und bestimmt zunehmend den Alltag. Um mithalten zu können, muss Software schneller entwickelt werden können, ohne an Qualität einzubüßen. \n\n**Continuous Delivery**, ist eine Praxis, bei der eine **Buildpipeline** zum automatischen Testen eingesetzt wird und die damit einen beschleunigten Softwareentwicklungsprozess unterstützen kann, indem sie repetitive, umständliche, händische Tests durch Automatisierung ersetzen und effizienter machen.\n\n# The Test Pyramid\n![Die Test-Pyramide](https://martinfowler.com/articles/practical-test-pyramid/testPyramid.png)\n\nDie **Test-Pyramide** ist ein Konzept, ursprünglich von *Mike Cohn* vorgestellt, das eine simple Gliederung bei der Erstellung von Testsuiten in grob drei Schichten vorschlägt:\n\n1. **Unit Tests** *(viele und möglichst kleine Tests)*\n2. **Service Tests** *(weitere, gröbere Tests)*\n3. **User Interface Tests** *(möglichst wenige High-Level End-to-End-Tests)*\n\n!!! Tip Merke \n Tests werden mit **unterschiedlicher Granularität** geschrieben und **je höher die Ebene, desto weniger Tests**\n\n\n# Unit Tests\n![Unit Tests ersetzen externe Objekte mit Test Doubles](https://martinfowler.com/articles/practical-test-pyramid/unitTest.png)\n\n**Unit Tests** dienen als eine Art Sicherheitsnetz bei Codeänderungen (weshalb sie auch nicht zu stark an die Implementierung gebunden sein sollten) ([Vocke 2018](https://martinfowler.com/articles/practical-test-pyramid.html#WhatToTest)).\n\nAllgemein soll getestet werden, ob eine **Unit** (Einheit) so funktioniert wie erwartet. Dabei ist nicht genau definiert, was eine „Unit“ ist. In einer funktionalen Programmiersprache wären dies z.B. Funktionen, in einer OO Sprache könnten es einzelne Methoden oder ganze Klassen sein [Vocke 2018](https://martinfowler.com/articles/practical-test-pyramid.html#UnitTests).\n\n## Mocking and Stubbing\nUm automatische Tests einfach und möglichst schnell zu halten, werden **Mocks** und **Stubs** benutzt, die anstelle von z.B. teuren Datenbankaufrufen oder HTTP-Queries verwendet werden. Außerdem dienen sie zur Vermeidung von Seiteneffekten und komplexen Testsetups. Es werden also reale Module/Klassen/Funktionen/etc. durch Fake-Versionen ersetzt, die dieselbe Signatur aufweisen. \nDiese sogenannten **Test Doubles** umfassen u.a. (vgl. [Fowler 2006](https://martinfowler.com/bliki/TestDouble.html)):\n- **Mocks**: Sind vorprogrammiert mit Erwartungen an Aufrufen, die sie gemäß den Spezifikationen ihrer realen Vorbilder erhalten sollten, um zu testen, ob alle erwarteten Aktionen ausgeführt werden. Bei unerwarteten Aufrufen können sie Exceptions auswerfen.\n\n- **Stubs**: Sie enthalten vorgefertigte Antworten, die sie für Aufrufe während der Testphase verwenden.\n\n!!! NOTE Hinweis\n Es wird oft unterschieden zwischen **solitary Unit Tests**, bei denen alles durch Stubs und Mocks ersetzt wird und **sociable Unit Tests**, bei denen teilweise mit den realen Objekten getestet wird.\n\n## What to Test?\nGrundsätzlich können Unit Tests für alle Klassen (unabhängig von ihrer Funktion) eingesetzt werden. Es empfiehlt sich jedoch, nur **eine Testklasse pro Produktions-Klasse** zu schreiben. Dabei sollte eine Testklasse **mindestens das *public*-Interface der Klasse abdecken**. ([Vocke 2018](https://martinfowler.com/articles/practical-test-pyramid.html#WhatToTest))\n\nUnit Tests sollten nicht 100% des Codes abdecken, sondern sich auf nicht-trivialen Testpfade (z.B. Happy Path und Grenzwerte) beschränken. Dabei sollten sie nicht zu implementierungsspezifisch sein, da sie sonst - etwa nach einem Refactoring - umgeschrieben werden müssten.\n\n## Test Structure\nEine gute und grundlegende Struktur für Tests allgemein, sieht wie folgt aus (vgl. [Vocke 2018](https://martinfowler.com/articles/practical-test-pyramid.html#TestStructure)):\n1. Testdaten einrichten\n2. Zu testende Methode aufrufen\n3. Sicherstellen, dass die erwarteten Ergebnisse zurückgegeben werden.\nDiese kann man sich auch durch die Alliteration [Arrange, Act, Assert](https://xp123.com/articles/3a-arrange-act-assert/) merken.\n\n\n\n# Integration Tests\nWie der Name vermuten lässt, testen **Integration Tests** die Integration der eigenen Applikation mit applikationsexternen Services (Datenbank, Dateisystem, Netzwerkaufrufe, REST APIs, etc.).\nEs geht also um Fälle, in denen Aktionen die Integration externer Dinge triggern. \n\nIm Falle eines Datenbankaufrufs, könnte dies bspw. so aussehen:\n1. Datenbank starten\n2. Applikation mit DB verbinden\n3. Funktion triggern, die in die DB schreibt\n4. Testen, ob die erwarteten Daten geschrieben wurden, indem man sie aus der DB lädt\n\nGenerell sollten Integration Tests für alle Fälle geschrieben werden, bei denen **Daten serialisiert oder deserialisiert** werden, um sicherzustellen, dass alle externen Abhängigkeiten/Kollaborateure wie erwartet funktionieren. Also z.B. bei:\n- Aufrufe an REST APIs\n- Lesen/Schreiben auf Datenbanken oder Queues\n- Schreiben auf das Dateisystem\n\nEs sollte dabei mit lokalen Instanzen der Abhängigkeiten gearbeitet werden und **nicht mit realen Produktivsystemen** (bei unzähligen automatisierten Tests kann dies im schlimmsten Falle zu einem Denial of Service führen). Ist es nicht möglich, eine eigene Instanz laufen zu lassen, sollten Fake-Versionen implementiert werden, die das reale Verhalten nachahmen. \n\n![Integration mit separatem Service](https://martinfowler.com/articles/practical-test-pyramid/httpIntegrationTest.png)\n\n\n# Contract Tests\nEs kann sein, dass Softwareentwicklung derart organisiert ist, dass unterschiedliche Teams an unterschiedlichen Serviceimplementierungen arbeiten, die zum Schluss zu einem großen, zusammenhängenden System zusammengefügt werden. \n\nDiese unterschiedlichen Services kommunizieren über Interfaces miteinander (dazu nutzen sie etwa REST und JSON via HTTPS, RPC oder bei einer eventgesteuerten, asynchronen Anwendung via Queues oder Channels). Dann ist immer ein Service ein **Consumer** (der Daten abruft) und der andere ein **Provider** (der Daten bereitstellt). </br>(Bei asynchronen Anwendungen auch **Publisher** und **Subscriber**).\n\nDie Spezifikation eines Interfaces kann als **Contract** (Vertrag) angesehen werden.\n\nBeim **Consumer-Driven Contract Test (CDC)** übernimmt das Team des Consumer-Services die Implementierung des Vertrags. Es schreibt also Tests, die das Interface auf alle Daten prüfen, die es benötig/erwartet, um diese dann an das Provider-Team weiterzugeben. Dieses entwickelt nun die API nach diesen Tests. Dabei durchlaufen alle Änderungen kontinuierlich die Tests in der Buildpipeline. Bei Problemen tauschen sich die Teams aus. (Vgl. [Vocke 2018](https://martinfowler.com/articles/practical-test-pyramid.html#ContractTests))\n\n![Consumer-Driven Contract Tests](https://martinfowler.com/articles/practical-test-pyramid/cdc_tests.png)\n\n\n# UI Tests\n**UI Tests** prüfen, ob das User Interface wie erwartet auf Interaktionen reagiert (dazu zählen Webinterfaces genauso, wie Kommandozeilen-Interfaces oder REST API). Dabei kann auf Dinge geachtet werden wie *Verhalten, Layout, Usability* oder *Wahrung des Corporate Designs*.\n\nUI Tests müssen keine vollständigen End-to-End-Tests sein. Dies kann z.B. auch mit Unit Tests gemacht werden, in dem der Frontend-Code mit Backend-Stubs getestet wird.\n\n![](https://martinfowler.com/articles/practical-test-pyramid/ui_tests.png)\n\n!!! NOTE\n Während das Verhalten automatisiert (z.B. mit Tools wie Selenium) getestet werden kann, kommt man spätestens beim Look & Feel an die Grenzen der Automatisierung.\n\n\n# End-to-End Tests\n**End-to-End Tests** (manchmal auch **Broad Stack Tests**) prüfen die Applikation über ihr eigenes Interface. UI Tests können ebenfalls zu hierzu zählen.\n\nJe komplexer das User Interface ist, desto mehr Probleme können bei Tests auftreten. Doch auch Eigenarten unterschiedlicher Browser können Fehlverhalten verursachen.\nBei Entwicklung der Tests sollte sich auf die Kernanwendungen/interaktionen der Endnutzer konzentriert werden, um Vorlagen für automatisierte Tests dafür zu erstellen (bspw. Produktsuche, Warenkorb und Bezahlen in einem Webshop).\n\nDiese Tests sind sehr zeit- und ressourcenaufwendig und sollten – wie von Cohn empfohlen – auf ein Minimum reduziert werden. Die Lowlevel-Funktionen sollten sowieso bereits auf den unteren Ebenen der **Test-Pyramide** getestet worden sein.\n\n![End-to-End Tests testen das ganze, voll integrierte System](https://martinfowler.com/articles/practical-test-pyramid/e2etests.png)\n\n# Weitere Anmerkungen\n- Neben automatisierten Tests ist es auch sinnvoll, einige Tests selbst durchzuführen und zu testen, wie man Fehlverhalten der eigenen Anwendung provozieren kann. Feedback und Ergebnisse können dokumentiert werden, um sie später in die Tests zu integrieren.\n\n- Es dreht sich beim automatisierten Testen alles um schnelles Feedback. Es ist daher sinnvoll, die Testpipeline so zu gestalten, dass langsame Tests gegen Ende ablaufen, um die einfachen und schnellen nicht aufzuhalten.","originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}
\ No newline at end of file
{"name":"B: Beispiel für eine Lernkarte","description":"Die Lernkartei ist Teil der Demo-Kartei, siehe den roten Button auf der Startseite.","date":"2018-05-25T07:24:31.276Z","dateUpdated":"2018-07-06T04:27:51.347Z","editors":[],"owner":"jCZ6oHcbZhJaKKodN","visible":false,"ratings":true,"kind":"personal","price":0,"reviewed":false,"reviewer":"undefined","request":false,"relevance":0,"raterCount":0,"quantity":1,"license":["by","nc","nd"],"userDeleted":false,"learningActive":false,"maxCards":1,"daysBeforeReset":7,"learningStart":"2018-05-25T07:24:31.276Z","learningEnd":"2038-01-19T19:42:43.323Z","learningInterval":[1,3,7,28,84],"learners":1,"wordcloud":false,"shuffled":false,"cardType":0,"difficulty":1,"originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}, {"subject":"Test-Pyramide","difficulty":1,"centerTextElement":[false,false,false,false],"date":"2018-05-25T07:31:40.262Z","learningGoalLevel":0,"backgroundStyle":1,"learningIndex":"0","learningUnit":"0","cardType":0,"front":"Die Test-Pyramide von Mike Cohn dient als **Metapher für die Testautomation**.\n\n![Test-Pyramide nach Mike Cohn ([Zeichnung von Ham Vocke](https://martinfowler.com/articles/practical-test-pyramid.html))](https://martinfowler.com/articles/practical-test-pyramid/testPyramid.png)\n\n!!! Tip Lernziel\n Sie sollen den Aufbau der Test-Pyramide beschreiben können und verstehen, welche automatisierten Tests in welcher Quantität und Qualität für eine CI/CD-Pipeline erforderlich sind. </br> </br>\n\n","dateUpdated":"2018-07-06T04:27:51.338Z","back":"Die **Test-Pyramide** ist ein Konzept, ursprünglich von **Mike Cohn** vorgestellt, das eine anschauliche Gliederung von automatisierten Testprozessen in drei Schichten vorschlägt:\n\n1. **Unit Tests** (viele und möglichst kleine Tests von Funktionen und Klassen)\n2. **Service Tests** (weitere, gröbere Tests unter Beteiligung externer Dienste)\n3. **User Interface Tests** (möglichst wenige End-to-End-Akzeptanztests)\n\n!!! Tip Merke \n Tests werden mit **unterschiedlicher Granularität** geschrieben und **je höher die Ebene, desto weniger Tests**! </br></br>\n","hint":"**Fowler, Martin (2006)**: *”TestDouble”*. Online-Artikel, veröffentlicht: 17. Januar 2006. URL: https://martinfowler.com/bliki/TestDouble.html (Stand: 25.05.2018). \n\n**Vocke, Ham (2018)**: *\"The Practical Test Pyramid\"*. Online-Artikel, veröffentlicht: 26. Februar 2018. URL: https://martinfowler.com/articles/practical-test-pyramid.html (Stand: 25.05.2018)\n\n![\"The Practical Test Pyramid\", Zeichnung von Ham Vocke](https://martinfowler.com/articles/practical-test-pyramid/teaser.png)\n\n---\n\n!!! TIP Hinweis\n Diese **Lernkarte** bereitet den Inhalt des Artikels [The Practical Test Pyramid](https://martinfowler.com/articles/practical-test-pyramid.html) von Ham Vocke auf. Im Zentrum steht die **Test Pyramide** von Mike Cohn und die **Testautomation** im Kontext einer _Continuous Delivery Pipeline_. Das Thema Testautomation wurde von den Teilnehmern des Master-Informatikkurses \"Continuous Delivery\" im SoSe 2018 am Fachbereich MNI der THM bearbeitet.</br></br>Während des Semesters erstellten die Studenten auf .cards jeder für sich ein Kursglossar, Lernkarteien zu einzelnen Kursinhalten, eine Zitatensammlung und eine Prüfungskartei mit insgesamt ca. 200 Karten. In den Sommerferien lernten sie kontinuierlich ca. 500 Karten -- max. 20 täglich -- nach der [5-Fächer-Lernmethode von Sebastian Leitner](https://de.wikipedia.org/wiki/Lernkartei). Wer dies befolgte, erhielt für seine Lernleistung einen Bonus von 15 Prozent auf die Klausurnote. Die Klausur umfasste 15 zufällige Lernziel- und Prüfungsfragen aus allen Lern- und Prüfungskarteien sowie eine Transferaufgabe.\n\n!!! NOTE Danksagung\n Die Lernkarte basiert auf einer Exzerpt-Karte des Kursteilnehmers Felix Brück. ","lecture":"# The Importance of (Test) Automation\nSoftware wird immer wichtiger und bestimmt zunehmend den Alltag. Um mithalten zu können, muss Software schneller entwickelt werden können, ohne an Qualität einzubüßen. \n\n**Continuous Delivery**, ist eine Praxis, bei der eine **Buildpipeline** zum automatischen Testen eingesetzt wird und die damit einen beschleunigten Softwareentwicklungsprozess unterstützen kann, indem sie repetitive, umständliche, händische Tests durch Automatisierung ersetzen und effizienter machen.\n\n# The Test Pyramid\n![Die Test-Pyramide](https://martinfowler.com/articles/practical-test-pyramid/testPyramid.png)\n\nDie **Test-Pyramide** ist ein Konzept, ursprünglich von *Mike Cohn* vorgestellt, das eine simple Gliederung bei der Erstellung von Testsuiten in grob drei Schichten vorschlägt:\n\n1. **Unit Tests** *(viele und möglichst kleine Tests)*\n2. **Service Tests** *(weitere, gröbere Tests)*\n3. **User Interface Tests** *(möglichst wenige High-Level End-to-End-Tests)*\n\n!!! Tip Merke \n Tests werden mit **unterschiedlicher Granularität** geschrieben und **je höher die Ebene, desto weniger Tests**\n\n\n# Unit Tests\n![Unit Tests ersetzen externe Objekte mit Test Doubles](https://martinfowler.com/articles/practical-test-pyramid/unitTest.png)\n\n**Unit Tests** dienen als eine Art Sicherheitsnetz bei Codeänderungen (weshalb sie auch nicht zu stark an die Implementierung gebunden sein sollten) ([Vocke 2018](https://martinfowler.com/articles/practical-test-pyramid.html#WhatToTest)).\n\nAllgemein soll getestet werden, ob eine **Unit** (Einheit) so funktioniert wie erwartet. Dabei ist nicht genau definiert, was eine „Unit“ ist. In einer funktionalen Programmiersprache wären dies z.B. Funktionen, in einer OO Sprache könnten es einzelne Methoden oder ganze Klassen sein [Vocke 2018](https://martinfowler.com/articles/practical-test-pyramid.html#UnitTests).\n\n## Mocking and Stubbing\nUm automatische Tests einfach und möglichst schnell zu halten, werden **Mocks** und **Stubs** benutzt, die anstelle von z.B. teuren Datenbankaufrufen oder HTTP-Queries verwendet werden. Außerdem dienen sie zur Vermeidung von Seiteneffekten und komplexen Testsetups. Es werden also reale Module/Klassen/Funktionen/etc. durch Fake-Versionen ersetzt, die dieselbe Signatur aufweisen. \nDiese sogenannten **Test Doubles** umfassen u.a. (vgl. [Fowler 2006](https://martinfowler.com/bliki/TestDouble.html)):\n- **Mocks**: Sind vorprogrammiert mit Erwartungen an Aufrufen, die sie gemäß den Spezifikationen ihrer realen Vorbilder erhalten sollten, um zu testen, ob alle erwarteten Aktionen ausgeführt werden. Bei unerwarteten Aufrufen können sie Exceptions auswerfen.\n\n- **Stubs**: Sie enthalten vorgefertigte Antworten, die sie für Aufrufe während der Testphase verwenden.\n\n!!! NOTE Hinweis\n Es wird oft unterschieden zwischen **solitary Unit Tests**, bei denen alles durch Stubs und Mocks ersetzt wird und **sociable Unit Tests**, bei denen teilweise mit den realen Objekten getestet wird.\n\n## What to Test?\nGrundsätzlich können Unit Tests für alle Klassen (unabhängig von ihrer Funktion) eingesetzt werden. Es empfiehlt sich jedoch, nur **eine Testklasse pro Produktions-Klasse** zu schreiben. Dabei sollte eine Testklasse **mindestens das *public*-Interface der Klasse abdecken**. ([Vocke 2018](https://martinfowler.com/articles/practical-test-pyramid.html#WhatToTest))\n\nUnit Tests sollten nicht 100% des Codes abdecken, sondern sich auf nicht-trivialen Testpfade (z.B. Happy Path und Grenzwerte) beschränken. Dabei sollten sie nicht zu implementierungsspezifisch sein, da sie sonst - etwa nach einem Refactoring - umgeschrieben werden müssten.\n\n## Test Structure\nEine gute und grundlegende Struktur für Tests allgemein, sieht wie folgt aus (vgl. [Vocke 2018](https://martinfowler.com/articles/practical-test-pyramid.html#TestStructure)):\n1. Testdaten einrichten\n2. Zu testende Methode aufrufen\n3. Sicherstellen, dass die erwarteten Ergebnisse zurückgegeben werden.\nDiese kann man sich auch durch die Alliteration [Arrange, Act, Assert](https://xp123.com/articles/3a-arrange-act-assert/) merken.\n\n\n\n# Integration Tests\nWie der Name vermuten lässt, testen **Integration Tests** die Integration der eigenen Applikation mit applikationsexternen Services (Datenbank, Dateisystem, Netzwerkaufrufe, REST APIs, etc.).\nEs geht also um Fälle, in denen Aktionen die Integration externer Dinge triggern. \n\nIm Falle eines Datenbankaufrufs, könnte dies bspw. so aussehen:\n1. Datenbank starten\n2. Applikation mit DB verbinden\n3. Funktion triggern, die in die DB schreibt\n4. Testen, ob die erwarteten Daten geschrieben wurden, indem man sie aus der DB lädt\n\nGenerell sollten Integration Tests für alle Fälle geschrieben werden, bei denen **Daten serialisiert oder deserialisiert** werden, um sicherzustellen, dass alle externen Abhängigkeiten/Kollaborateure wie erwartet funktionieren. Also z.B. bei:\n- Aufrufe an REST APIs\n- Lesen/Schreiben auf Datenbanken oder Queues\n- Schreiben auf das Dateisystem\n\nEs sollte dabei mit lokalen Instanzen der Abhängigkeiten gearbeitet werden und **nicht mit realen Produktivsystemen** (bei unzähligen automatisierten Tests kann dies im schlimmsten Falle zu einem Denial of Service führen). Ist es nicht möglich, eine eigene Instanz laufen zu lassen, sollten Fake-Versionen implementiert werden, die das reale Verhalten nachahmen. \n\n![Integration mit separatem Service](https://martinfowler.com/articles/practical-test-pyramid/httpIntegrationTest.png)\n\n\n# Contract Tests\nEs kann sein, dass Softwareentwicklung derart organisiert ist, dass unterschiedliche Teams an unterschiedlichen Serviceimplementierungen arbeiten, die zum Schluss zu einem großen, zusammenhängenden System zusammengefügt werden. \n\nDiese unterschiedlichen Services kommunizieren über Interfaces miteinander (dazu nutzen sie etwa REST und JSON via HTTPS, RPC oder bei einer eventgesteuerten, asynchronen Anwendung via Queues oder Channels). Dann ist immer ein Service ein **Consumer** (der Daten abruft) und der andere ein **Provider** (der Daten bereitstellt). </br>(Bei asynchronen Anwendungen auch **Publisher** und **Subscriber**).\n\nDie Spezifikation eines Interfaces kann als **Contract** (Vertrag) angesehen werden.\n\nBeim **Consumer-Driven Contract Test (CDC)** übernimmt das Team des Consumer-Services die Implementierung des Vertrags. Es schreibt also Tests, die das Interface auf alle Daten prüfen, die es benötig/erwartet, um diese dann an das Provider-Team weiterzugeben. Dieses entwickelt nun die API nach diesen Tests. Dabei durchlaufen alle Änderungen kontinuierlich die Tests in der Buildpipeline. Bei Problemen tauschen sich die Teams aus. (Vgl. [Vocke 2018](https://martinfowler.com/articles/practical-test-pyramid.html#ContractTests))\n\n![Consumer-Driven Contract Tests](https://martinfowler.com/articles/practical-test-pyramid/cdc_tests.png)\n\n\n# UI Tests\n**UI Tests** prüfen, ob das User Interface wie erwartet auf Interaktionen reagiert (dazu zählen Webinterfaces genauso, wie Kommandozeilen-Interfaces oder REST API). Dabei kann auf Dinge geachtet werden wie *Verhalten, Layout, Usability* oder *Wahrung des Corporate Designs*.\n\nUI Tests müssen keine vollständigen End-to-End-Tests sein. Dies kann z.B. auch mit Unit Tests gemacht werden, in dem der Frontend-Code mit Backend-Stubs getestet wird.\n\n![](https://martinfowler.com/articles/practical-test-pyramid/ui_tests.png)\n\n!!! NOTE\n Während das Verhalten automatisiert (z.B. mit Tools wie Selenium) getestet werden kann, kommt man spätestens beim Look & Feel an die Grenzen der Automatisierung.\n\n\n# End-to-End Tests\n**End-to-End Tests** (manchmal auch **Broad Stack Tests**) prüfen die Applikation über ihr eigenes Interface. UI Tests können ebenfalls zu hierzu zählen.\n\nJe komplexer das User Interface ist, desto mehr Probleme können bei Tests auftreten. Doch auch Eigenarten unterschiedlicher Browser können Fehlverhalten verursachen.\nBei Entwicklung der Tests sollte sich auf die Kernanwendungen/interaktionen der Endnutzer konzentriert werden, um Vorlagen für automatisierte Tests dafür zu erstellen (bspw. Produktsuche, Warenkorb und Bezahlen in einem Webshop).\n\nDiese Tests sind sehr zeit- und ressourcenaufwendig und sollten – wie von Cohn empfohlen – auf ein Minimum reduziert werden. Die Lowlevel-Funktionen sollten sowieso bereits auf den unteren Ebenen der **Test-Pyramide** getestet worden sein.\n\n![End-to-End Tests testen das ganze, voll integrierte System](https://martinfowler.com/articles/practical-test-pyramid/e2etests.png)\n\n# Weitere Anmerkungen\n- Neben automatisierten Tests ist es auch sinnvoll, einige Tests selbst durchzuführen und zu testen, wie man Fehlverhalten der eigenen Anwendung provozieren kann. Feedback und Ergebnisse können dokumentiert werden, um sie später in die Tests zu integrieren.\n\n- Es dreht sich beim automatisierten Testen alles um schnelles Feedback. Es ist daher sinnvoll, die Testpipeline so zu gestalten, dass langsame Tests gegen Ende ablaufen, um die einfachen und schnellen nicht aufzuhalten.","originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}
\ No newline at end of file
{"name":"Z: Beispiel für eine Notiz-Karte","description":"Diese Notiz dient als Abschlusskarte in der Demo-Kartei.","date":"2018-07-05T04:33:28.173Z","dateUpdated":"2018-07-05T17:35:34.328Z","editors":[],"owner":"jCZ6oHcbZhJaKKodN","visible":false,"ratings":true,"kind":"personal","price":0,"reviewed":false,"reviewer":"undefined","request":false,"relevance":0,"raterCount":0,"quantity":1,"license":[],"userDeleted":false,"learningActive":false,"maxCards":0,"daysBeforeReset":0,"learningStart":"1970-01-01T00:00:00.000Z","learningEnd":"1970-01-01T00:00:00.000Z","learningInterval":[],"learners":0,"wordcloud":false,"shuffled":false,"cardType":8,"difficulty":1,"originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}, {"subject":"Letzte Karte in der Demo-Kartei","front":"Klick auf **Startseite** in der Fußzeile. Wenn du in der Vollbildansicht bist, muss du zuvor diese verlassen. Auf der Startseite siehst du, wie sich eine **bunte Wolke** mit Karteinamen aufbaut. Die Größe der Schrift ist proportional zur Anzahl der Karteikarten. Klick auf eine Kartei, um deren Beschreibung zu sehen. Die Wolke ist nur ein kleiner Ausschnitt aus der Menge der Karteien, die von der .cards-Redaktion empfohlen werden. \n\n+ Log dich mit deinem **THM-Konto** ein und erstelle eigene Karteien für dein Studium.\n+ Lerne die Karten **regelmäßig**, so dass du das Wissen aus dem Studium sehr, sehr lange behältst.Schau dir dazu die Infos und Videos auf den Portalseiten [\"Lernen\"](https://informatik.cards/learning) und [\"FAQ\"](https://staging.arsnova.cards/faq) an!\n+ Folge dem Slogan von .cards: **Organize. Learn. Remember.**","difficulty":1,"centerTextElement":[false,false,false,false,false,false],"date":"2018-07-05T04:43:37.045Z","learningGoalLevel":0,"backgroundStyle":1,"learningIndex":"0","learningUnit":"0","cardType":8,"dateUpdated":"2018-07-05T17:35:34.315Z","originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}
\ No newline at end of file
{"name":"Z: Beispiel für eine Notiz-Karte","description":"Diese Notiz dient als Abschlusskarte in der Demo-Kartei.","date":"2018-07-05T04:33:28.173Z","dateUpdated":"2018-07-06T04:17:55.889Z","editors":[],"owner":"jCZ6oHcbZhJaKKodN","visible":false,"ratings":true,"kind":"personal","price":0,"reviewed":false,"reviewer":"undefined","request":false,"relevance":0,"raterCount":0,"quantity":1,"license":["by","nc","nd"],"userDeleted":false,"learningActive":false,"maxCards":0,"daysBeforeReset":0,"learningStart":"1970-01-01T00:00:00.000Z","learningEnd":"1970-01-01T00:00:00.000Z","learningInterval":[],"learners":0,"wordcloud":false,"shuffled":false,"cardType":8,"difficulty":1,"originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}, {"subject":"Letzte Karte","front":"**Los geht's:** Klick auf **Startseite** in der Fußzeile. Wenn du in der Vollbildansicht bist, muss du diese zuvor verlassen. Auf der Startseite siehst du, wie sich eine **bunte Wolke** mit Karteinamen aufbaut. Die Größe der Schrift entspricht der Anzahl der Karteikarten. Klick auf eine Kartei, um deren Beschreibung zu sehen. Die Wolke ist nur ein Ausschnitt aus der Menge der Karteien, die von der .cards-Redaktion empfohlen werden. \n\n+ Log dich mit deinem **THM-Konto** ein und erstelle eigene Karteien für dein Studium.\n+ Lerne die Karten **regelmäßig**, so dass du das Wissen aus dem Studium sehr, sehr lange behältst.Schau dir dazu die Infos und Videos auf den Portalseiten [\"Lernen\"](https://informatik.cards/learning) und [\"FAQ\"](https://staging.arsnova.cards/faq) an!\n+ Folge dem Slogan von .cards: **Organize. Learn. Remember.**","difficulty":1,"centerTextElement":[false,false,false,false,false,false],"date":"2018-07-05T04:43:37.045Z","learningGoalLevel":0,"backgroundStyle":1,"learningIndex":"0","learningUnit":"0","cardType":8,"dateUpdated":"2018-07-06T04:16:28.211Z","originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}
\ No newline at end of file
{"name":"C: Beispiel für eine Vokabelkarte","description":"Die Vokabelkarte ist Teil der Demo-Kartei, siehe den roten Button auf der Startseite.","date":"2018-04-24T11:05:15.991Z","dateUpdated":"2018-07-01T06:30:51.590Z","editors":[],"owner":"jCZ6oHcbZhJaKKodN","visible":false,"ratings":true,"kind":"personal","price":0,"reviewed":false,"reviewer":"undefined","request":false,"relevance":0,"raterCount":0,"quantity":1,"license":["by","nc","sa"],"userDeleted":false,"moduleActive":false,"college":"THM","learningActive":false,"maxCards":2,"daysBeforeReset":7,"learningStart":"2018-04-24T11:05:15.991Z","learningEnd":"2038-01-19T13:04:27.919Z","learningInterval":[1,3,7,28,84],"learners":1,"wordcloud":false,"shuffled":false,"cardType":1,"difficulty":3,"originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}, {"subject":"Englisch – Deutsch (BEOLINGUS-Hilfe)","back":"**erinnern**","difficulty":3,"centerTextElement":[true,true,false,false],"date":"2018-06-10T16:58:28.909Z","learningGoalLevel":0,"backgroundStyle":0,"learningIndex":"0","learningUnit":"0","cardType":1,"front":"**remember**","dateUpdated":"2018-07-01T06:30:51.576Z","originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}
\ No newline at end of file
{"name":"C: Beispiel für eine Vokabelkarte","description":"Die Vokabelkarte ist Teil der Demo-Kartei, siehe den roten Button auf der Startseite.","date":"2018-04-24T11:05:15.991Z","dateUpdated":"2018-07-06T04:20:25.534Z","editors":[],"owner":"jCZ6oHcbZhJaKKodN","visible":false,"ratings":true,"kind":"personal","price":0,"reviewed":false,"reviewer":"undefined","request":false,"relevance":0,"raterCount":0,"quantity":1,"license":["by","nc","sa"],"userDeleted":false,"moduleActive":false,"college":"THM","learningActive":false,"maxCards":2,"daysBeforeReset":7,"learningStart":"2018-04-24T11:05:15.991Z","learningEnd":"2038-01-19T13:04:27.919Z","learningInterval":[1,3,7,28,84],"learners":1,"wordcloud":false,"shuffled":false,"cardType":1,"difficulty":2,"originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}, {"subject":"Englisch – Deutsch (mit BEOLINGUS-Hilfe)","back":"**erinnern**","difficulty":2,"centerTextElement":[true,true,false,false],"date":"2018-06-10T16:58:28.909Z","learningGoalLevel":0,"backgroundStyle":0,"learningIndex":"0","learningUnit":"0","cardType":1,"front":"**remember**","dateUpdated":"2018-07-06T04:20:25.521Z","originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}
\ No newline at end of file
{"name":"A: Quiz zum Kennenlernen von .cards","description":"Die Quizfragen sind Teil der Demo-Kartei, siehe den roten Button auf der .cards-Startseite.","date":"2018-06-08T13:51:09.335Z","dateUpdated":"2018-07-04T18:46:54.833Z","editors":[],"owner":"jCZ6oHcbZhJaKKodN","visible":true,"ratings":true,"kind":"free","price":0,"reviewed":false,"reviewer":"undefined","request":false,"relevance":0,"raterCount":0,"quantity":5,"license":["by","nc","sa"],"userDeleted":false,"learningActive":false,"maxCards":2,"daysBeforeReset":7,"learningStart":"2018-06-08T13:51:09.335Z","learningEnd":"2038-01-19T15:33:57.156Z","learningInterval":[1,3,7,28,84],"learners":0,"wordcloud":false,"shuffled":false,"cardType":11,"difficulty":1,"originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}, {"subject":"1. Gesammeltes Wissen","front":"**Was bleibt?**\n![](https://arsnova.cards/img/background/zettelkasten_wikipedia_original.jpg width=\"500px\")\n","back":"![Angesammeltes Wissen](https://arsnova.cards/img/background/zettelkasten_wikipedia_original.jpg width=\"200 pt\") \nEin Studierzimmer (Foto zum Wikipedia-Begriff [Zettelkasten](https://de.wikipedia.org/wiki/Zettelkasten), Kai Schreiber, CC BY-SA 2.0) kann eine kreative persönliche Lernumgebung sein. Das auf tausenden Zetteln in dutzenden Kartons gesammelte Wissen ist zumindest der Bewohnerin des abgebildeten Zimmers (Schuhgröße 4½ steht auf einigen Kartons) zugänglich. Warum also nicht mit Zetteln in Schuhkartons studieren? Den digitalen Karten fehlt doch die Haptik des Papiers und die Gesamtschau -- im Regal und auf dem Boden. \n\nStimmt. Dafür haben digitale Karten aber auch **unbestreitbare Vorteile** -- gemäß dem Slogan unserer Plattform:\n\n+ **Organize**: Das Wissen aus deinem Studium kannst du jederzeit und überall mit wenigen Klicks wiederfinden, auch noch viele Jahre nach deinem Studium, wenn du aus deiner Studierbude längst ausgezogen bist, womöglich dein Zettelarchiv bis auf das IKEA-Regal entsorgt hast. Eines Tages, in deinem Job, in einer Teambesprechung, brauchst du sicherlich das Wissen aus deinem Studium wieder.\n\n+ **Learn**: Die Karten sind multimedial: Du kannst Bilder, Podcasts und Videos einfügen. Du studierst ein MINT-Fach? Schreib mit $\\TeX$ die kompliziertesten mathematischen Formeln und mit `Syntax-Highlighting` beliebigen Programmiercode schnell und sauber auf eine Karte. Du darfst kostenlos die [Open Source Software](https://github.com/thm-projects/arsnova-flashcards) .cards als persönliche Lernumgebung auf deinem Laptop installieren. So kannst du deine Karten auch ohne Internet überall lernen.\n\n+ **Remember**: Die Karten deines Lernpensums werden dir zum dauerhaften Memorieren an [kognitionswissenschaftlich berechneten Tagen](https://en.wikipedia.org/wiki/Spaced_repetition) wieder vorgelegt. Push-Nachrichten auf dein Handy oder E-Mails erinnern dich ans Lernen.","difficulty":1,"centerTextElement":[true,false,false,false],"date":"2018-06-10T05:23:42.665Z","learningGoalLevel":0,"backgroundStyle":1,"learningIndex":"0","learningUnit":"0","cardType":11,"dateUpdated":"2018-07-04T18:41:33.172Z","originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}, {"subject":"2. Worum es geht","front":"Was unterscheidet **.cards** von anderen Lernkartei-Apps?","difficulty":1,"centerTextElement":[true,false,false,false],"date":"2018-06-08T13:54:04.447Z","learningGoalLevel":0,"backgroundStyle":1,"learningIndex":"0","learningUnit":"0","cardType":11,"dateUpdated":"2018-07-01T10:13:15.885Z","back":"(##) Was unterscheidet .cards von anderen Lernkartei-Apps?\n\n1. Im Gegensatz zu Lernkartei-Apps wie [Quizlet](https://quizlet.com/) oder [SuperMemo](https://www.supermemo.com/) unterstützt die .cards-Plattform auch das **Mitschreiben in Vorlesungen**. Weiter hinten in dieser Demo-Kartei haben wir ein paar Mitschriften eingefügt. Sie wurden handschriftlich in Bachelor- und Master-Vorlesungen erstellt, abfotografiert und zu Hause digital auf .cards zum Lernen nachbearbeitet.\n\n+ Die Plattform .cards ist eine **vorlesungsbegleitende persönliche Lernumgebung**, ein virtueller Ort, an dem Lernzeit mit kognitiven Tätigkeiten -- Mitschreiben, Nachbearbeiten, Lernkarten erstellen, Lernfragen wiederholt beantworten -- intensiv verbracht wird. \n\n+ Es gibt auf .cards eine Option, die es der Lehrperson ermöglicht, kontinuierliches und wiederholtes Lernen mit **Bonuspunkten** zu honorieren. Wir haben .cards mit dem Ziel entwickelt, der **Aufschieberitis** und dem **Bulimielernen** im Studium entgegen zu wirken. Lies hierzu unser [Paper](https://hochschulforumdigitalisierung.de/sites/default/files/dateien/HFD_Winter_School_E-Book_Version_2.pdf) (S. 91-98).","originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}, {"subject":"3. Digitale Schuhkartons: Karteien","front":"Welche **Karteitypen** gibt es auf .cards?","back":"Es gibt 14 Kartentypen, die beim Anlegen einer Kartei zur Auswahl stehen. \nJede Kartei beinhaltet ausschließlich **Karten desselben Typs**, es sei denn sie wurde aus mehreren Karteien unterschiedlichen Typs gemischt wie diese Demo-Kartei. Einige Karteitypen haben eine **Schwierigkeitsstufe (Level)**, die an der Kartenfarbe erkennbar ist: Grün für Basics, Blau für Fortgeschritten und Rot für Expert*in. Einige Kartentypen sind unliniert, der besseren Lesbarkeit wegen, bei anderen kann dies individuell eingestellt werden. \n\nKarteitypen unterscheiden sich in der Anzahl der Kartenseiten: nicht nur Vorder- und Rückseiten sind möglich, sondern auch weitere virtuelle Seiten zur Vertiefung des Lerninhalts oder zur Angabe von Quellen und Literatur. Lern- und Prüfungskarten haben zusätzlich eine **Lernzielstufe** in Anlehnung an die [Taxonomie von Anderson & Krathwohl](https://thesecondprinciple.com/teaching-essentials/beyond-bloom-cognitive-taxonomy-revised/): Verstehen, Anwenden, Analysieren, Synthetisieren, Bewerten, Innovieren. Für die Formulierung des Lernziels auf der gewählten Lernzielstufe werden passende Verben im Editor vorgeschlagen.\n\n<div style=\"columns:2;-webkit-columns:2;-moz-columns:2;column-gap:3em;-webkit-column-gap:3em;-moz-column-gap:3em\">\nDiese **Karteitypen** stehen zur Verfügung:\n\n1. **Mitschrift** (Mitschrift | Nachbearbeitung | To-dos)\n+ **Lernkartei** (Lernzielfrage | Vertiefung | Fazit | Literatur)\n+ **Glossar** (Fachbegriff | Beschreibung | Literatur)\n+ **Anweisungssatz** (Semantik | Syntax | Online-API)\n+ **Formelsammlung** (Aufgabe | Formel | Lösung | Links)\n+ **Entwurfsmuster** (Problem | Kontext | Kräfte | Lösung | Verwendung | Verweise)\n+ **Quiz** (Quizfrage | Antwort)\n+ **Prüfung** (Prüfungsfrage | Erwartete Antwort | Begründung)\n+ **Vokabelkartei** (Fremdwort | Übersetzung)\n+ **Fotokartei** (Foto | Lizenz)\n+ **Zitatensammlung** (Zitat | Zitierte Person | Bibliografische Angaben)\n+ **Exzerpte** (Exzerpt | Anmerkungen | Quellenangabe)\n+ **Notizen** (1 Seite)\n+ **To-dos** (1 Seite)\n</div>\nIn dieser Demo-Kartei findest du für die meist genutzten Karteitypen ein Beispiel aus Informatik-Kursen an der THM.","difficulty":1,"centerTextElement":[true,false,false,false],"date":"2018-06-08T14:56:06.624Z","learningGoalLevel":0,"backgroundStyle":1,"learningIndex":"0","learningUnit":"0","cardType":11,"dateUpdated":"2018-07-04T18:45:06.984Z","originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}, {"subject":"4. Digitale Regale: Kurse","front":"Was wird auf .cards unter einem **Kurs** verstanden?","back":"(##) Was wird auf .cards unter einem \"Kurs\" verstanden?\n\nWie aus dem Studium bekannt, ist ein Kurs das aktuelle Angebot eines Bachelor- oder Mastermoduls als Vorlesung, Übung, Seminar oder Praktikum. Die offizielle Modulbeschreibung nennt die Lernziele und Lerninhalte. In thematisierter Form stehen Lerninhalte auf .cards als Karteien zur Verfügung -- im sogenannten **Themen-Pool**. Da einzelne Themen auch in mehreren Kursen relevant sind, zum Beispiel $\\LaTeX$ oder \"Wissenschaftliches Schreiben\", kann eine Kartei auf .cards auch in mehreren Kursen genutzt werden.\n\n!!! NOTE\n Ein Kurs auf .cards fasst mehrere Karteien zusammen. Um im Bild zu bleiben: In deinem IKEA-Regal wären das Schuhkartons, die nebeneinander lagern.\n\n!!! NOTE\n Das Kurskonzept von .cards erlaubt das Lernen mit einer beliebigen Auswahl thematischer Karteien. Die Lehrperson kann **Bonuspunkte** für das wiederholte Lernen einzelner Themen als auch für das Lernen aller Themen eines Kurses vergeben.\n\n!!! TIP\n Du kannst deine eigenen Kurse zusammenstellen. Es bedarf hierzu keiner Lehrperson! Das ermöglicht dir eine einfache Organisation deiner digitalen Mitschriften, **selbstbestimmtes Lernen** und bei Bedarf auch Crash-Kurse vor der Klausur.\n\n\n\n \n","difficulty":1,"centerTextElement":[true,false,false,false],"date":"2018-06-09T17:45:11.922Z","learningGoalLevel":0,"backgroundStyle":1,"learningIndex":"0","learningUnit":"0","cardType":11,"dateUpdated":"2018-07-01T06:25:28.666Z","originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}, {"subject":"5. Digitale Zettel: Karten","front":"Wie kann man den Text auf einer Karte **formatieren**?\n\nWie lässt sich eine Karte **multimedial** mit Bildern und Videos anreichern?","back":"(##) Wie kann man den Text auf einer Karte formatieren?\n\n\nKurze Antwort: mit **Markdeep**.\n\n---\n\n![ Figure [robot]: Markdeep-Logo](https://casual-effects.com/image/project/icon-markdeep.png width=\"130 pt\") \nKarteien (im Hintergrund sind das die Schuhkartons im IKEA-Regal) und Karten (die Zettel in den Kartons) kannst du auf **.cards** vielfältig gestalten -- fast wie in Microsoft Word™ oder in Pages™ von Apple. Diese Karte zeigt dir beispielhaft einige Formatierungen mit [Markdeep](http://casual-effects.com/markdeep/), der vereinfachten [Auszeichnungssprache](https://de.wikipedia.org/wiki/Auszeichnungssprache) im **.cards**-Editor. Du kannst deinen Text mit etwas Magie (ein paar Tastaturzeichen genügen wie <code>* _ # [ ] > | ~ $ ˋ</code>) sehr einfach formatieren -- ohne Maus. \n\n\n!!! TIP\n Eine sorgfältige Gestaltung deiner Karten mit Text, Bildern und Erklärvideos motiviert und fördert zugleich dein Lernen. Nutze also die Formatierungsoptionen für die Beschriftung deiner Karteien ( -> Etikett am Karton) und für die anschauliche Gestaltung deiner Karten. \n\n\nWas alles mit Markdeep möglich ist, zeigt die [Demo-Seite](http://casual-effects.com/markdeep/features.md.html). So geht zum Beispiel auch $\\TeX$, inline: $\\sigma = \\sqrt{ \\frac{1}{N} \\sum_{i=1}^N (x_i -\\mu)^2}$ (Standardabweichung) oder abgesetzt die Maxwell-Faraday-Gleichung:\n\n$$\\oint_{\\partial \\Sigma} \\mathbf{E} \\cdot \\mathrm{d}\\boldsymbol{\\ell} = - \\frac{d}{dt} \\iint_{\\Sigma} \\mathbf{B} \\cdot \\mathrm{d}\\mathbf{S}$$\n\n</br>\n\n**************\n\n</br>\n\nUnd zwischen zwei Trennlinien kommt der [Entwickler von Markdeep](https://csci.williams.edu/people/faculty/morgan-mcguire/) zu Wort:\n\n> \"Markdeep\n> is a technology for writing plain text documents\n> that will look good in any web browser, whether \n> local or remote. It supports diagrams, calendars, equations, and\n> other features as extensions of [Markdown](https://de.wikipedia.org/wiki/Markdown) syntax.\"\n> -- Morgan McGuire\n\n********\n</br>\n</br>\nVideos auf YouTube und Vimeo lassen sich sehr einfach mit einem Einzeiler in die Seite einbinden:\n\n![Figure [Markdown]: Erklärvideo über Markdown, auf dem Markdeep aufbaut](https://youtu.be/hpAJMSS8pvs)\n\n</br>\n\nBilder können abgesetzt, rechtsbündig zum Absatz (siehe das Markdeep-Logo oben) und skaliert eingebunden werden:\n\n![Figure [examplePicture]: Klick auf das Bild, um es in Vollansicht zu sehen!](https://pbs.twimg.com/media/CXzB2rZWsAERiV8.png width=\"400 pt\")\n\nWie im Bild zu sehen, zeigt dir die Vorschau des Editors -- **synchron** zu deiner Eingabe --, wie deine Textformatierung aussehen wird. \n\n!!! TIP\n Überall auf .cards steht dir die Kartei \"Formatieren mit Markdeep\" als Hilfe zur Verfügung.","difficulty":1,"centerTextElement":[true,false,false,false],"date":"2018-06-08T14:56:06.624Z","learningGoalLevel":0,"backgroundStyle":1,"learningIndex":"0","learningUnit":"0","cardType":11,"dateUpdated":"2018-07-01T10:23:25.072Z","originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}
\ No newline at end of file
{"name":"A: Quiz zum Kennenlernen von .cards","description":"Die Quizfragen sind Teil der Demo-Kartei, siehe den roten Button auf der .cards-Startseite.","date":"2018-06-08T13:51:09.335Z","dateUpdated":"2018-07-06T05:21:54.446Z","editors":[],"owner":"jCZ6oHcbZhJaKKodN","visible":true,"ratings":true,"kind":"free","price":0,"reviewed":false,"reviewer":"undefined","request":false,"relevance":0,"raterCount":0,"quantity":5,"license":["by","nc","sa"],"userDeleted":false,"learningActive":false,"maxCards":2,"daysBeforeReset":7,"learningStart":"2018-06-08T13:51:09.335Z","learningEnd":"2038-01-19T15:33:57.156Z","learningInterval":[1,3,7,28,84],"learners":0,"wordcloud":false,"shuffled":false,"cardType":11,"difficulty":1,"originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}, {"subject":"1. Gesammeltes Wissen","front":"**Was bleibt?**\n![](https://arsnova.cards/img/background/zettelkasten_wikipedia_original.jpg width=\"500px\")\n","back":"![Angesammeltes Wissen](https://arsnova.cards/img/background/zettelkasten_wikipedia_original.jpg width=\"200 pt\") \nEin Studierzimmer [^Foto-Quelle] kann eine kreative persönliche Lernumgebung sein. Das auf tausenden Zetteln in dutzenden Kartons gesammelte Wissen ist zumindest der Bewohnerin des abgebildeten Zimmers zugänglich (ein Klick auf das Foto zeigt die Schuhgröße 4½ auf den Kartons). Warum also nicht mit Zetteln in Schuhkartons studieren? Den digitalen Karten fehlt doch die Haptik des Papiers und die Gesamtschau -- im Regal und auf dem Boden. \n\nStimmt. Dafür haben digitale Karten aber auch **unbestreitbare Vorteile** -- gemäß dem Slogan unserer Plattform:\n\n+ **Organize**: Das Wissen aus deinem Studium kannst du jederzeit und überall mit wenigen Klicks wiederfinden, auch noch viele Jahre nach deinem Studium, wenn du aus deiner Studierbude längst ausgezogen bist, womöglich dein Zettelarchiv bis auf das IKEA-Regal entsorgt hast. Eines Tages, in deinem Job, in einer Teambesprechung, brauchst du sicherlich das Wissen aus deinem Studium wieder.\n\n+ **Learn**: Die Karten sind multimedial: Du kannst Bilder, Podcasts und Videos einfügen. Du studierst ein MINT-Fach? Schreib mit $\\TeX$ die kompliziertesten mathematischen Formeln und mit `Syntax-Highlighting` beliebigen Programmiercode schnell und sauber auf eine Karte. Du darfst kostenlos die [Open Source Software](https://github.com/thm-projects/arsnova-flashcards) .cards als persönliche Lernumgebung auf deinem Laptop installieren. So kannst du deine Karten auch ohne Internet überall lernen.\n\n+ **Remember**: Die Karten deines Lernpensums werden dir zum dauerhaften Memorieren an [kognitionswissenschaftlich berechneten Tagen](https://en.wikipedia.org/wiki/Spaced_repetition) wieder vorgelegt. Push-Nachrichten auf dein Handy oder E-Mails erinnern dich ans Lernen.\n\n[^Foto-Quelle]: Foto zum Wikipedia-Begriff [Zettelkasten](https://de.wikipedia.org/wiki/Zettelkasten), Kai Schreiber, CC BY-SA 2.0","difficulty":1,"centerTextElement":[true,false,false,false],"date":"2018-06-10T05:23:42.665Z","learningGoalLevel":0,"backgroundStyle":1,"learningIndex":"0","learningUnit":"0","cardType":11,"dateUpdated":"2018-07-06T05:21:54.431Z","originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}, {"subject":"2. Worum es geht","front":"Was unterscheidet **.cards** von anderen Lernkartei-Apps?","difficulty":1,"centerTextElement":[true,false,false,false],"date":"2018-06-08T13:54:04.447Z","learningGoalLevel":0,"backgroundStyle":1,"learningIndex":"0","learningUnit":"0","cardType":11,"dateUpdated":"2018-07-01T10:13:15.885Z","back":"(##) Was unterscheidet .cards von anderen Lernkartei-Apps?\n\n1. Im Gegensatz zu Lernkartei-Apps wie [Quizlet](https://quizlet.com/) oder [SuperMemo](https://www.supermemo.com/) unterstützt die .cards-Plattform auch das **Mitschreiben in Vorlesungen**. Weiter hinten in dieser Demo-Kartei haben wir ein paar Mitschriften eingefügt. Sie wurden handschriftlich in Bachelor- und Master-Vorlesungen erstellt, abfotografiert und zu Hause digital auf .cards zum Lernen nachbearbeitet.\n\n+ Die Plattform .cards ist eine **vorlesungsbegleitende persönliche Lernumgebung**, ein virtueller Ort, an dem Lernzeit mit kognitiven Tätigkeiten -- Mitschreiben, Nachbearbeiten, Lernkarten erstellen, Lernfragen wiederholt beantworten -- intensiv verbracht wird. \n\n+ Es gibt auf .cards eine Option, die es der Lehrperson ermöglicht, kontinuierliches und wiederholtes Lernen mit **Bonuspunkten** zu honorieren. Wir haben .cards mit dem Ziel entwickelt, der **Aufschieberitis** und dem **Bulimielernen** im Studium entgegen zu wirken. Lies hierzu unser [Paper](https://hochschulforumdigitalisierung.de/sites/default/files/dateien/HFD_Winter_School_E-Book_Version_2.pdf) (S. 91-98).","originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}, {"subject":"3. Digitale Schuhkartons: Karteien","front":"Welche **Karteitypen** gibt es auf .cards?","back":"Es gibt 14 Kartentypen, die beim Anlegen einer Kartei zur Auswahl stehen. \nJede Kartei beinhaltet ausschließlich **Karten desselben Typs**, es sei denn sie wurde aus mehreren Karteien unterschiedlichen Typs gemischt wie diese Demo-Kartei. Einige Karteitypen haben eine **Schwierigkeitsstufe (Level)**, die an der Kartenfarbe erkennbar ist: Grün für Basics, Blau für Fortgeschritten und Rot für Expert*in. Einige Kartentypen sind unliniert, der besseren Lesbarkeit wegen, bei anderen kann dies individuell eingestellt werden. \n\nKarteitypen unterscheiden sich in der Anzahl der Kartenseiten: nicht nur Vorder- und Rückseiten sind möglich, sondern auch weitere virtuelle Seiten zur Vertiefung des Lerninhalts oder zur Angabe von Quellen und Literatur. Lern- und Prüfungskarten haben zusätzlich eine **Lernzielstufe** in Anlehnung an die [Taxonomie von Anderson & Krathwohl](https://thesecondprinciple.com/teaching-essentials/beyond-bloom-cognitive-taxonomy-revised/): Verstehen, Anwenden, Analysieren, Synthetisieren, Bewerten, Innovieren. Für die Formulierung des Lernziels auf der gewählten Lernzielstufe werden passende Verben im Editor vorgeschlagen.\n\n<div style=\"columns:2;-webkit-columns:2;-moz-columns:2;column-gap:3em;-webkit-column-gap:3em;-moz-column-gap:3em\">\nDiese **Karteitypen** stehen zur Verfügung:\n\n1. **Mitschrift** (Mitschrift | Nachbearbeitung | To-dos)\n+ **Lernkartei** (Lernzielfrage | Vertiefung | Fazit | Literatur)\n+ **Glossar** (Fachbegriff | Beschreibung | Literatur)\n+ **Anweisungssatz** (Semantik | Syntax | Online-API)\n+ **Formelsammlung** (Aufgabe | Formel | Lösung | Links)\n+ **Entwurfsmuster** (Problem | Kontext | Kräfte | Lösung | Verwendung | Verweise)\n+ **Quiz** (Quizfrage | Antwort)\n+ **Prüfung** (Prüfungsfrage | Erwartete Antwort | Begründung)\n+ **Vokabelkartei** (Fremdwort | Übersetzung)\n+ **Fotokartei** (Foto | Lizenz)\n+ **Zitatensammlung** (Zitat | Zitierte Person | Bibliografische Angaben)\n+ **Exzerpte** (Exzerpt | Anmerkungen | Quellenangabe)\n+ **Notizen** (1 Seite)\n+ **To-dos** (1 Seite)\n</div>\nIn dieser Demo-Kartei findest du für die meist genutzten Karteitypen ein Beispiel aus Informatik-Kursen an der THM.","difficulty":1,"centerTextElement":[true,false,false,false],"date":"2018-06-08T14:56:06.624Z","learningGoalLevel":0,"backgroundStyle":1,"learningIndex":"0","learningUnit":"0","cardType":11,"dateUpdated":"2018-07-04T18:45:06.984Z","originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}, {"subject":"4. Digitale Regale: Kurse","front":"Was wird auf .cards unter einem **Kurs** verstanden?","back":"(##) Was wird auf .cards unter einem \"Kurs\" verstanden?\n\nWie aus dem Studium bekannt, ist ein Kurs das aktuelle Angebot eines Bachelor- oder Mastermoduls als Vorlesung, Übung, Seminar oder Praktikum. Die offizielle Modulbeschreibung nennt die Lernziele und Lerninhalte. In thematisierter Form stehen Lerninhalte auf .cards als Karteien zur Verfügung -- im sogenannten **Themen-Pool**. Da einzelne Themen auch in mehreren Kursen relevant sind, zum Beispiel $\\LaTeX$ oder \"Wissenschaftliches Schreiben\", kann eine Kartei auf .cards auch in mehreren Kursen genutzt werden.\n\n!!! NOTE\n Ein Kurs auf .cards fasst mehrere Karteien zusammen. Um im Bild zu bleiben: In deinem IKEA-Regal wären das Schuhkartons, die nebeneinander lagern.\n\n!!! NOTE\n Das Kurskonzept von .cards erlaubt das Lernen mit einer beliebigen Auswahl thematischer Karteien. Die Lehrperson kann **Bonuspunkte** für das wiederholte Lernen einzelner Themen als auch für das Lernen aller Themen eines Kurses vergeben.\n\n!!! TIP\n Du kannst deine eigenen Kurse zusammenstellen. Es bedarf hierzu keiner Lehrperson! Das ermöglicht dir eine einfache Organisation deiner digitalen Mitschriften, **selbstbestimmtes Lernen** und bei Bedarf auch Crash-Kurse vor der Klausur.\n\n\n\n \n","difficulty":1,"centerTextElement":[true,false,false,false],"date":"2018-06-09T17:45:11.922Z","learningGoalLevel":0,"backgroundStyle":1,"learningIndex":"0","learningUnit":"0","cardType":11,"dateUpdated":"2018-07-01T06:25:28.666Z","originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}, {"subject":"5. Digitale Zettel: Karten","front":"Wie kann man den Text auf einer Karte **formatieren**?\n\nWie lässt sich eine Karte **multimedial** mit Bildern und Videos anreichern?","back":"(##) Wie kann man den Text auf einer Karte formatieren?\n\n\nKurze Antwort: mit **Markdeep**.\n\n---\n\n![ Figure [robot]: Markdeep-Logo](https://casual-effects.com/image/project/icon-markdeep.png width=\"130 pt\") \nKarteien (im Hintergrund sind das die Schuhkartons im IKEA-Regal) und Karten (die Zettel in den Kartons) kannst du auf **.cards** vielfältig gestalten -- fast wie in Microsoft Word™ oder in Pages™ von Apple. Diese Karte zeigt dir beispielhaft einige Formatierungen mit [Markdeep](http://casual-effects.com/markdeep/), der vereinfachten [Auszeichnungssprache](https://de.wikipedia.org/wiki/Auszeichnungssprache) im **.cards**-Editor. Du kannst deinen Text mit etwas Magie (ein paar Tastaturzeichen genügen wie <code>* _ # [ ] > | ~ $ ˋ</code>) sehr einfach formatieren -- ohne Maus. \n\n\n!!! TIP\n Eine sorgfältige Gestaltung deiner Karten mit Text, Bildern und Erklärvideos motiviert und fördert zugleich dein Lernen. Nutze also die Formatierungsoptionen für die Beschriftung deiner Karteien ( -> Etikett am Karton) und für die anschauliche Gestaltung deiner Karten. \n\n\nWas alles mit Markdeep möglich ist, zeigt die [Demo-Seite](http://casual-effects.com/markdeep/features.md.html). So geht zum Beispiel auch $\\TeX$, inline: $\\sigma = \\sqrt{ \\frac{1}{N} \\sum_{i=1}^N (x_i -\\mu)^2}$ (Standardabweichung) oder abgesetzt die Maxwell-Faraday-Gleichung:\n\n$$\\oint_{\\partial \\Sigma} \\mathbf{E} \\cdot \\mathrm{d}\\boldsymbol{\\ell} = - \\frac{d}{dt} \\iint_{\\Sigma} \\mathbf{B} \\cdot \\mathrm{d}\\mathbf{S}$$\n\n</br>\n\n**************\n\n</br>\n\nUnd zwischen zwei Trennlinien kommt der [Entwickler von Markdeep](https://csci.williams.edu/people/faculty/morgan-mcguire/) zu Wort:\n\n> \"Markdeep\n> is a technology for writing plain text documents\n> that will look good in any web browser, whether \n> local or remote. It supports diagrams, calendars, equations, and\n> other features as extensions of [Markdown](https://de.wikipedia.org/wiki/Markdown) syntax.\"\n> -- Morgan McGuire\n\n********\n</br>\n</br>\nVideos auf YouTube und Vimeo lassen sich sehr einfach mit einem Einzeiler in die Seite einbinden:\n\n![Figure [Markdown]: Erklärvideo über Markdown, auf dem Markdeep aufbaut](https://youtu.be/hpAJMSS8pvs)\n\n</br>\n\nBilder können abgesetzt, rechtsbündig zum Absatz (siehe das Markdeep-Logo oben) und skaliert eingebunden werden:\n\n![Figure [examplePicture]: Klick auf das Bild, um es in Vollansicht zu sehen!](https://pbs.twimg.com/media/CXzB2rZWsAERiV8.png width=\"400 pt\")\n\nWie im Bild zu sehen, zeigt dir die Vorschau des Editors -- **synchron** zu deiner Eingabe --, wie deine Textformatierung aussehen wird. \n\n!!! TIP\n Überall auf .cards steht dir die Kartei \"Formatieren mit Markdeep\" als Hilfe zur Verfügung.","difficulty":1,"centerTextElement":[true,false,false,false],"date":"2018-06-08T14:56:06.624Z","learningGoalLevel":0,"backgroundStyle":1,"learningIndex":"0","learningUnit":"0","cardType":11,"dateUpdated":"2018-07-01T10:23:25.072Z","originalAuthor":"Quibeldey-Cirkel, Klaus, Dr."}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment