The process of upgrading from JUnit 4 to 5 requires you to update annotations, assertions, assumptions, dependencies, etc. There are several tools out there to (semi-) automate the upgrade process. …
This deep dive takes a look at the results of the DevQualityEval v0.6 which analyzed over 80 different LLMs for generating quality code (for Java, Go and Ruby). OpenAI’s o1-preview and o1-mini …
We provide an overview and details about the features delivered in Java 23 (JDK 23) released on 17 September 2024. Read the post to learn about what is new in Java 23 and why these new and updated …
Test impact analysis identifies tests affected by code changes to save time on test execution. Even a basic implementation leads to a 29% reduction in test execution times on average, showcased here …
We cover the strategies that help you control costs when using Large Language Models to generate text or software code. Integrating LLMs into your workflow can open up a wide range of use cases where …
Observability helps monitor the operation of LLM-based systems. The following tools and techniques can be used to track the resources and behavior of Large Language Models (LLMs) used in production. …
The project was to extend our DevQualityEval LLM code generation benchmark with a new language: Ruby. We successfully used LLMs to transpile existing Java and Go code (tasks and test cases) to Ruby. …
This post covers the use of Aider, a generative LLM-powered software engineering tool, to generate software code. 🦾 Better LLMs for software development Symflower helps you build better software by …
This post provides an overview of the various LLM-based generative development tools available out there. Are we missing an AI tool for coding? Let us know! Large Language Models are now advanced …
This post compares the various benchmarks that help rank large language models for software development tasks. 💡 A blog post series on LLM benchmarking Read all the other posts in Symflower’s …
This post covers the most widely used benchmarks for assessing the performance of large language models. Table of contents: Why use benchmarks for LLM evaluation? The best LLM benchmarks Reasoning, …
This post details the complex statistical and domain-specific scorers that you can use to evaluate the performance of large language models. It also covers the most widely used LLM evaluation …
This deep dive takes a look at the results of the DevQualityEval v0.5.0 which analyzed over 180 different LLMs for code generation (Java and Go). DeepSeek Coder 2 took LLama 3’s throne of …
Part 1 of our LLM evaluation series covers the basics of LLM evaluation including popular benchmarks and their metrics. With the (generative) AI revolution raging full steam ahead, new large language …
In this post, we dive into code reuse and some key code reusability best practices that help you optimize Java code for reuse. What is code reusability? Not all code is one of a kind, highly …
In this post, we look at Go tracing and its support to manually instrument applications to gain valuable insights into its execution behavior. We’ll be using a simple step-by-step example to …
This post walks you through our approach to addressing reported software problems with Symflower. Check out this blog post about categorizing software problems with stack traces and code diffs to …
In this post, we dive into the details of modules in Java, covering the most important types and their differences. What are modules in Java? Modules are used to create separate units of software and …
In this post, we evaluate test template generation with Symflower in real-life, large-scale Spring Boot projects. See how we tested Symflower on 10 applications and check out the results. Developing …
In this post, we cover the three key ways of initializing test data for your unit tests: direct initialization, the Object Mother pattern, and the Test Data Builder pattern. When testing to ensure …
This deep dive takes a look at the results of the DevQualityEval v0.4.0 which analyzed 138 different LLMs for code generation (Java and Go). LLama 3 is gearing up to take GPT-4’s throne, the …
This blog post showcases Symflower’s automatic error reporting process, which involves a novel approach to categorizing huge amounts of software problems by combining stack traces and code …
In this article we are looking at an evaluation of 123 LLMs on how well they can write automated tests for an empty Go function. What code generation abilities do these LLMs already have? Which …
This post covers the use of controllers in Spring Boot and describes the differences between the @Controller and @RestController annotations. Table of contents: What are controllers in Spring Boot? …
In part 4 of our guide to unit testing, we list a few of the most important best practices for writing effective unit tests. Unit tests are a powerful tool to enhance the robustness of your code. …
Part 3 of our introduction to unit testing tackles the topic of automating unit tests in your application development workflow. In our series about unit testing, we’ve already covered what unit …
Part 2 of our introduction to unit testing covers how to write unit tests and presents some unit testing tools for Java. Unit tests form a core practice of software development, but not all developers …
In part 1/4 of our new series on unit testing, we’re tackling the basics of what unit testing is and why it should be used. Unit testing is (or rather, should be) a core practice for any …
In this post, we dive into the many differences between Spring Web MVC and Spring WebFlux to help you determine which one to use for your project. Table of contents: What is Spring Web MVC? What is …
This post covers static analysis tools for Java, with a list of some of the best linters and other static analysis tools for Java. Table of contents: What is static code analysis? What’s the …
This post covers the various aspects of creating a folder structure for your Spring Boot projects that is logical and easy to navigate for other members of your team. Table of contents: Key …
Using JUnit for your daily unit testing? Part 3 of our series on JUnit tips and tricks covers specifying a sequence for your tests to be executed in. In part 1 of this series, we showed how to ignore …
In part 2 of our series on JUnit testing tips and tricks, we cover the topic of tagging and filtering test cases in both JUnit 4 and JUnit 5. In the first part of this series, we covered how to ignore …
In this post, we’ll cover the basics of mocking objects when unit testing Spring Boot applications with examples. Check out all the other parts of our blog post series on Spring Boot: Part 1: …
JDK 22 was released on 19 March 2024. This post provides a quick look at all the features we are excited about in Java 22. Java’s previous version JDK 21 (LTS) was released on 19 September 2023 …
Part 1 of our series on JUnit testing tips and tricks is about ignoring test cases in JUnit 4 and JUnit 5. JUnit is the most popular testing framework used by thousands of developers. If you’re …
Heard all the good things about Spring Boot but not quite sure what it’s all about? It’s OK, we’ve got you covered: this post is your fundamental guide to Spring Boot! Introduction: …
Security testing is becoming a crucial part of software development. This post covers the fundamental techniques and tools that software developers can rely on. With cyberattacks on the news seemingly …
Software testing is changing. Learn about the next evolutionary steps we expect to see in 2024 in the world of Quality Assurance! Look back at 2023 and you’ll see that this past year has taught …
There are various mocking frameworks for Java developers out there. In this post, we compare Mockito, EasyMock, and JMockit with a Java example to help you pick the right one for your needs! What is …
JetBrains Aqua is the IntelliJ IDE for test automation Quality Assurance specialists. Here’s what you need to know about this new IDE! Released in 2022, JetBrains Aqua is a new standalone IDE …
In this blog post, we dive into the topic of chaos engineering for testing the resilience of software products. Our series about the software testing jungle introduced the basic categories of testing. …
Those new to the Spring ecosystem can easily get confused about the differences between Spring, Spring Boot, Spring Web MVC, and Spring WebFlux. In this post, we clear it all up! A guide to the Spring …
Automatically generating values for unit testing can be a huge time-saver. This post features a comparison of two alternative strategies for generating test values: fuzzing and symbolic execution. …
This post takes a look at two incredibly useful tools that transform the way software developers work. Read on to find out about the background and use of GitHub Copilot and Symflower for software …
JUnit and TestNG are the most popular unit testing frameworks for Java code. This post provides an overview of their similarities and differences. While they are the most well-known frameworks for …
Spring Boot is the most popular application framework out there. This guide provides best practices to help test your Spring Boot applications! What is Spring Boot? Spring Boot is a …
Mutation testing (an error-based testing technique / fault-based testing technique) is a lesser-used technique to help ensure high software quality. This post provides an introduction to mutation …
JDK 21 is here! This article details all the updates and changes in the latest version Java 21 with quick descriptions and examples to help you understand what is new. The previous JDK version, Java …
This post analyzes the findings of the State of Testing™ Report’s 2023 edition with all the key trends, practices, and challenges in software testing relevant now and in the near future. The …
The software testing trophy is a lesser-known alternative to the popular testing pyramid. This post dives into the details of the testing trophy and its differences to the testing pyramid. As we know, …
At Symflower we love rebasing commits. This is not a result of us enjoying the suffering of our team members that are not yet fluent with Git, but it makes development, debugging problems and …
Unit testing and integration testing are both indispensable in software quality assurance. This post covers the basics of both types of testing and introduces a useful tool to automate your testing …
KISS (aka Keep it Simple, Stupid!) is a handy principle for anyone designing complex systems such as software. This post dives into how you can apply it in your projects! In our series about …
This step-by-step guide walks you through the JUnit 5 upgrade process to help you migrate from JUnit 4 to JUnit 5. For a fully automated solution, you can use our migration tool to handle the entire …
Inadequate software testing has many drawbacks such as the risk of bugs and errors, increased development time, and growing technical debt – all covered in previous parts of this series. In this last …
Many software developers use coding katas to get better at writing efficient and high-quality code. This post dives into the details of code kata exercises and how they can help enhance your coding. …
In this final article of our 4-part series on debugging, we’ll walk you through a practical example of using Symflower to find simple reproducers for bugs in your code. This blog series on …
Test-Driven Development promises significant benefits, but its adoption is far from straightforward. In this post, we’re sharing some best practices and strategies to ensure the success of your …
As many teams know, skipping adequate testing can result in growing technical debt. That’s what we dive into in part 3 of our series on the costs of missing software tests. In previous parts of …
Test-Driven Development (TDD) is gaining traction in the industry. This blog post introduces our white paper which helps you and your team get familiar with TDD. The post also mentions some of the key …
Inadequate software testing is known to result in longer development times, leading to delays in time to market. That’s what we dive into in this article, part 2 of our series on the costs of …
This guide to using unit tests to find and fix bugs in software applications is part 3 of our debugging series, focusing on the practical side of debugging. In part 1 of this series, we gave a general …
There are some widely used unit testing frameworks and useful tools that can greatly support your unit testing efforts. Here’s a top list of the ones we find best! Most developers today are …
Missing or skipping adequate testing can lead to risks that could endanger the success of any software project. But what exactly are the specific and practical drawbacks of poor software quality due …
In part 2 of our post series on debugging, we’re covering the practical aspect, providing some useful workflows and tools that you can use to put the TRAFFIC principle into action when debugging …
In this post, we list the most useful IntelliJ productivity extensions for Java developers. Table of contents: IntelliJ & Java IntelliJ plugins to boost Java development productivity String …
This guide provides instructions for setting up your system to run JUnit tests with Gradle. Table of contents: Running JUnit 5 tests with Gradle What is Gradle? How to set up your project to run …
As a software analysis company we have an inherent need for parsing source code. Until recently we used the maybe most prominent tool for parsing Java code which is JavaParser. JavaParser works …
Debugging a piece of software can drive the most well-tempered developer nuts – yet, sadly, it’s also inevitable, as no one writes bug-free code. Trying to find out what is wrong with faulty …
Check out all the posts in our VS Code extension development series: How to make VS Code extensions: guide & best practices Through testing our VS Code extension – Symflower for VS Code – …
Part 2 of our guide to unit testing with JUnit covers advanced techniques for staying efficient when applying JUnit 5 unit tests in your projects. 💡 A series on JUnit testing Part 1: How to write …
Check out all the posts in our VS Code extension development series: How to make VS Code extensions: guide & best practices The starter template for VS Code extensions gives you a lot of …
Symflower allows you to analyze and automatically generate unit tests for Java projects which rely on Maven dependencies. Let us have a look at how that plays out in practice. Project Setup We are …
Check out all the posts in our VS Code extension development series: How to make VS Code extensions: guide & best practices When testing VS Code extensions, you might run into scenarios where you …
This is part 1 of our guide to unit testing with JUnit which covers the basics with Java unit test examples and best practices for writing JUnit test cases. 💡 A series on JUnit testing Part 2: …
Aiming to get started with plugin development for Visual Studio Code? You’re in the right place to kick things off! This series of blog posts will provide you with fundamental information on …
Check out all the posts in our IntelliJ plugin development series: All you need to know for IntelliJ plugin development When you test an IntelliJ plugin using UI automation, you need to have an …
Check out all the posts in our IntelliJ plugin development series: All you need to know for IntelliJ plugin development At Symflower, we subject all of our software components to mandatory automatic …
Performing unit testing has become standard practice in modern software development. Doing adequate unit testing is simply necessary if you’re aiming to shift-left your testing and fix bugs as …
Check out all the posts in our IntelliJ plugin development series: All you need to know for IntelliJ plugin development When testing a plugin for IntelliJ-based IDEs using a UI test, the plugin gets …
Check out all the posts in our IntelliJ plugin development series: All you need to know for IntelliJ plugin development When testing an IntelliJ plugin, you’ll likely reach for UI tests to …
So you’re interested in plugin development for a Jetbrains' IntelliJ-based IDE such as IntelliJ IDEA, GoLand, or Android Studio. You’ve come to the right place! Our blog post series will …
Java 20 has been released on 21st March 2023, and it introduced a range of changes and new functionality. The current version is a non-LTS release, while the following version 21 is set to be a …
Symflower fully supports you when writing Java tests with JUnit 4 and JUnit 5. There are two ways to use Symflower to streamline your unit testing activities: Instantly generate boilerplate testing …
Software development has to evolve to keep pace with the growing demand for digital technologies and the software that drives them. Here’s a list of trends that define software development in …
Check out all the posts in our VS Code extension development series: How to make VS Code extensions: guide & best practices If you’re working on developer assistance tooling such as …
Here’s a list of new software testing strategies that will likely gain traction in 2023, and the software testing trends that Symflower expects to continue to unfold this year! With software …
Implementing new features and thinking up the best way to get everything just right is part of what makes software development exciting. In addition, being able to apply our problem solving skills …
The programming principle YAGNI (You aren’t gonna need it) originates from extreme programming, which is an agile software development methodology that advocates frequent releases with short …
Fuzzing is a testing technique where random values are generated as inputs to find unexpected behavior such as crashes and security issues. Previously we looked at the new Golang release 1.18 which …
Check out all the posts in our IntelliJ plugin development series: All you need to know for IntelliJ plugin development No matter what your technical background as a developer looks like, …
Creating illustrations on conceptual issues is a very tedious task which is often required when working on a product for software developers. Though tedious, illustrating those abstract concepts well …
In the software world we have an ever growing collection of testing technologies at our disposal. Mainly there are three levels on which testing is commonly performed: the unit-, integration- and …
Test templates help you write and maintain manually-written unit tests more easily and quicker than doing it entirely by hand. The test template generator in our IntelliJ plugin takes care of …
There are hundreds of different kinds of software testing types around. Why is that? Because every functional and non-functional requirement of a software product needs to be tested, otherwise one …
Unit tests are essential for fast but safe development. They freeze intended behavior, and therefore let us find bugs due to changes or refactoring hiccups with ease. This saves us a lot of time which …
Why should you care about meta tags? Well, meta tags help ensure your website works as intended. They present your page in the optimal way to search engines and social media websites, thus helping …
Do you have a website or web application that would be more readable if the style would just change a little bit? We faced the same problem at Symflower with GitLab because the names of our CI jobs …
This article offers a fresh perspective on the programming principle Don’t Repeat Yourself (DRY) and showcases how we embrace DRY internally at Symflower. DRY is most commonly applied in the …
Have you ever asked yourself how to name and structure your automated tests, which assertions you should use and how to implement sub-tests? The answers to these questions make up your test style. …
When applying unit testing on your software, you’ll likely end up with lots of unit tests. In order to stay organized so that your test package structure is transparent and easy for other …
Programming principles (also called coding principles or conventions) are guidelines that help us prevent making “unfavorable” design decisions during coding. That is why every developer …
Unit tests are not just a nice-to-have, but a must-have in most projects. They let you focus on your implementation as the existing behavior can be freezed with a good unit test suite, that is, there …
These days everything is either moving or already running in containers when it comes to software infrastructure. The very first container of Symflower was not for our product, some service or our …
Nearly every programmer has experienced long and confusing code at least once in their lives. Such complexity often happens naturally during development, by adding new code to improve the product. …
Ever wondered what the best style for writing unit tests is? We at Symflower have a certain take on that. We developed a test style optimized towards debuggability, readability and understandability. …
Having to deal with code quality issues deep in a project’s life-cycle is a shared nightmare between all developers. There is nothing worse than being knee-deep in development – or, in a …
Most developers have used Visual Studio Code at some point in their careers. It has been voted the most popular IDE of 2021 by respondents of the StackOverflow developer survey, and its appeal is …
In the first blog post of our blog series on Symflower’s Core Technology, we explained how symbolic execution works and how we apply it to test source code and generate unit tests. Part 2 covers …
Last month, the Go language team released the Go 1.18. It contains the much awaited generic support, which we’re very excited to try out. We also noticed some other interesting changes in the …
With Symflower CLI, a major part of our product is required to run as a binary on the local machine. Since we use Linux in the company, the first version of Symflower was first and foremost designed …
There are tons of great open source solutions that help us every day to develop, test, and debug our software products — Symflower CLI, Visual Studio Code, the Delve debugger, or the testify unit …
Have you ever noticed that when you type a single letter in your browser’s address bar, it will automagically suggest the website you want to visit? In essence, websites are just visually …
There’s no way around it: regardless of the specific market or sector, practically every kind of company has been affected by the COVID-19 pandemic happening in the past two years. Most of us …
When coding, we are used to reassigning variables repeatedly. Just take for (int i = 0; i < 100; i++) { } as an example, where the value of i changes a hundred times after its initialization. But …
We’ve covered the general reasons why we’ve chosen to use Cypress in our previous blogpost about testing. In this next article, we will go into details about how Cypress can be used to run …
Out of all the factors that influence a business' success, brand image is perhaps one of the most impactful ones. The way your company is perceived by potential users, customers, and business partners …
As part of our efforts to be active in the software development and testing community and meetup space, we took part in the 2021 B2B Software Days event during May 10-12, 2021. To bring our readers a …
More often than not, software testing is perceived as necessary evil by developers. Coding new features is more fun and is also often thought to require more skill than testing, which is why in many …
While the concept of symbolic execution (SE) was introduced in the 1970s, it has mostly been relevant for scientists in the decades since. In essence, symbolic execution provides a way to analyze a …
At Symflower we started off writing our UI system tests with Jasmine, but switched later on to Cypress. This blog post summarizes our experiences with Jasmine and why it pays off to switch to a …
Bring light into your math problems by modeling them and letting a solver do the heavy lifting. In this blog post we will show you a clever way to solve a riddle. For that end, we will model it as a …
In certain GitHub repositories, e.g. Apache ShardingSphere, you can find so-called code coverage badges provided by services like codecov.io. You might have an intuitive understanding of what code …
Or: How I spent a whole week removing a slash from a URL. This post guides you through solutions for path-independence in Angular applications. Table of contents: How-to: path-independence for …
Like many software development teams, we use GitLab to manage our product’s lifecycle, from milestone planning to CI/CD. We heavily rely on code review to catch potential problems before they …
We’re kicking off Symflower’s series of blog posts about fundamental software testing strategies and insights. Our guide to software testing series will help you understand key concepts …
We are solving math problems on a daily basis since we were little children. Starting with the pressing question of how many sweets we can buy with our weekly pocket money, finding the perfect …
The version control system Git gives us powerful tools to orchestrate collaborative software development. Developers use code reviews to catch many issues long before a customer would notice them. To …
Symflower employs deep source code analyses and mathematical models to fully automatically write, run and analyze unit tests, covering all interesting paths through your software programs. These high …
At Symflower we strive for continuous improvement at all levels and areas. From our point of view this principle is only possible through joint reflection and an open feedback culture throughout the …
Over the course of my education I (Evelyn Haslinger) did several internships. The disillusioning reality of most of these internships was that I would have spent my summers better off by doing …
Ariane 5, Boeing’s 787 Dreamliner and a 105-year old swedish lady who has to go to preschool. All these events have one thing in common – they were caused by software errors. Today we show you …
Since March 16 most of Austria’s companies are obliged to switch to remote work. The transition from on-site work to pure remote work went really smooth for Symflower. Mostly because many of our …
The Austrian Federal Economic Chamber (WKO) has launched with #schaffenwir its latest campaign to put a stronger focus on local companies and their employees. From now on Symflower and its team will …
Innovation meets tradition at the Ingram Micro Top. With it’s 17th edition the event has traditional character in the IT industry. Annually the latest innovations are represented in the course …
After 18 months in the Tech2b startup incubator, it is time for us to move to our own office. We really enjoyed our time at Tech2b and we wish our mentors and colleagues all the best. Thank you for …
Symflower looks back at the #MWC19. After 8 weeks we have finished our post-processing and are able to look back on a successful and exciting Mobile World Congress 2019. Let me start by concluding …
Symflower at its tech2b graduation. Startups who have successfully completed their incubation with tech2b are honored in a graduation ceremony. We were honored with the “winner diploma” by …
TECHCENTER meets NEUE WERFT is a (still) young format that regularly conducts interviews with founders of innovative companies. Our co-founder, Evelyn, was interviewed about Symflower as part of this …
We have been invited to introduce Symflower at the Founder’s Breakfast of the Johannes Kepler University Linz. This event took place for the 10th time and attracted numerous visitors. Space …
We held a Kubernetes talk and workshop at the fifth Infrastructure as a Meetup (IaaM). Why Kubernetes?" Kubernetes has become the leading framework for container orchestration, deployment and …
We attended the final of the i2b business plan competition of the Austrian-Federal-Economic-Chamber. Only 15 business plans out of 232 entrants received an invitation to the final. We won the shared …
We got accepted into the tech2b Scale-up program. Tech2b is an incubator in Upper Austria which supports technology- and design-orientated startups. Why Should You Attend? The tech2b funding offers …
We attended the final of the Edison der Preis idea contest! Out of 60 entrants only 6 teams were invited for the technical category. Why Should You Attend? Entering the second phase of the contest …