miércoles, 12 de agosto de 2020

Mutate Testing en javascript

 En la comunidad de aprendices de LeanMind se comentó la posibilidad de introducirse en el mutating testing en javascript.

Hace unos meses terminé de leerme el libro de Carlos Blé sobre TDD y me apunté para estudiar mutating testing. 

Lo primero que vi fue este video de Carlos Buenosvinos porque no sabía absolutamente nada.

Encontré varias librerías para hacer mutate testing con javascriot, pero la que más me convenció fue Stryker, porque tiene un activa comunidad que sigue desarrollando. Tiene tests y el código que estuve mirando muy por encima, no me pareció malo.

Me encontré con un video de codemanship que me ayudó muchísimo a entender con más profundidad el mutate testing y la librería Stryker.


Yo creo que esta práctica te ayuda a encontrar casos no contemplados, para generar una red de pruebas en las que tengamos más confianza. Creo que se puede hacer uso de esta práctica una vez que tengamos ya terminada el funcionalidad. No creo que una buena idea lanzarlos cada vez que hagamos un cambio en el código. Creo que es algo a tener en cuenta para nuestros desarrollos, igual que tenemos un analizador de código estático u otros elementos que nos ayudan con nuestros código.

viernes, 17 de abril de 2020

create a super-user in postgres

$ sudo -u postgres psql -c "ALTER USER <user_name> PASSWORD '<new_password>';"

=# SELECT usename FROM pg_user;
=# ALTER USER <user_name> WITH SUPERUSER; ALTER ROLE
=# \du

martes, 14 de abril de 2020

Técnica de las costuras y testear clases estáticas.

Refactoring and Design Skills for Test Driven Development SA2013 by Roy Osherove

--> SUT

public class LoginManager
{
    private IReadOnlyCollection<string> users;

    public LoginManager()
    {
        users = new[] { "john", "clare", "Mary", "Tom" };
    }

    public bool IsLoginOk(string user, string password)
    {
        log(user);
        return users.Contains(user);
    }

    protected virtual void log(string user)
    {
        Logger.Log(user);
    }
}

public static class Logger
{
    public static void Log(string message)
    {
    }
}

--> Test
public class LoginManagerShould
{
    private LoginManagerTesteable loginManager;
   
    [SetUp]
    public void SetUp()
    {
        loginManager = new LoginManagerTesteable();           
    }
   
    [Test]
    public void return_false_when_user_is_empty()
    {
        var result = loginManager.IsLoginOk(String.Empty, "password");
       
        Assert.IsFalse(result);
    }
   
    [Test]
    public void return_false_when_user_is_null()
    {
        var result = loginManager.IsLoginOk(null, "password");
       
        Assert.IsFalse(result);
    }

    [Test]
    public void return_true_when_user_is_valid()
    {
        var result = loginManager.IsLoginOk("Tom", "password");
       
        Assert.IsTrue(result);
    }
}

class LoginManagerTesteable : LoginManager
{
    protected override void log(string user)
    {
    }
}

install openjdk-13

different java versions -> apt search openjdk

add a repository -> sudo add-apt-repository ppa:openjdk-r/ppa

install openjdk-13 -> sudo apt install openjdk-13-jdk

domingo, 5 de abril de 2020

procedural polymorphism

New interesting concept, that I discovered when I read Understanding the Four Rules of Simple Design Corey Haines

And this post

The main idea behind this concept is replace the same kind of conditions by objects. Because with this conditions we are mixing two different concepts (breaking single responsibility principal).

I've applied this concept in this project

jueves, 19 de diciembre de 2019

learning resources

freeCodeCamp videos
learncodeacademy videos

Patterns And Principles:
- http://principles-wiki.net/
- David Gómez - Midiendo la calidad de código
- No Tiene Nombre 31 - Algunas experiencias y opiniones sobre Domain Driven Design
- Alfredo Casado - OOP & Connascence

eXtreme Programming:
 - https://github.com/xpeppers/starway-to-orione
- Eduardo Ferro - Agilidad Hacia la entrega continua ¿Qué te lo impide?
- Luis Rovirosa - Desarrollando a velocidad de crucero

Reactjs:
- https://developer.microsoft.com/en-us/fabric#/components
- https://www.edx.org/course/react-router-and-redux

Achitecture
 - .NET Application Architecture - Reference Apps
 - Serverless apps Architecture with Azure Functions
 - Starting poing for Clean Architecture
 - Robert C. Martin - Clean Architecture

Craftmanship:
- Eduardo Ferro - Simplicidad para desarrolladores
- Modesto San Juan - TDD mi cuaderno de recetas
- Be SOLID my Tests - Mavi Jiménez
- S.O.L.I.D Python - Eduardo Ferro
- Carlos Bastos - Empezando por el principio (de diseño)
- Xavi Gost - Refactoring a Patrones, kata Mars Rovers
- Xavi Gost - Refactoring a Patrones, kata Gilded Rose
- Xavi Gost - Refactoring a Patrones, Kata Bowling
- Xavi Gost - Kata Potter
- Xavi Gost - Test Doubles
- Xavi Gost - SOLID

Non Tech:
- Katia Aresti - Entrevistas al borde de un ataque de nervios

Health
- Ergonomics Expert Explains How to Set Up Your Desk
- Prácticas saludables en la vida del programador
- Máximo Rendimiento Personal para Ingenieros