You are working on a Phoenix application that uses Elixir Gettext for translations. As all team members are doing changes on translation files, you have a lot of merging conflicts on those files. In the end, you sometimes lose some translations in
msgstr variable from translation files.
Elixir Gettext is a library for managing translations in your web application. Workflow is very simple:
gettext("Welcome Back") in your source code.
mix gettext.extract --merge
.pofile, here is a German example:
msgid "Welcome Back"
msgstr "Herzlich Willkommen"
gettext knows which string…
In the previous post, we introduced function overloading in Elixir, which is basically applied pattern matching to function input arguments. As pattern matching could not include logical operators, guards are mechanisms that extend function overloading with logical operators. This post is part of the functional language series, and it is based on the remarkable book Elixir In Action by Sasa Juric.
As pattern matching in function arguments is powerful mechanics that make your code more concise and readable (remember to put overloaded functions next to each other!), we must reach for function guards when it comes to logical expressions.
In the previous post, we discussed Graph Node Coverage Criteria. Today we explain how application data fits into Directed Node Graph Coverage. We will introduce you to software testing based on the remarkable book, Introduction To Software Testing by Paul Ammann and Jeff Offutt.
Every program in the world transforms data based on its instructions.
Developers create source code and data that will be accepted and transformed into other data. Software testers analyze application data and create tests that exercise applications in such a way as to reveal important application risks (or their absence).
If you are testing and have…
In the last post, we presented Session-Based Testing Limits, presented by WorkRoom Productions. Today we move forward with this excellent WrokRoom Production report by recapping the basis of the basic elements of the development process. Many thanks to Marcel, who sublimed this great resource on his blog. That’s the buffet table.
Everything that humans do could be described with a process. For example, currently, I am testing one of the most complicated applications in my life. When I ask questions about scenario testing, domain experts always say that the customer always defines it. …
Yesterday I applied the simple rule of thumb, a heuristic, during my afternoon trial walk around the Jarun lake.
Let’s say that your web application has an import feature. You would like application users to use an Excel-like application to insert or copy/paste data to import it into your application.
The last time we presented three types of organizations and how they affect project teams’ effectiveness. Today we talk about what could be the right size for your project team. This post is based on a remarkable book written by Johanna Rothman, Manage It!
Johanna starts with essential advice. There will always be somebody above your position. But for as a project manager, you should not wait for authority confirmation.
Act first, and ask for forgiveness later.
You must put team members inadequate management infrastructure. By doing that, your project could succeed even with a smaller amount of people. We…
In posts functional language series about Elm, I stated that Programming Elm Build Safe and Maintainable Front-End Applications by Jeremy Fairbank is a remarkable Elm book.
Not Good For Starting With Elm
Important note that this is my opinion. My goal was to write a blog post about my learning experience about the book. And after a number of the blog posts, I figured that I just retyped the code example and learn nothing about Elm. The problem could be with Elm. Its syntax should be a functional programming language, but it is not. …
In the previous post, we gave an introduction to pattern matching in functions. Today we explain how to overload function in Elixir. This post is part of the functional language series, and it is based on the remarkable book Elixir In Action by Sasa Juric.
Function overload is the case when we have several definitions of the same function name and arity. Elixir pattern matches input parameters and decides which definition to call. As in regular pattern matching, the order of matching is top/down direction. We overload the function that calculates VAT tax for a beer price:
In the previous post, we discussed Graph Coverage Criteria. Today we move onto Graph Node Coverage Criteria. We will introduce you to software testing based on the remarkable book, Introduction To Software Testing by Paul Ammann and Jeff Offutt.
Structural Graph coverage is defined by visiting every node and every edge of a graph G.
Definition of node graph coverage is straightforward:
Test Requirements (paths) TR contains each reachable node from graph G.