<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Testing &amp; Quality on JAVAPRO International</title><link>https://javapro-en.svenruppert.com/categories/testing--quality/</link><description>Recent content in Testing &amp; Quality on JAVAPRO International</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Wed, 08 Apr 2026 12:00:02 +0000</lastBuildDate><atom:link href="https://javapro-en.svenruppert.com/categories/testing--quality/index.xml" rel="self" type="application/rss+xml"/><item><title>A Big Screen Experience for Java Developers &amp; Architects</title><link>https://javapro-en.svenruppert.com/a-big-screen-experience-for-java-developers-architects/</link><pubDate>Wed, 08 Apr 2026 12:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/a-big-screen-experience-for-java-developers-architects/</guid><description>&lt;p&gt;&lt;strong&gt;JCON EUROPE 2026 | April 20–23, 2026 | Cinedom Cologne&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Anyone talking about modern software development today can hardly avoid Java. Few technologies have shaped the enterprise world as sustainably, and few communities are as vibrant, diverse, and innovation-driven. This is exactly where JCON comes in: as a meeting point, a platform, and an experiential space for developers from all over the world. With participants from more than 70 countries, JCON has long since become an international gathering. &lt;strong&gt;Openness, knowledge sharing&lt;/strong&gt;, and a &lt;strong&gt;strong sense of community&lt;/strong&gt; remain at its core.&lt;/p&gt;</description></item><item><title>curl | bash | hacked: the unseen dangers in your dev lifecycle</title><link>https://javapro-en.svenruppert.com/curl-bash-hacked-the-unseen-dangers-in-your-dev-lifecycle/</link><pubDate>Wed, 25 Mar 2026 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/curl-bash-hacked-the-unseen-dangers-in-your-dev-lifecycle/</guid><description>&lt;p&gt;&lt;a href="https://schedule.jcon.one/2026/session/1062707"&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2026/03/2026-Magazin-Artikel-Banner-1024x213.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There’s a line of shell that looks harmless, even helpful:&lt;/p&gt;
&lt;div class="code-block" data-lang=""&gt;
 &lt;div class="code-block-head"&gt;
 &lt;span class="code-block-lang"&gt;CODE&lt;/span&gt;
 &lt;button type="button" class="code-block-copy" aria-label="Copy code" data-code-copy&gt;
 &lt;span class="code-block-copy-icon" aria-hidden="true"&gt;⧉&lt;/span&gt;
 &lt;span class="code-block-copy-label"&gt;Copy&lt;/span&gt;
 &lt;/button&gt;
 &lt;/div&gt;
 &lt;pre&gt;&lt;code&gt;curl &amp;lt;XXX&amp;gt; | bash&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;It promises speed. Convenience. &lt;em&gt;“Just install the thing and get on with your day.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;That promise is exactly why attackers love it.&lt;/p&gt;
&lt;p&gt;That one-liner doesn’t merely install a tool. It hands execution control to whatever sits on the other end of a network request, runs with your permissions on your machine, and within your environment. There is no sandbox. No review step. No guardrails.&lt;/p&gt;</description></item><item><title>Testing Spring BOOT Applications DEMYSTIFIED</title><link>https://javapro-en.svenruppert.com/testing-spring-boot-applications-demystified/</link><pubDate>Wed, 11 Mar 2026 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/testing-spring-boot-applications-demystified/</guid><description>&lt;p&gt;&lt;a href="https://youtu.be/Tr24w--ZXgU"&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2026/03/2026-Magazin-Artikel-Banner-1024x213.png" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Imagine it&amp;rsquo;s Friday, 5:00 PM. A pull request appears: a major update to Spring Boot 4.&lt;/p&gt;
&lt;p&gt;Your CI/CD pipeline turns green.&lt;/p&gt;
&lt;p&gt;Do you click &amp;ldquo;Merge&amp;rdquo; and head home for the weekend, confident that production will survive?&lt;/p&gt;
&lt;p&gt;For many developers, this &amp;ldquo;Friday Afternoon Deployment&amp;rdquo; is less of a goal and more of a gamble.&lt;/p&gt;
&lt;p&gt;Developers often treat testing as a chore - a box to tick for code coverage metrics - rather than a source of confidence. Writing tests in Spring Boot can feel like entering a labyrinth blindfolded: dozens of annotations, confusing configurations, and the looming threat of build times that stretch into coffee-break territory.&lt;/p&gt;</description></item><item><title>Test Your Tests: Mutation Testing in Java with PIT</title><link>https://javapro-en.svenruppert.com/test-your-tests-mutation-testing-in-java-with-pit/</link><pubDate>Wed, 21 Jan 2026 07:00:03 +0000</pubDate><guid>https://javapro-en.svenruppert.com/test-your-tests-mutation-testing-in-java-with-pit/</guid><description>&lt;h2 id="beyond-code-coverage"&gt;Beyond Code Coverage&lt;/h2&gt;
&lt;p&gt;Automated tests have become a standard component of professional software development. Whether through classic unit testing or a fully test-driven development (TDD) workflow, tests help to ensure that applications are correct, maintainable, and refactorable. Most development teams track code coverage using tools such as JaCoCo and integrate these metrics into their CI/CD pipelines. At first glance, this seems sufficient: high test coverage and we are safe – right?&lt;/p&gt;</description></item><item><title>Agile Nightmares - When Agile Methods Become an Innovation Barrier</title><link>https://javapro-en.svenruppert.com/agile-nightmares-when-agile-methods-become-an-innovation-barrier/</link><pubDate>Wed, 22 Oct 2025 09:03:10 +0000</pubDate><guid>https://javapro-en.svenruppert.com/agile-nightmares-when-agile-methods-become-an-innovation-barrier/</guid><description>&lt;h2 id="the-scary-figures-of-agility"&gt;The Scary Figures of Agility&lt;/h2&gt;
&lt;p&gt;In the dynamic world of software development and beyond, agility has established itself as a&lt;br&gt;
defining approach.&lt;/p&gt;
&lt;p&gt;However, behind the promise of flexibility, customer orientation, and continuous improvement, pitfalls sometimes lurk. Calls are increasing to declare agility as ineffective or even &amp;lsquo;dead&amp;rsquo;. The real reasons for this growing scepticism, however, rarely lie in the agile principles themselves, but rather in their creeping or even deliberate misinterpretation and application.&lt;/p&gt;</description></item><item><title>MockServer NeoLight: A Lightweight Alternative for API Testing with Testcontainers</title><link>https://javapro-en.svenruppert.com/mockserver-neolight-a-lightweight-alternative-for-api-testing-with-testcontainers/</link><pubDate>Fri, 17 Oct 2025 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/mockserver-neolight-a-lightweight-alternative-for-api-testing-with-testcontainers/</guid><description>&lt;p&gt;The open-source project &lt;a href="https://github.com/xdev-software/mockserver-neolight"&gt;MockServer NeoLight&lt;/a&gt; has been released as a lightweight rewrite of the original &lt;a href="https://github.com/mock-server/mockserver"&gt;MockServer&lt;/a&gt;. Its primary focus lies on &lt;strong&gt;simplicity&lt;/strong&gt;, &lt;strong&gt;maintainability&lt;/strong&gt;, and seamless integration with &lt;a href="https://java.testcontainers.org/"&gt;&lt;strong&gt;Testcontainers&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The MockServer concept allows developers to mock HTTP and HTTPS requests in order to &lt;strong&gt;simulate APIs for testing purposes&lt;/strong&gt;. By setting expectations for incoming requests and defining responses, it creates controlled environments for integration testing. This isolates the system under test from real external dependencies, leading to predictable and repeatable results.&lt;/p&gt;</description></item><item><title>Supercruising with Testcontainers: Making Tests Faster and More Flexible</title><link>https://javapro-en.svenruppert.com/supercruising-with-testcontainers-making-tests-faster-and-more-flexible/</link><pubDate>Fri, 10 Oct 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/supercruising-with-testcontainers-making-tests-faster-and-more-flexible/</guid><description>&lt;p&gt;&lt;strong&gt;Testcontainers&lt;/strong&gt; has become an essential tool in many Java projects to run integration and system tests in realistic environments. However, when test scenarios grow complex, developers often run into limitations—especially around configuration, parallelization, and resource usage. An open-source framework built on top of Testcontainers addresses some of these challenges with powerful extensions.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/xdev-software/tci-base"&gt;&lt;strong&gt;Testcontainers Infrastructure (TCI) Framework&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="1-improve-customizability-and-parallelization"&gt;&lt;strong&gt;1. Improve customizability and parallelization&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;By using the factory pattern when creating containers, the goal is to make it easier for developers to adjust the containers as needed.&lt;/p&gt;</description></item><item><title>Where to Use AI FOR Development: A Practical Guide for Engineers and Managers</title><link>https://javapro-en.svenruppert.com/where-to-use-ai-for-development-a-practical-guide-for-engineers-and-managers/</link><pubDate>Fri, 26 Sep 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/where-to-use-ai-for-development-a-practical-guide-for-engineers-and-managers/</guid><description>&lt;p&gt;There&amp;rsquo;s a lot of noise out there about AI generating code for you, creating tests, filing bugs, and possibly even conducting your sprint planning meetings. It&amp;rsquo;s easy to get swept up in the hype. You&amp;rsquo;ve probably seen claims like &amp;ldquo;AI can build your app from a prompt&amp;rdquo; or &amp;ldquo;Ship twice as fast with half the team&amp;rdquo;. Sounds appealing doesn&amp;rsquo;t it? The reality, as always, is more nuanced.&lt;/p&gt;
&lt;p&gt;In this article, I want to puncture some of the more inflated expectations and instead offer a grounded view of where AI can help in software development today. What works, what doesn&amp;rsquo;t, and what might be worth trying if you squint hard enough. The lens I want to use is risk. Because fundamentally, that&amp;rsquo;s what software development is: a careful game of managing risk against code.&lt;/p&gt;</description></item><item><title>Mastering JUnit: Navigating between old and new versions for a smarter test strategy</title><link>https://javapro-en.svenruppert.com/mastering-junit-navigating-between-old-and-new-versions-for-a-smarter-test-strategy/</link><pubDate>Wed, 10 Sep 2025 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/mastering-junit-navigating-between-old-and-new-versions-for-a-smarter-test-strategy/</guid><description>&lt;p&gt;After the JUnit 5 was released, a lot of developers just added this awesome new library in their projects, because unlike others versions, this new version, is not necessary migrate from JUnit 4 to 5, you just need include the new library in your project, and with all the engine of JUnit 5 you can do your new tests using JUnit 5, and the older one with JUnit 4 or 3,  will keep running without problem. &lt;/p&gt;</description></item><item><title>Testing Done Right!</title><link>https://javapro-en.svenruppert.com/testing-done-right/</link><pubDate>Thu, 28 Aug 2025 07:00:00 +0000</pubDate><guid>https://javapro-en.svenruppert.com/testing-done-right/</guid><description>&lt;p&gt;Oh no! Not another article about testing! You can find a lot of publications about automated testing in software development, but there is a good reason for it. Testing your code is one of the most important aspects in software development!&lt;/p&gt;
&lt;p&gt;I’m not going to write yet another article about how you should write your tests. I’m also not covering the details of various types of tests. I will elaborate on some pitfalls you should be aware of when writing tests and how to solve them. This is not a scientific approach; it is just my opinion. What&amp;rsquo;s covered in this article? Let&amp;rsquo;s start with discussing why testing is so important in software development. Next, I’ll elaborate on some risks and how we can avoid them. I will also dive into sociable testing and test data generation.&lt;/p&gt;</description></item><item><title>A 10X Approach to Quality Assurance</title><link>https://javapro-en.svenruppert.com/a-10x-approach-to-quality-assurance/</link><pubDate>Wed, 20 Aug 2025 07:00:02 +0000</pubDate><guid>https://javapro-en.svenruppert.com/a-10x-approach-to-quality-assurance/</guid><description>&lt;p&gt;It&amp;rsquo;s often true that what you measure will define you. Measurements become critical indicators, which eventually become goals. Measure the speed of something, and soon, almost inevitably, the goal will be to increase it.&lt;/p&gt;
&lt;p&gt;In time, those goals and measurements will become the driving force behind behavior. The original objectives will be lost to history, and the new focus will be considered the norm.&lt;/p&gt;
&lt;p&gt;This transformation occurs frequently and is often the downfall of organisations. They forget what they are in business to achieve, get lost in the process, and have these fabricated objectives.&lt;/p&gt;</description></item><item><title>Should we stop discussing about technical debt... with top management?</title><link>https://javapro-en.svenruppert.com/should-we-stop-discussing-about-technical-debt-with-top-management/</link><pubDate>Wed, 18 Jun 2025 07:00:01 +0000</pubDate><guid>https://javapro-en.svenruppert.com/should-we-stop-discussing-about-technical-debt-with-top-management/</guid><description>&lt;p&gt;Cyclomatic complexity, coupling and cohesion, orthogonality, big O… are concepts that technical teams use when analyzing complex software systems and can establish why it is difficult to change them. Technical language refers to the technical aspects of those systems. But when we have to explain to non-technical people in the organization why an application has bugs, why a feature is not on time, or why we need a database expert to make a simple change to a service, we cannot use those concepts. To do that, we have to speak in a language that those non-technical people understand the intrinsic nature that exists in systems developed with software.&lt;/p&gt;</description></item><item><title>The quick check for your software - the Software Coma Scale (SCS)</title><link>https://javapro-en.svenruppert.com/the-quick-check-for-your-software-the-software-coma-scale-scs/</link><pubDate>Mon, 07 Apr 2025 11:22:49 +0000</pubDate><guid>https://javapro-en.svenruppert.com/the-quick-check-for-your-software-the-software-coma-scale-scs/</guid><description>&lt;p&gt;Do you know this situation: You have are sitting on your desk when your boss asks you to “just have a look at an old software-system” at its current status? Since he doesn&amp;rsquo;t know much about your job (IT), you have to use a system that&lt;/p&gt;
&lt;p&gt;a) he understands and&lt;/p&gt;
&lt;p&gt;b) allows you to make an informed assessment relatively quickly.&lt;/p&gt;
&lt;p&gt;Or a customer asks whether you could change this or that thing in a system you don&amp;rsquo;t know - or even take over the maintenance for it. And just like your boss, he is not an IT specialist!&lt;/p&gt;</description></item><item><title>The Art of Static Code Analysis</title><link>https://javapro-en.svenruppert.com/the-art-of-static-code-analysis/</link><pubDate>Tue, 04 Feb 2025 22:49:48 +0000</pubDate><guid>https://javapro-en.svenruppert.com/the-art-of-static-code-analysis/</guid><description>&lt;h2 id="the-necessity-for-static-analysis-of-source-code-"&gt;The Necessity for Static Analysis of Source Code …&lt;/h2&gt;
&lt;p&gt;Most Java (and not only) developers have used at minimum some sort of a static analysis tools to perform a task such as (to name a few):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;deriving source code metrics such as line of code or &lt;a href="https://en.wikipedia.org/wiki/Cyclomatic_complexity"&gt;cyclomatic complexity&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;discovering bugs, vulnerabilities or code smells such as unused variables (what popular IDEs typically do);&lt;/li&gt;
&lt;li&gt;performing automated refactoring or code completion;&lt;/li&gt;
&lt;li&gt;enforcing code and quality standards.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To perform static code analysis we typically need a proper representation of source code, suitable for analysis. A programming language can be described by a formal grammar. Furthermore a parser can be created or generated following the rules of a formal grammar to create proper representation (typically a parse tree) from source code. Based on the type of language we want to represent we can use different types of formal grammars:&lt;/p&gt;</description></item><item><title>Thinking differently about testing</title><link>https://javapro-en.svenruppert.com/thinking-differently-about-testing/</link><pubDate>Mon, 27 Jan 2025 16:35:56 +0000</pubDate><guid>https://javapro-en.svenruppert.com/thinking-differently-about-testing/</guid><description>&lt;p&gt;10x Insights to help take a different view of quality assurance&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve given a few talks about 10x developers, or rather 10x professionals and been involved in process (re)engineering for many teams and projects. However much you learn about people and their roles - there&amp;rsquo;s always something new to discover. In fact, it&amp;rsquo;s amazing how often your worldview is blinkered, how often there&amp;rsquo;s a different way to do or think about some aspect of your life or career.&lt;/p&gt;</description></item><item><title>1BRC with AI - curious and curiouser said the LLM</title><link>https://javapro-en.svenruppert.com/maximize-productivity-with-ai-tools-in-java-development/</link><pubDate>Wed, 15 Jan 2025 11:48:56 +0000</pubDate><guid>https://javapro-en.svenruppert.com/maximize-productivity-with-ai-tools-in-java-development/</guid><description>&lt;blockquote class="pullquote"&gt;
 &lt;span class="pullquote-mark" aria-hidden="true"&gt;“&lt;/span&gt;
 &lt;div class="pullquote-body"&gt;&lt;p&gt;&lt;em&gt;Did you try turning it off and on first?&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;em&gt;(I promise this is the last 1BRC-related post). Read on to discover how large language models (LLMs) performed in generating Java code, their strengths in context-aware development, and challenges such as hallucinations and nuanced errors. Learn what makes a good AI dev tool and what makes a great IDE integration.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote class="pullquote"&gt;
 &lt;span class="pullquote-mark" aria-hidden="true"&gt;“&lt;/span&gt;
 &lt;div class="pullquote-body"&gt;&lt;/div&gt;
&lt;/blockquote&gt;&lt;p&gt;A definition of insanity is repeating an action and expecting a different outcome.  As developers, we’re used to doing that :-)  It’s part of our operating manual. &lt;/p&gt;</description></item><item><title>My Top 10 Principles for getting the best from AI (for developers)</title><link>https://javapro-en.svenruppert.com/my-top-10-principles-for-getting-the-best-from-ai-for-developers/</link><pubDate>Mon, 02 Dec 2024 11:56:54 +0000</pubDate><guid>https://javapro-en.svenruppert.com/my-top-10-principles-for-getting-the-best-from-ai-for-developers/</guid><description>&lt;p&gt;&lt;em&gt;AI tools for developers: principles, insights, and the importance of clean code.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Every day, I encounter a new AI tool, whether a new capability is added to an existing tool or an entirely new offering. I actively use several AI tools, including ChatGPT, Grammarly, and Amazon Q Developer, each serving different purposes. I pay for pro access to ChatGPT and Grammarly, though I sometimes consider switching to Claude.ai, which occasionally proves invaluable. s a view of AI tools for developers: my principles, insights and ultimately the realisation that development practises such as clean code is more essential than ever&lt;/p&gt;</description></item><item><title>The AI Mona Lisa Challenge: Precision and Security Adjustments for Your CI/CD Pipeline</title><link>https://javapro-en.svenruppert.com/the-ai-mona-lisa-challenge-precision-and-security-adjustments-for-your-ci-cd-pipeline/</link><pubDate>Thu, 21 Nov 2024 12:22:47 +0000</pubDate><guid>https://javapro-en.svenruppert.com/the-ai-mona-lisa-challenge-precision-and-security-adjustments-for-your-ci-cd-pipeline/</guid><description>&lt;p&gt;&lt;em&gt;&amp;ldquo;Mona Lisa, Mona Lisa, men have named you; you&amp;rsquo;re so like the lady with the mystic smile.&amp;rdquo;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Last time, I finished a &lt;a href="https://javapro.io/2024/10/17/are-ai-coding-tools-worth-it-part-1/"&gt;set of articles&lt;/a&gt; about using AI coding tools.  In the end, my conclusion was that the tools can help greatly but that right now,  using them to generate whole programs was pushing the envelope.  As helpers, as pseudo-pair-programmers,  the tools can offer great value and make you more productive.  However, it’s essential to understand that this process works because of the interaction between humans and AI.  Without the steering and a continuous mix of rejection and acceptance,  the AI can’t learn how to respond correctly.  &lt;/p&gt;</description></item><item><title>1 Billion RECORD CHallenge - AI Style</title><link>https://javapro-en.svenruppert.com/1-billion-record-challenge-ai-style/</link><pubDate>Thu, 07 Nov 2024 10:05:34 +0000</pubDate><guid>https://javapro-en.svenruppert.com/1-billion-record-challenge-ai-style/</guid><description>&lt;p&gt;&lt;strong&gt;Previously …&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I recently &lt;a href="https://javapro.io/2024/10/17/are-ai-coding-tools-worth-it-part-1/"&gt;wrote&lt;/a&gt; about my experiences with getting AI coding tools to find bugs and write tests.  I picked five different tools. The selection criteria were simple - free or trial with no credit card needed.  I chose three tools designed to help developers and two general-purpose LLMs.  &lt;/p&gt;
&lt;p&gt;I gave them a 1000-line Java program and asked them to do three things.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add Javadoc to explain what the code did&lt;/li&gt;
&lt;li&gt;Analyse the code for bugs and design weaknesses&lt;/li&gt;
&lt;li&gt;Create Junit testcases that would provide reasonable code coverage.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The results were disappointing but, in hindsight, predictable.  Overall, the tools were better at creating documentation than finding bugs and, apart from one, were pretty poor at writing test cases.  &lt;/p&gt;</description></item><item><title>Are AI Coding tools worth it - RESULTS</title><link>https://javapro-en.svenruppert.com/are-ai-coding-tools-worth-it-results/</link><pubDate>Wed, 30 Oct 2024 12:32:45 +0000</pubDate><guid>https://javapro-en.svenruppert.com/are-ai-coding-tools-worth-it-results/</guid><description>&lt;h5 id="background"&gt;Background&lt;/h5&gt;
&lt;p&gt;In &lt;a href="https://javapro.io/2024/10/17/are-ai-coding-tools-worth-it-part-1/"&gt;Part 1&lt;/a&gt;&lt;a href="https://javapro.io/2024/10/17/are-ai-coding-tools-worth-it-part-1/"&gt;,&lt;/a&gt; I examined the value of AI tools for developers, especially those that help them create or understand code. The tools selected are all free to use and a mix of general-purpose ones and those that declare they are specifically for coding purposes.&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://javapro.io/2024/10/23/are-ai-coding-tools-worth-it-part-2/"&gt;Part 2&lt;/a&gt;, I examined these tools&amp;rsquo; ability to find bugs and weaknesses. The results were spotty and not particularly useful or time-saving.&lt;/p&gt;
&lt;p&gt;In this part, we&amp;rsquo;ll look at the results from asking these tools to create JUnit tests for the code and decide who wins (and why).&lt;/p&gt;</description></item><item><title>Are AI Coding tools worth it - Part 2</title><link>https://javapro-en.svenruppert.com/are-ai-coding-tools-worth-it-part-2/</link><pubDate>Wed, 23 Oct 2024 16:04:46 +0000</pubDate><guid>https://javapro-en.svenruppert.com/are-ai-coding-tools-worth-it-part-2/</guid><description>&lt;p&gt;In &lt;a href="https://javapro.io/2024/10/17/are-ai-coding-tools-worth-it-part-1/"&gt;Part 1&lt;/a&gt;&lt;a href="https://javapro.io/2024/10/17/are-ai-coding-tools-worth-it-part-1/"&gt;,&lt;/a&gt; I started to examine the value of AI tools for developers, especially those that help them create or understand code. The tools selected are all free to use and are a mix of general-purpose ones and those that declare they are specifically for coding purposes&lt;/p&gt;
&lt;h6 id="tools-being-evaluated"&gt;Tools being evaluated&lt;/h6&gt;
&lt;p&gt;1: ChatGPT  &lt;a href="https://chatgpt.com/"&gt;https://chatgpt.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2: Claude &lt;a href="https://claude.ai/"&gt;https://claude.ai/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3: Amazon Q Developer  &lt;a href="https://aws.amazon.com/q/developer/"&gt;https://aws.amazon.com/q/developer/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4: Codeium &lt;a href="https://codeium.com/"&gt;https://codeium.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;5: JetBrains AI Assistant &lt;a href="https://www.jetbrains.com/ai/"&gt;https://www.jetbrains.com/ai/&lt;/a&gt;&lt;/p&gt;
&lt;h6 id="i-asked-each-tool-three-questions"&gt;&lt;strong&gt;I asked each tool three questions&lt;/strong&gt;&lt;/h6&gt;
&lt;ol&gt;
&lt;li&gt;“Generate the main Javadoc to describe this class.”&lt;/li&gt;
&lt;li&gt;“Assess the class for bugs and coding weaknesses and provide corrections or guidance.”&lt;/li&gt;
&lt;li&gt;” Generate Junit test cases to provide around 90% code coverage -especially for edge conditions etc.”&lt;/li&gt;
&lt;/ol&gt;
&lt;h6 id="results-so-far"&gt;Results so FAR&lt;/h6&gt;
&lt;p&gt;In &lt;a href="https://javapro.io/2024/10/17/are-ai-coding-tools-worth-it-part-1/"&gt;Part 1,&lt;/a&gt; we saw that they could all generate Javadoc, but none could do it particularly well. ChatGPT came off best as providing the most comprehensive response, but all the tools were prone to hallucinations that made the result misleading.&lt;/p&gt;</description></item><item><title>Unit Testing Web Frontend For Accessibility Aspect</title><link>https://javapro-en.svenruppert.com/unit-testing-web-frontend-for-accessibility-aspect/</link><pubDate>Mon, 21 Oct 2024 14:00:53 +0000</pubDate><guid>https://javapro-en.svenruppert.com/unit-testing-web-frontend-for-accessibility-aspect/</guid><description>&lt;p&gt;&lt;figure class="post-figure"&gt;
 &lt;img src="https://javapro-en.svenruppert.com/uploads/2024/10/image-1.jpeg" alt="" loading="lazy" decoding="async"&gt;
 
 
 
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;ldquo;&lt;a href="https://www.flickr.com/photos/136485307@N06/48286447167"&gt;Apollo 11 Altitude Chamber Test&lt;/a&gt;&amp;rdquo; by &lt;a href="https://www.flickr.com/photos/136485307@N06"&gt;Apollo Image Gallery&lt;/a&gt;/ &lt;a href="https://creativecommons.org/publicdomain/mark/1.0/?ref=openverse"&gt;pdm 1.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When we’re talking about unit testing, it is something that developers want to avoid, but what about accessibility?? the same thing, even most developers will say, ‘Nah, I&amp;rsquo;m good` *kidding&lt;/p&gt;
&lt;p&gt;So, what is unit testing?? Isn’t it enough when we test the feature we developed works fine? The short answer may not be! I’ll tell you why&amp;hellip;&lt;/p&gt;
&lt;p&gt;Unit testing is a way of testing a unit — the smallest piece of code that can be logically isolated in a system. In most programming languages, that is a function, a subroutine, a method, or a property. The isolated part of the definition is important. In his book “Working Effectively with Legacy Code”, author Michael Feathers states that such tests are not unit tests when they rely on external systems: “If it talks to the database, it talks across the network, it touches the file system, it requires system configuration, or it can’t be run at the same time as any other test.”Modern versions of unit testing can be found in frameworks like JUnit, or testing tools like &lt;a href="https://smartbear.com/product/testcomplete/overview/"&gt;TestComplete&lt;/a&gt;. Look a little further and you will find SUnit, the mother of all unit testing frameworks created by Kent Beck, and a reference in chapter 5 of The Art of Software Testing. Before that, it was mostly a mystery. I asked Jerry Weinberg about his experiences with unit testing — “We did unit testing in 1956. As far as I knew, it was always done, as long as there were computers”.Regardless of when and where unit testing began, one thing is for sure. Unit testing is here to stay. Let’s look at some more practical aspects of unit testing. In fact, the traditional test of our application by black box testing, the thing that we talked about earlier manual testing only finds whether the feature that we developed already works or not. Then, when we talk about something important thing that most developers skip or miss is about accessibility (a11y). Accessibility is when we design, and develop products and any application that we put on it our thoughts about how this thing will work for everyone literally everyone, diversity disabilities included. So when we combine both a11y and unit testing it will lead to perfection.&lt;/p&gt;</description></item><item><title>Are AI coding tools worth it? - part 1</title><link>https://javapro-en.svenruppert.com/are-ai-coding-tools-worth-it-part-1/</link><pubDate>Thu, 17 Oct 2024 10:00:00 +0000</pubDate><guid>https://javapro-en.svenruppert.com/are-ai-coding-tools-worth-it-part-1/</guid><description>&lt;p&gt;This is the start of a few posts about AI coding tools. This one sets the scene and gives a taste of what I found. In later posts I&amp;rsquo;ll show more of what I got from using them &lt;em&gt;as is.&lt;/em&gt; , explore what the sweet spots might be and end with a harder look at getting value out of them. If you want to skip to the end go &lt;a href="https://javapro.io/2024/11/07/1-billion-record-challenge-ai-style/"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="a-long-time-ago-in-a-company-far-far-away"&gt;&lt;strong&gt;A long time ago, in a company far, far away…&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt; In the very early 90&amp;rsquo;s I had the, well, honour is not quite the word I want, the experience may be, to use a prototype of one of the first viable commercial speech-to-text and speech-to-control tools.  I used it at work; I used it at home. It was a disaster in all ways.  In the first go-around, the training for learning your voice was arduous, literally painful, and demanding. In the second prototype, it would often pick up the sound of the hard disk on the computer and interpret it as text, to much hilarity for all. &lt;/p&gt;</description></item></channel></rss>