Testcontainers: Containers for Testing

I’ve always been more of a fan of unit tests than integration tests, mainly for one reason: I don’t need anything external to be able to run them. I don’t need to have a database started, an external service to connect to, or a Kafka running to be able to run the tests and therefore to be able to develop. 

That’s in the development environment, but if we’re talking about the integration environment, then I won’t even start. For example, in the case of databases, we have the option of doing the tests with H2. But it is also true that depending on the type of project, it could be that something which works perfectly in H2 does not work in the database for which we are developing: As sure as we have often relied on:

[SKP’s Novel Concept #02] The Concept of Software Recycle

I want to put forward the idea of software recycle. Software recycle is software reuse taken to a new level, wherein the components that are outdated or written in older generation languages (of current era) are retrofitted with newer components. Multiple integration points are used to combine, create and establish collaborative functionality. In this way, we are able to take component-based development to a newer level, with greatest reuse. Apart from this, Software Recycle also combines software hosting both from open source developers and commercial and independent software vendors. It thereby acts as a software catalogue for various types of users such as students, professionals, and even organizations. 

Software Recycle takes software reuse to a newer level — wherein components that were written in older languages (of the current era), but which could be useful in certain scenarios are retrofitted with newer components or functionality and then put up on a public catalogue for use. This helps in reusing a lot of functionality without requiring to rewrite a lot of it. It will essentially then be a public catalogue of software components, promoting component-based development. The greatest advantage will be that it would include thoroughly tested, documented, and maintainable code — which could allow to save time in development. The possible users of this site include students, professionals, and organisations alike.

A Case Study on Spring Framework

The Spring Framework is a great application framework and inversion of control container for the Java platform. It is also a great example of high-quality software. Spring Framework is the foundation for all Spring projects. Collectively, the Spring Framework and the family of Spring projects is often referred to simply as "Spring." Spring provides everything required beyond the Java programming language for creating enterprise applications for a wide range of scenarios and architectures. It has been developed over 17 years.

We analyzed the Spring Framework with CodeMR. CodeMR is an architectural software quality and static code analysis tool. You can find  analysis report generated with CodeMR at: https://www.codemr.co.uk/case-reports/spring-framework/html/html_report_spring-core/htmlx/lbd/dashboard.html.

Quality Sense Podcast With Bas Dijkstra – False Positives and Negatives in Test Automation

In this Quality Sense episode, host, Federico Toledo, has a chat with Bas Dijkstra, a software test automation expert, consultant, and trainer from the Netherlands with over 14 years of experience in the field. Recently, Bas triggered an interesting conversation on Linkedin about software testers getting involved with unit testing, which sparked a variety of responses. Listen to the episode to hear more about that conversation, getting better results from test automation, and more!

Episode Highlights

  • What should a tester’s involvement look like in unit testing?
  • How to become a better test automation specialist
  • Building reliable automated tests: how to avoid false positives and negatives?
  • An important philosophy/book he recommends for being more successful and productive

Relevant Links:

Playing With Spring Cloud Contract

In a previous post, we saw how new needs arose in the field of testing derived from the evolution of application architectures.

Through a simple example, we established concepts such as consumer, producer, and service and showed that just as important as testing the functionalities in consumer and producer independently is, so also is ensuring that the interaction between them both is right.

Quality Sense Podcast: Lisi Hocke, Accountability and Conquering Personal Challenges

How To Push Yourself To Achieve Big Goals, Lisi’s Personal Growth Journey, and More

Tune into this episode of Quality Sense where the conversation takes a bit of a turn! Instead of focusing on testing, Federico chats with Elisabeth Hocke aka “Lisi” about how she systematically pursues new goals that help her not only in her professional career but also to grow as a person. She blogs about each as she goes, which has helped her, among other things to be named the “Most Influential Agile Testing Professional” in 2019.

Episode Highlights

  • How Lisi got involved in software development despite not coming from a technical background
  • Lisi’s journey into learning more about bias and anti-racism
  • How she started her personal challenges that she began to document on her blog to share with others
  • What’s important to have in an accountability partner to achieve your goals (no matter how scary they may seem)
  • How to become a better tester even if you’re a lone tester in your organization

Listen Here:

Quality Sense, a Software Testing Podcast · S2E3 – Lisi Hocke – Personal challenges & thoughts on the article “I’m white”

Episode Transcript:

(Lightly edited for clarity.)

Introduction to Contract Testing, Setting the Context

Application development has evolved, and therefore new needs have arisen when it comes to testing and new tools to deal with them. Let’s take a look!

We have gone from having monolithic architectures to applications based on (micro) services. Why do I say (micro) services instead of microservices? Because although the literature talks about the evolution of development from monolithic applications to applications based on microservices, in reality, we often find ourselves with the integration of services (as is, without the need for them to be micro). The concept at hand applies equally well to the concept of microservices as it does to services, so from here on we will simplify using the term services.

Quality Sense Podcast: Alan Richardson — On Test Automation

In these two Quality Sense episodes, host, Federico, delves into an entertaining and eye-opening discussion with Alan Richardson, a British consultant also known as “Evil Tester.” With more than 25 years of experience in testing and development, he offers consultancy and training in agile testing and test automation. Alan is the author of different books including “Java For Testers” and “Dear Evil Tester.”  He shares a plethora of content on his Youtube channel, podcast and blog.

What’s the Interview About?

In this first half of the interview, the two covered:

Non-Functional Requirements: Quality

By experience, most of us know how difficult it is to express what we mean talking about quality. Why is that so?  There exist many different views on quality and every one of them has its importance. What has to be defined for our project is something that fits its needs and works with the budget. Trying to reach perfectionism can be counterproductive if a project is to be terminated successfully. We will start based on a research paper written by B. W. Boehm in 1976 called “Quantitative evaluation of software quality." Boehm highlights the different aspects of software quality and the right context. Let's have a look more deeply into this topic.

You may also enjoy: Custodians of Software Quality

Understanding Software Quality Metrics With Manual and Automated Testing

Learn more about manual and automated testing!

Quality is the true measure of product success. Poor user experience or application performance negates any advantages you achieve in delivery speed or production cost. Put simply, if it does not work, it is not worth producing.

It is, therefore, critical to our product success that we can accurately measure and track test results to ensure our testing is delivering against our business goals. Understanding software quality metrics, especially in automated testing, helps us identify what is working well and what needs improvement.

Top-Down Design — an Approach for Flawless Software Design and Implementation

Check out this "top-down" view.
You may also like: Software Design Principles

Top-Down Design

In software development, you would have read in many articles and books that the design should be a top priority. A good design would resolve many issues. The design will bring in more clarity to the developers. It will give granular details on the exact requirements. In this article, I am going to discuss the Top-Down Design approach. I will explain step by step by taking an example of eLearning.

A problem must be viewed at multiple levels. Each one of them has its benefits. The different levels in software design or development are as follows

Code Review for Software Quality

Software code review plays an important role in software quality. The code review can happen in multiple stages, by multiple people, on multiple deliverables. Each one of them focuses on specific areas of software.

Reviewing code for software quality can be stressful!
You may also like: Code Review

Peer Code Reviews

Peer review is mainly between two people. Developer and another teammate.

How to Use Data to Improve Your Sprint Retrospectives

Most agile teams do sprint retrospectives at least once a month, to iterate and improve on their software development process and workflow. However, a lot of those same teams rely only on their feelings to “know” if they have actually improved. But you need an unbiased reference system if you want to compare how two sprints went.

Depending on what you’re focusing on, there are metrics that you might be interested in. For instance, if your team uses estimation, tracking how those estimates pan out could be worthy indeed, and comparing the variance across sprints could provide such a metric.

The Pulse of QA: How Healthy are QA Organizations in 2019?

Product quality is more important to the success of businesses than ever before. In a software market flooded with an ever-increasing pool of options, businesses, and consumers alike demand high-quality, delightful experiences from the platforms and applications they use daily.

In this market, getting QA right is essential. For the 2019 QA Health Survey, we polled over 250 software professionals to get a sense of how healthy quality organizations are right now. Read on to see some of our key findings, and to download the full results of the survey.

Research Spikes in Agile

In Agile, we have to think about both long-term and short-term goals. The long-term goal is to ensure the customers' needs are translated into release themes. Short-term goals are meant for execution and deliverables. Long-Term thinking translates into release themes, which are split into epics.

A spike in Agile denotes something is not clear to the team. It needs more research to proceed further. In such cases, the recommended approach is to have time-boxed research events called research spikes. Some of the benefits of such an event include: