ArchiLab
ArchiLab
  • Видео 63
  • Просмотров 142 471
Typen von automatisierten Tests
Im Alltag spricht man oft von "Unit Tests", wenn man eigentlich ganz verschiedene Typen von automatisierten Software-Tests meint. In diesem Video werden die verschiedenen Typen vorgestellt - mit Nutzen, Vor- und Nachteilen.
0:00 Motivation
0:30 Die drei wichtigsten Typen: Unit / Integration / System Test
2:31 Ein Beispiel-Softwaresystem: Player M.O.N.T.E. aus dem Microservice Dungeon
5:32 Unit Test
8:30 Integration Test (1)
10:14 Was ist ein Mock?
11:56 Integration Test (2)
14:02 System Test
15:26 E2E Test
16:15 Acceptance Test
18:03 UI Test
18:30 Performance / Load Test
19:12 Stress Test
19:46 Security Test
20:04 Quiz: Welchen Typ haben unsere Tests im ST-Praktikum?
21:30 Zusammenfassung
Просмотров: 535

Видео

Unit Testing 101
Просмотров 752Год назад
Gerade wenn Softwaresystem groß werden (mehrere 10.000, 100.000 oder sogar Millionen Zeilen Sourcecode), dann kann man nicht nur auf Logausgaben und Debugger vertrauen, um Fehler zu finden. Mit lokalen Unittests stellt man sicher, dass jede einzelne Klasse getestet ist. Damit gibt es von vornherein weniger Fehler im Gesamtsystem. In diesem Video werden die grundlegenden Aspekte von Unittests an...
Prozedural oder Objektorientiert? Ein C#-Vergleich am Beispiel "Game of Life"
Просмотров 8742 года назад
Objekt-orientiert ist besser als prozedural - ist ja klar. Wirklich? Und wenn ja, warum eigentlich? Dieses Video geht dieser Frage anhand eines Beispiels auf den Grund. Zwei kurze Implementierungen für das Conway'sche Game of Life werden miteinander verglichen. Fazit: Objekt-orientiert ist länger, aber man findet Fehler leichter und kann den Code besser weiterentwickeln. Den Code zu diesem Vide...
Die O(...)-Notation, oder: Schlechtes Design = schlechte Performance?
Просмотров 4432 года назад
Wenn man Datenstrukturen falsch nutzt, bei Schleifen nicht genug nachdenkt, Datenmodelle unbedacht entwirft - dann hat man vielleicht nicht nur schlechten Code oder eine schlechte Architektur, sondern unter Umständen sogar ein handfestes Performance-Problem. Dieses Video zeigt auf, wie man insbesondere durch die Wahl der passenden Datenstruktur (Array, Liste, Hash, Set, ...) überlange Laufzeite...
Datenstrukturen in C#
Просмотров 6992 года назад
Datenstrukturen wie Arrays, Listen, HaspMaps, Stacks und Queues gehören zum Standard-Repertoire für komplexe Berechnungen. In diesem Video schauen wir uns an, wie diese Datenstrukturen in C# benutzt werden. Anhand von praktischen Code-Beispielen lässt sich alles nachvollziehen. Die Sourcen in diesem Video findet man unter gitlab.com/archi-lab/public/csharp-intro.
Basistypen und Kontrollfluss in C#
Просмотров 5622 года назад
C# ist eine moderne und mächtige Programmiersprache. Wenn man noch nicht so viel Erfahrung mit dem Programmieren hat, dann nähert man sich am besten über die Basistypen (int, float/double, string, bool) und die einfachen Kontrollfluss-Strukturen (if, for, while, do). Dieses Video erklärt an einfachen Beispielen, wie das zusammenspielt. Die Sourcen in diesem Video findet man unter gitlab.com/arc...
Git Basics (mit Git Bash und Visual Studio)
Просмотров 6 тыс.2 года назад
Ohne ein Sourcecode-Management-System wie Git kommt professionelle Software-Entwicklung nicht mehr aus. Nicht nur wenn man im mit mehreren Personen gemeinsamt entwickelt, ist Git sinnvoll - auch als 1-Personen-Team lohnt sich die Verwendung. Dieses Video beschreibt anschaulich die 6 wichtigsten Git-Befehle, mit denen man in Visual Studio oder in der Git Bash seinen Code managen kann.
Kafka + Spring + Kotlin 101
Просмотров 1,9 тыс.3 года назад
Wie bindet man den Apache Kafka als Eventing-Lösung am besten in den eigenen Code ein? Dieses Video erklärt das anschaulich anhand eines Spring/Kotlin-basierten Beispielprojekts.
Kafka Essentials
Просмотров 3673 года назад
Apache Kafka ist eine Event-Streaming-Plattform, die industrieweit als der "Goldstandard" für asynchrone Kommunikation in Microservice-Architekturen gilt. Kafka zeichnet sich durch sehr hohe Skalierbarkeit und Robustheit aus. In diesem Video werden die wesentlichen technischen Konzepte und APIs vorgestellt.
Asynchrone Inter-Service-Kommunikation mit Apache Kafka
Просмотров 6933 года назад
In lose gekoppelten Architekturen, wie beispielsweise Microservices, ist die asynchrone Kommunikation über Eventing die präferierte Art des Datenaustausches - sie ermöglicht ein "Fire & Forget" von Informationen und lässt die einzelnen Services autark. Aber worauf muss man dabei aufpassen, und gibt es Ausnahmen? Dieses Video gibt eine Antwort. In zwei weiteren Videos wird noch tiefer auf Apache...
Master Digital Sciences: Make Your Own Personal Study Plan Using the Study Planner
Просмотров 9063 года назад
In the Digital Sciences Master program by TH Köln, you can choose from 60 (!) modules to build your very own, personal study plan. The Study Planner helps you select the right modules for your specialization and your wishes. This video explains how this tool is used.
Coding REST - mit sechs zentralen Konzepten
Просмотров 2,5 тыс.3 года назад
REST APIs sind eigentlich ganz einfach zu implementieren - wenn man sechs zentrale Konzepte kennt, die einem das Leben einfacher machen. Das sind die verschiedenen Layer unserer Architektur (und deren Zweck), Application- und Domain-Services, DTOs und DTO-Mapper, der REST-Controller selbst und die Annotation von Exceptions mit HTTP-Statuscodes. Damit kann man Controller-Funktionalität ganz einf...
HTTP Return Codes in REST APIs
Просмотров 1,1 тыс.3 года назад
Der Charme von REST ist die Nutzung von (HTTP) Standards, um das API schlank zu halten. Das gilt insbesondere auch für die Return Codes, die eine Auskunft über Erfolg oder Fehlerquelle einer Anfrage geben. Dieses Video stellt die wichtigsten Codes vor - und wann man sie verwendet.
(De-Facto-)Standards für REST-API-Design
Просмотров 2,2 тыс.3 года назад
Erschreckend oft findet man in der Praxis schlecht gestaltete REST-APIs. Das muss nicht sein - für das Design von REST-APIs gibt es ein paar allgemein akzeptierte, einfache Regeln. Dieses Video stellt sie vor.
Prinzipien von REST
Просмотров 6 тыс.3 года назад
REST ist kein Datenaustausch-Protokoll, sondern ein Architekturstil - mit ganz bestimmten Forderungen und Prinzipien, die sich durch die Verwendung von HTTP-Standards prima umsetzen lassen. Das Video erklärt, wie man sich in einem REST-API den HTTP-Standard zu Nutze machen kann.
HTTP - Grundlagen und Tools
Просмотров 1,3 тыс.3 года назад
HTTP - Grundlagen und Tools
Sechs Regeln für Aggregates
Просмотров 1,5 тыс.3 года назад
Sechs Regeln für Aggregates
Was sind Aggregates?
Просмотров 2,1 тыс.3 года назад
Was sind Aggregates?
Domain Primitives
Просмотров 1,7 тыс.3 года назад
Domain Primitives
Unit Testing (und ein bisschen TDD)
Просмотров 1,1 тыс.3 года назад
Unit Testing (und ein bisschen TDD)
The Return of the Evil Stacktrace, or: How to Debug
Просмотров 6253 года назад
The Return of the Evil Stacktrace, or: How to Debug
Text Adventure mit SOLID und Clean Code (Teil 2)
Просмотров 6983 года назад
Text Adventure mit SOLID und Clean Code (Teil 2)
Text Adventure mit SOLID und Clean Code (Teil 1)
Просмотров 1,4 тыс.3 года назад
Text Adventure mit SOLID und Clean Code (Teil 1)
Clean Code Rules
Просмотров 3 тыс.3 года назад
Clean Code Rules
Dependency Inversion Principle
Просмотров 1,8 тыс.3 года назад
Dependency Inversion Principle
Liskov Substitution Principle
Просмотров 9783 года назад
Liskov Substitution Principle
Interface Segregation Principle
Просмотров 1,1 тыс.3 года назад
Interface Segregation Principle
Open-Closed Principle
Просмотров 1,1 тыс.3 года назад
Open-Closed Principle
Single Responsibility Principle
Просмотров 1,1 тыс.3 года назад
Single Responsibility Principle
SOLID Principles
Просмотров 1,4 тыс.3 года назад
SOLID Principles

Комментарии

  • @DelphyGE
    @DelphyGE 19 дней назад

    Gut erklärt, danke!

  • @eemcc42
    @eemcc42 Месяц назад

    Die bisher beste Erklaerung von bisher ca. 10 angesehenen. Vielen Dank!

  • @ma7475
    @ma7475 Месяц назад

    Vielen Dank für eine sehr übersichtliche Darstellung ohne viel bla bla !

  • @geigenunterricht8684
    @geigenunterricht8684 2 месяца назад

    Super Video, danke! System und E2E test werden häufig synonym verwendet. Die Test Pyramide wäre auch erwähnenswert gewesen.

  • @geigenunterricht8684
    @geigenunterricht8684 5 месяцев назад

    Tolle Erklärung, danke! Schön, dass es am Anfang eine Übersicht als Sequenzdiagramm gibt.

  • @MitruKaz
    @MitruKaz 5 месяцев назад

    Super kompakt und verständlich erklärt! Danke für die tollen Videos

  • @tarekm1632
    @tarekm1632 5 месяцев назад

    klasse

  • @MitruKaz
    @MitruKaz 7 месяцев назад

    Hammer Prof! Hammer Videos

  • @nathanaelzoe8159
    @nathanaelzoe8159 8 месяцев назад

    🫶🫶🫶

  • @annagohre450
    @annagohre450 8 месяцев назад

    Super erklärz, danke!

  • @tonisun4785
    @tonisun4785 9 месяцев назад

    ❤🧡💛💚💙💜🤎🖤🤍💯

  • @Defzan
    @Defzan 10 месяцев назад

    Danke sehr wenn man keinen Mentor oder Ausbilder hat sind Menschen wie sie Gold wert :D

  • @hennero.3826
    @hennero.3826 11 месяцев назад

    Vielen Dank für dieses Video, besonders für diese Übersicht mit den 4 Stufen (lokales Verz., ..., Remote Repo)! 🙂

  • @lars4953
    @lars4953 Год назад

    Warum lassen sie beim Integrationstest das spring framework nicht weg? Ich dachte im DDD ist das framework nur ein Detail und wird ganz zuletzt angeschlossen. Bei mir läuft das nur im UI-Test.

    • @archilab
      @archilab Год назад

      DDD sagt da eigentlich nichts zu - da geht es eher um einen sauberen fachlichen Schnitt. Spring Framework ist beim Testen einfach als Dependency Injection Container nötig, um sich die zustandslosen Services zu instanziieren. (Und für eine Reihe anderer Convenience-Aspekte auch ...). Möglicherweise kann man das (irgendwie) umgehen, aber dann würde man ja in den Tests einen anderen Weg gehen als im Produktivcode.

    • @lars4953
      @lars4953 Год назад

      @@archilab Ja, aber der saubere Schnitt ist doch zwischen fachlicher Logik und Technologie. Ja, auf DI und JPA muss man im DDD verzichten. Aber dies macht die Tests eh nur langsam und halt der erste Satz. Also ich gehe kein anderen Weg im Produktivcode. Es gibt nur dann zusätzlich ein *Bean-Service welcher von *Aggregate abgeleitet ist und eine H2DB für die Tests. Damit laufen die IT's unabhängig von spring und sind sie wesentlich schneller. "Mocken" (ich glaube für mich wäre ein anderer Begriff angebracht) muss man nur das Senden der Registrierungsmail und das Erzeugen von PW-Hash's (md5 nutzt ich im Test). ATM hab ich 900 Tests (meist IT's) die in 30s auf einem i5-8th Gen laufen. Wobei bei für jeden Test die DB geleert wird. So macht Entwicklung Spaß. Ich glaube ich hab noch nie so angenehm gearbeitet. Vorher haben die EE frameworks immer ein wenig genervt oder ärger gemacht.

  • @ncls9730
    @ncls9730 Год назад

    Schön an einem Sonntag Abend zu sehen, dass es wieder neue qualitativ hochwertige Videos gibt :)

    • @archilab
      @archilab Год назад

      Danke für das nette Feedback :-). Ich plane für das kommende Jahr noch mal ein paar weitere Videos insbesondere zu Event-Driven Architecture.

  • @mexybeck
    @mexybeck Год назад

    Super erklärt! Vielen Dank! Nur eine Stelle versteh ich nicht, nämlich die Begründung, warum POST keine "sichtbare Semantik" hat. Ich würde "sichtbare Semantik" so verstehen, dass die Bedeutung des Requests ersichtlich ist, und das ist sie doch bei einem POST, nämlich "Anlegen der benannten Ressource", oder nicht? Sie sagen da, dass man dafür in den Body reingucken müsste, aber inwiefern unterscheidet sich das von PUT/PATCH? Ich würde sagen der Unterschied zwischen POST und PUT/PATCH liegt in dem Kriterium "identifizierbare Ressource".

    • @archilab
      @archilab Год назад

      Ja, da ist was dran.

  • @Sh-Butterflyy
    @Sh-Butterflyy Год назад

    super hilfreich. vielen lieben dank

  • @BadCerberus
    @BadCerberus Год назад

    Wow, der erste Kommentar überhaupt? Dann ist ein "Vielen Dank für deine Mühe!" aber erst recht überfällig! Sehr hilfreich zum Verständnis von RestAPI-Abfragen.🤓

  • @luggiiiluggiii7179
    @luggiiiluggiii7179 Год назад

    Das finde ich kurzsichtig

  • @fritzoscar3847
    @fritzoscar3847 Год назад

    Moin @archilab, danke für eure tollen Videos! Eine Frage: Wenn ich als Anforderung die Historisierbarkeit von Änderungsdaten habe, sprecht ihr ja hier von der Modellierung und entsprechend Implementierung dieser. Nun könnte ich ja aber auch darauf verzichten und stattdessen auch auf Auditing der Stamm-/Bestandsdaten direkt auf der Datenbank setzen. Gibt es hier einen Vorteil durch die Modellierung? (Vermutlich gilt die Antwort dann auch für Bewegungsdaten?) Danke :)

    • @asdsadasdarwerasddaa
      @asdsadasdarwerasddaa Год назад

      Wenn ich das direkt in der Datenbank mache, dann binde ich Fachlogik an eine bestimmte Technologie (meine [vermutlich relationale] DB), und ich verteile mein Domain Model an zwei Stellen. Daher bin ich kein Fan von so einem Ansatz.

  • @stefanw8203
    @stefanw8203 Год назад

    Wie immer gut erklärt anhand humorvollen Beispielen

  • @stefanw8203
    @stefanw8203 Год назад

    Danke, toll erklärt

  • @stefanw8203
    @stefanw8203 Год назад

    Danke für die super Darstellung, - einschließlich der Einordunung in bezug auf aktuelle Vorgehensweisen

  • @stefanw8203
    @stefanw8203 Год назад

    Danke, tolle Übersicht mit guter Erlärung

  • @fflecker
    @fflecker Год назад

    Endlich ein Vortrag, ohne sinnloses, nerviges, lautes Intro, kurz, klar, deutlich, übersichtlich und verständlich. Warum haben das nur so wenig Leute angesehen in dieser langen Zeit ?

    • @poparab
      @poparab Год назад

      Weil der Herr Professor, so verständlich etwas beibringt, das Sie das Video gar nicht anschauen müssen.

    • @fflecker
      @fflecker Год назад

      @@poparab "dass_Sie_das_Video gar nicht anschauen müssen" verstehe ich nicht im Bezug auf meinen Kommentar.

  • @tobrojekt27
    @tobrojekt27 Год назад

    Gutes Video! Hat mir sehr geholfen Interfaces richtig zu verstehen 👍

  • @xarkitux
    @xarkitux Год назад

    Toller Kanal! Hilft mir sehr beim lernen und weiterbilden, sowie diese Konzepte letztlich zu verstehen und anzuwenden. Alles sehr verständlich. Vielen lieben Dank für Deine Videos!

  • @Simon-ck8of
    @Simon-ck8of Год назад

    Danke

  • @Antonio-wm6ic
    @Antonio-wm6ic Год назад

    Vielen Dank für das tolle Video. Wie gliedert sich denn die Domäne in die Projektorganisation oder Projektstruktur ein? Ist die Domäne das Kerntream eines Projektteams oder ersätzt die Domäne den Produktowner und gibt Anforderung und Aufträge direkt an die Entwickler weiter? Gibt es in dem Modell einen Projektleiter?

    • @archilab
      @archilab Год назад

      Das sind eher zwei verschiedene orthogonale Ebenen. Die Domäne ist fachlich getrieben. Wie man eine Projektstruktur dazu definiert, hängt von vielen Faktoren ab - unter anderem natürlich der Projektgröße; es kann natürlich Projekte geben, die mehrere Domänen überspannen. Daher ist es eher sinnvoll, in (agilen, selbstorganisierten) Teams zu denken. Diese Teams sollten sich innerhalb einer Domänen- oder Subdomänengrenze befinden, damit eben Diskussionen leichter werden.

    • @Antonio-wm6ic
      @Antonio-wm6ic Год назад

      @@archilab Vielen Dank!

  • @ArturBaidi
    @ArturBaidi Год назад

    Hoffentlich bringt mich das weiter.

  • @HA-gu1qk
    @HA-gu1qk Год назад

    Viele Dank für die hilfreiche Videoreihe! Kleine Anmerkung: "Im vergangenen Video" am Anfang trifft nicht zu, das vergangene Video ist "Eine kurze Einführung in Domain-Driven Design (DDD)". Welches ist das gemeinte Video?

    • @archilab
      @archilab Год назад

      Gemeint ist das Video zur Textanalyse und Glossarerstellung: ruclips.net/video/Jyp0FQIMovY/видео.html

    • @HA-gu1qk
      @HA-gu1qk Год назад

      @@archilab Vielen Dank! Ich erstelle gerade ein DDD Domänenmodell für ein Java Programm.. Welches Video würden Sie mir dazu empfehlen außer das über Entitäten und Value Objects? (die Begriffe sind bekannt). Viele Grüße, ein Student

    • @archilab
      @archilab Год назад

      @@HA-gu1qk Ich würde mir in jedem Fall die beiden Videos zu Aggregates anschauen. Darüber hinaus das zu Domain Primitives. Zum ganzen Strategic Design (Bounded Context etc.) fehlen leider (noch) Videos. Interessant könnte zusätzlich sein, sich die drei Videos zum Logischen Datenmodell anzuschauen, auch wenn das nicht nach DDD klingt. Es hilft aber IMHO sehr dabei, die Abhängigkeiten richtig zu modellieren (und in der richtigen Richtung). Also ruclips.net/video/wSXWknKQkbU/видео.html, ruclips.net/video/RufBXPTt1SA/видео.html und ruclips.net/video/w6967RWoLTk/видео.html.

    • @HA-gu1qk
      @HA-gu1qk Год назад

      @@archilab Super, vielen Dank! :)

  • @HA-gu1qk
    @HA-gu1qk Год назад

    Danke, gut auf den Punkt gebracht. Diese Video-Playlist ist in dem Sumpf an schwammigen Tutorials und Zusammenfassungen zum DDD sehr notwendig.

  • @krausi2
    @krausi2 2 года назад

    Großartiges Lehrvideo

  • @kaisteen4616
    @kaisteen4616 2 года назад

    Super Videos 👍

  • @saadmd8972
    @saadmd8972 2 года назад

    Ehrenmann

  • @Toastpit
    @Toastpit 2 года назад

    Danke für das Video!

  • @tonisun4785
    @tonisun4785 2 года назад

    🤣😂🙃🤕

  • @tonisun4785
    @tonisun4785 2 года назад

    🤔 Freiberuflicher Softwareentwickler hört sich gut an

  • @tonisun4785
    @tonisun4785 2 года назад

    🤣😂🤔🤕

  • @tonisun4785
    @tonisun4785 2 года назад

    🤣😂🙃🤮

  • @sotsch9280
    @sotsch9280 2 года назад

    Der gute Evans hat 2005 Regeln aufgestellt die heute erst von der Mehrzahl verstanden werden und nach wie vor "best practice" sind ... eine Seltenheit in der IT - Welt

  • @tonisun4785
    @tonisun4785 2 года назад

    Habe meine Wissen befestigt. HQL Danke Herr Bente. ❤🧡💛💚💙💜🤎🖤🤍

  • @tonisun4785
    @tonisun4785 2 года назад

    🤣😂😅 WTF / min

  • @tonisun4785
    @tonisun4785 2 года назад

    Wie kann man soooo trocken lehren Herr Professor ?

    • @MitruKaz
      @MitruKaz 5 месяцев назад

      Soll er für Sie ein SubwaySurfer Video irgendwo einblenden oder eher singend lehren?

  • @juanitalaperejita3873
    @juanitalaperejita3873 2 года назад

    Thank you so much! This video help me so much with my code

  • @TheDrs47
    @TheDrs47 2 года назад

    Super Videos, vielen Dank für die Mühe!

  • @berndczech1554
    @berndczech1554 2 года назад

    Hi @archilab kann ich nochmal den Link zum Podcast mit Eric Evans haben?

    • @archilab
      @archilab 2 года назад

      www.se-radio.net/?s=226

  • @robz4632
    @robz4632 2 года назад

    Hilfreiche Liste der Datenstrukturen 👍

  • @marmont8005
    @marmont8005 2 года назад

    Guten Tag. Ich möchte Ihnen nur ein kleines Feedback geben und sagen, dass es super cool ist, dass Sie Ihr Wissen hier öffentlich teilen und dass Sie das sehr gut machen. Ich bin froh und dankbar, dass ich Zugang zu Ressourcen wie diesen habe, um mich auf meine zukünftige Karriere vorzubereiten. Ich beginne nächstes Jahr eine Ausbildung zum Fachinformatiker für Anwendungsentwicklung und dank solchen Vorträgen kann ich mir ein solides Fundament an Wissen aufbauen, um meine Karriere mit Zuversicht und Selbstvertrauen zu starten. Ich wünsche Ihnen alles Gute und weiterhin viel Erfolg!

  • @robertklinger2883
    @robertklinger2883 2 года назад

    Sehr cooles Video, gerne mehr davon! :D Ich finde Clean Code sollte man immer mit so praktsichen Beispielen erklären, so lernt man viel schneller und praktischer was. @25:30 Ich denke auch die grüne Variante ist riskant. Würden wir annehmen, dass auch das produkt.asMarkdown() stets einen Footer ergänzt, dann würde im getMarkdown() des Produktkatalogs für jedes Produkt der Footer injiziert werden. Vermutlich gehört der Footer semantisch gar nicht zum Markdown und eine völlig neue Funktion sollte das Markdown ergänzt mit dem Footer returnen. Hier würde das Problem dann auftreten, wenn ein Markdown aus mehreren Produktkatalogen erzeugt werden soll.