|
所在平台: Udemy |
课程主页: https://www.udemy.com/course/clean-code-unit-testing-java-junit/
课程评论:没有评论
**软件质量与单元测试:掌握自动化测试的艺术** 本课程“软件质量与单元测试”旨在帮助您理解并掌握软件自动化测试的核心概念和实践,从而提升软件质量。课程的起点是一位开发者从早期依赖复杂测试框架到意识到测试复杂性是代码设计问题的心路历程。通过亲身经历,课程强调了并非测试本身有问题,而是代码的可测试性设计不佳。 **课程核心内容:** * **自动化测试的重要性:** * 尽早发现错误。 * 编写更清晰的代码。 * 验证需求是否正确实现。 * 减少手动测试。 * 避免和检测回归错误。 * 提供快速反馈。 * 节省成本。 * 创建可执行的代码文档。 * 实现高软件质量。 * **核心测试概念与原则:** * **软件测试基础:** 介绍软件测试的基本原理。 * **测试金字塔:** 理解不同测试层级(单元测试、集成测试、UI测试)的优先级和比例。 * **黑盒、灰盒、白盒测试:** 了解不同的测试方法论。 * **JUnit 基础:** 学习 Java 中常用的单元测试框架 JUnit 的基本用法。 * **良好的命名实践:** 如何为测试编写清晰、易懂的名称。 * **优质单元测试的关键(FIRST原则):** 学习编写快速(Fast)、独立(Independent)、可重复(Repeatable)、自验证(Self-validating)和及时(Timely)的测试。 * **Mockito 基础:** 学习使用 Mockito 进行模拟(Mocking),以便隔离被测单元。 * **“少即是多”原则:** 强调测试的封装性,避免测试过于庞大。 * **测试的适度范围:** 明确单元测试应该测试什么,不应该测试什么。 * **面向对象设计原则的结合:** * **单一职责原则 (SRP):** 如何通过 SRP 提高代码的可测试性。 * **迪米特法则 (Law of Demeter):** 了解该法则对测试的影响。 * **现代软件开发原则:** * **Clean Code:** 学习编写干净、可读、可维护的代码,这与可测试性密切相关。 **课程特点:** 本课程并非简单的 JUnit 操作指南,而是侧重于**概念、原则和实践技巧**。它将帮助您理解“为什么”要这样做,并提供实用的建议,使您能够设计出易于测试、高质量的软件。通过调整代码设计来适应测试,您将能更早地发现设计中的问题,从而推动软件质量的整体提升。 **目标受众:** 任何希望通过自动化单元测试来提升软件质量的开发者。
Prolog:Ich habe es getan. Ich hatte angefangen, meine komplette Software automatisch zu testen. Hierfür lernte ich JUnit und Mockito und fing an, jede meiner Klassen automatisch zu testen. Ein tolles Gefühl. Irgendwann jedoch, kam ich nicht wirklich weiter. Der Umfang von JUnit war zu gering. Ich griff zu anderen, mächtigeren Frameworks und nutzte die Macht der Reflections, um auch in die tiefsten Innereien meiner Klassen zu schauen, meine Objekte zu manipulieren und so auch die verwinkelten Ecken meiner Software testen zu können.Aber auch das bereitete mir Probleme. Immer, wenn ich Änderungen am Code vornahm, oder diesen erweiterte, mussten dutzende von Tests angepasst werden. Bei jedem neuen Feature wurden die Tests komplexer und komplizierter. Was ein Aufwand! Irgendwann dämmerte es mir: Tests sind schlecht! Sie kosten viel mehr, als dass sie bringen! Ich schmiss die Tests raus und konnte wieder entspannt programmieren. Gut.die vielen Fehler, die erst spät entdeckt wurden. OK.die paar Regressionsfehler die ich nicht entdeckte..Ja.die ständig wieder auftauchenden Fehler über die sich der Kunde wundert.aber sonst?Dann jedoch wurde ich Mitglied eines neuen Teams. Mit diesem kam eine neue Software in meinen Verantwortungsbereich. Diese hatte eine wunderbare Testabdeckung. Einfache Tests. Saubere Tests. Leichte Tests. Ich war verwundert. In diesem Moment war mir klar, es war mein Code, der schlecht testbar war. Tests müssen nicht kompliziert sein. Man muss nur die Konzepte des Testens verstehen. Ich arbeitete mich in die Konzepte ein. Lernte die Prinzipien des guten Testens. Merkte, wie viel gutes Testen mit sauberem Softwaredesign zu tun hat. Was eine Freude! Es kribbelte. Ich schrieb Tests. Wurden sie zu kompliziert, passte ich das Design des Codes an. Meine Tests zeigten mir meine Fehler im Design. Genau das will ich dir vermitteln!Softwarequalität durch Unit Testing zeigt dir die Konzepte guter Tests. In diesem Kurs lernst du nicht nur JUnit und Mockito unter Java kennen - als typische Vertreter moderner Test-Frameworks - sondern auch die Konzepte und Ideen guter Tests.Dieser Kurs ist KEINE Schritt-für-Schritt Anleitung für JUnit! Es geht hier um mehr. Es gibt genug Tutorials um sich tiefer in JUnit einzuarbeiten - auch auf der JUnit-Seite. Hier geht es wirklich mehr um die Konzepte, um Prinzipien und praktische Tipps.Automatisiertes Unit-Testen ist wichtig:um Fehler so früh wie möglich zu entdecken. um saubereren Code zu schreibenum zu schauen, ob die Anforderungen richtig umgesetzt wurdenum das "per Hand"-Testen zu reduzierenum Regressionsfehler zu vermeiden und zu erkennenum dir schnelles Feedback deiner Arbeit zu gebenum dein Geld zu sparenum eine ausführbare Dokumentation deines Codes zu erstellenum eine hohe Qualität deiner Software zu erreichenDafür geht es in diesem Kurs um folgende Themen:Grundlagen des Software-TestingsDie TestpyramideBlack-, Grey- und White-Box-TestingJUnit GrundlagenGute NamenDer gute Unit-Test: FIRSTArgumente gegen das automatisierte TestenNur einen Aspekt testenMockito GrundlagenWeniger ist mehrWas soll getestet werden?Single Responsibility Principle (SRP)Das Gesetz von DemeterPrinzipien der modernen SoftwareentwicklungClean Code