Code coverage (cobertura de código)

Definición de code coverage

La cobertura de código, en inglés llamada “code coverage” o también “test coverage”, es una medida usada en el desarrollo de software para describir el grado al cual el código fuente de un software ha sido probado.

Los usos de la cobertura de software son por ejemplo:

  • Encontrar secciones de código fuente que no han sido ejecutadas por un conjunto de pruebas de software, y así escribir pruebas (test cases) adicionales para incrementar el porcentaje de cobertura
  • Identificación de pruebas redundantes, es decir, pruebas que ejercitan las mismas secciones de código fuente de un programa, con el objetivo de optimizar las pruebas que se le realizan al mismo
  • Determinar una medida cuantitativa de cobertura de código, la cual es indirectamente una medida de la calidad de un programa

Aun cuando podría resultar evidente, se debe enfatizar que:

  • El porcentaje de cobertura mide la cobertura de lo que ha sido escrito (programado), es decir, la cobertura de software no puede decir absolutamente nada acerca del código que aun no ha sido escrito
  • Una prueba de cobertura no puede ser usada para identificar si una función especificada del software no ha sido implementada o ha sido omitida.
seguir leyendo

Seguridad de datos empresariales

Actualmente la mayoría de los documentos que forman parte de la vida de una empresa existen de forma electrónica. Algunos ejemplos son:

  • E-mails
  • Facturas
  • Cotizaciones
  • Planos de diseño
  • Minutas de las juntas
  • Presentaciones de planes de negocio
  • Estados financieros

Esta situación proporciona generalmente mucha comodidad, ya que la información puede ser enviada/consultada/generada/etc. de forma rápida y sencilla, desgraciadamente este “cambio tecnológico” también trae consigo graves desventajas en el ámbito de seguridad, porque eventos indeseados como robos, extravíos o pérdidas debido a fallas en los equipos de computo, pueden ocasionar la pérdida de la confidencialidad de los datos o la imposibilidad de acceder a la información deseada.… seguir leyendo

El México de ayer, hoy y mañana

La cuarta transformación

El primero de julio del 2018 fue un día histórico para nuestro México. Fue el día en que la gran mayoría de los mexicanos decidimos sacar al PRI, al PAN e incluso al PRD de nuestras vidas.

A lo mejor no tanto así, por desgracia, pero de alguna manera, sí, así fue. Los ciudadanos, muy cansados de la penosa desigualdad social, de la flagrante corrupción, de la muy triste descontrolada violencia que se vive en el país, decidimos darle la espalda a más de 70 años de desgraciada negación a la democracia y simulación por parte del PRI del fin del porfiriato, de ineptitud e ineficiencia foxista, de bestial estupidez calderonista y del cinismo e ignorancia que caracterizó al peñismo.… seguir leyendo

Fritzing – software CAD para el diseño de hardware electrónico

Logo de Fritzing
Logo del software Fritzing. Imagen tomada de la página oficial.

Fritzing es un software open source que facilita el diseño de circuitos electrónicos en una computadora. Este proyecto fue iniciado en la Universidad de ciencias aplicadas de Postdam (Fachhochschule Postdam) y es actualmente desarrollado y mantenido por la fundación amigos de Fritzing (Friends-of-Fritzing).

Con Fritzing es sumamente fácil documentar los circuitos electrónicos que se hacen durante proyectos donde se utiliza Arduino o la Raspberry Pi y se usa una protoboard.

Con Fritzing es posible ver el circuito que uno diseña en tres vistas diferentes; protoboard, esquemático y PCB.

La vista protoboard es particularmente útil para los principiantes en el mundo de la electrónica, ya que es una representación exacta de la posición de los diferentes dispositivos en un circuito eléctrico y el orden de sus patas (pines).… seguir leyendo

Raspberry Pi

Logo de Raspberry Pi. Imagen de wikipedia.org.
Logo de Raspberry Pi. Imagen de wikipedia.org.

La Raspberry Pi es una computadora de placa única (single board computer). Es una computadora porque igual que una PC de escritorio o una laptop, la Raspberry Pi tiene hardware que le permite comunicarse con el exterior (por ejemplo con un teclado, raton, monitor, bocinas, etc.) y además se le puede instalar un sistema operativo. De placa única, porque todo el hardware está contenido en una sola placa de 85 mm x 56 mm en el caso de la Raspberry Pi 3 Model B+, que es el modelo más actual a la fecha de escritura de este artículo.… seguir leyendo

Serguéi Koroliov – Zhytómyr, Ukrania

Serguéi Koroliov

 Serguéi Pávlovich Koroliov (12 de enero de 1907 en Zhytómyr, actualmente Ucrania – 14 de enero de 1966, Moscú) fue el hombre que dirigió el programa espacial soviético durante la carrera espacial entre la Unión Soviética y Estados Unidos.

Главный Конструктор - Glavny Konstruktor
Monumento a Serguéi Koroliov alias “Constructor Principal” (Главный Конструктор – Glavny Konstruktor), Zhytómyr, Ucrania.

Su identidad fue ocultada para protegerlo de un posible asesinato durante la guerra fría, y fue revelada hasta después de su muerte.  Se le conocía únicamente como el “constructor principal” (Главный Конструктор – Glavny Konstruktor).

Existe en Internet mucha información acerca de este ilustre personaje, y por sus logros y relevancia, goza hoy en día, tanto en Ucrania como en Rusia, del estatus de héroe nacional.

seguir leyendo

Programar y depurar (debuggear) Arduino usando Eclipse

De Arduino a Eclipse.
De Arduino a Eclipse. Logo de Arduino y de Eclipse IDE.

Entrar en el mundo de la programación de microcontroladores es ahora mucho más fácil y económico gracias a la existencia de Arduino.

El Arduino Software (IDE) es muy fácil de instalar, configurar y usar. La documentación y los “Getting Started” disponibles en linea son suficientes para estar cargando a la tarjeta de desarrollo y probando el primer programa (Sketch) en cuestión de un par horas.

Esta sencillez con la cual suceden las cosas en el Arduino Software resulta muy convenientes para las personas que  se inician en la electrónica y la programación de microcontroladores, sin embargo, para aquellos que buscan desarrollar sistemas embebidos de manera profesional, es mas bien una limitante.… seguir leyendo

Tratado de Bucareli y un mito muy jodido

Cuando era pequeño, en la primaria, algún maestro, probablemente durante la clase de historia, nos comentó que se decía que existía un acuerdo secreto en el que México se comprometía con Estados Unidos de América a no desarrollar tecnología (aviones, helicópteros, autos, y quién sabe que más cosas).

Recientemente hablando acerca de la posibilidad de hacer cohetes modelo en México con una persona alrededor de 10 años mayor que yo (40 años) y en otra ocasión hablando con una persona alrededor de 10 años menor que yo (20 años), salio a colación este mentado pacto secreto.

Este acuerdo secreto es/fue supuestamente parte del Tratado de Bucareli.… seguir leyendo

Usos de const en C++

Una de las cosas más complicadas de un lenguaje de programación es aprender los diferentes usos de una palabra reservada, dependiendo del caso donde se utilice. Como si no hubiera ya suficientes palabras reservadas de las cuales hay que aprender su significado y función.

En este post se resumirá el uso de la palabra reservada const en C++.

Usos de const en C++

const double pi = 3.14159;
//o preferentemente
double const pi = 3.14159;

En este caso se esta declarando una constante de tipo double de nombre pi con el valor 3.14159. A diferencia de una variable, el valor de esta constante no se puede cambiar durante el programa.

seguir leyendo

The basics of hacking and penetration testing – Patrick Engebretson

The Basics of Hacking and Penetration Testing: Ethical Hacking and Penetration Testing Made Easy

Hoy en día gran parte del intercambio de información entre personas y entre empresas se lleva a cabo usando computadoras que están conectadas a redes, y muy frecuentemente a Internet.

The Basics of Hacking and Penetration Testing
Portada del libro The Basics of Hacking and Penetration Testing: Ethical Hacking and Penetration Testing Made Easy de Patrick Engebretson

También es habitual que intercambios monetarios como compras o transferencias bancarias sean efectuadas desde una computadora o desde algún otro dispositivo conectado a Internet.

Existen técnicas que hacen estos intercambios de datos sean “seguros”, sin embargo, no es posible asegurar al 100% que estás técnicas no tengan fallos o que los sistemas donde se almacena la información sean impenetrables para una persona no autorizada.… seguir leyendo