~hacktivista/cursos-web

629105cfb1b3e98e82e58211cad4691e05ca6e9f — Felix Freeman 2 years ago 11270fc
Clase de testing y ética
2 files changed, 145 insertions(+), 0 deletions(-)

A 26-ethics-testing
A 26-preguntas
A 26-ethics-testing => 26-ethics-testing +140 -0
@@ 0,0 1,140 @@
Otros aspectos de la ingeniería de software

Testing automatizado
# Formas que tenemos de probar que el código hace lo que se supone que tiene
# que hacer automáticamente. De esta manera también nos aseguramos de que
# nuestro programa no se quiebre en el tiempo (tests de regresión).

Tests unitarios
# - Se realizan a partes particulares de un programa.
# - De manera aislada del resto del sistema.
# - Son muy livianos.

Tests de integración
# - Se realizan para verificar el funcionamiento de la interacción entre
#   distintas partes de un programa en conjunto.
# - No son tan rápidos.

Tests de sistema / E2E
# - Se realizan para verificar el funcionamiento del programa en su conjunto,
#   como lo haría un usuario.
# - Son de "caja negra", porque no verifican cómo funcionan las cosas
#   internamente.
# - Es común que se utilicen para verificar historias de usuario.

Requerimientos
# - Funcionales
# - No funcionales

Historias de usuario
> Como [quién] [dónde] [cuándo] quiero [qué] para [por qué]
> [criterios de aceptación]
# - Es una forma fácil de capturar e interpretar requerimientos.
# - Son oraciones sencillas que definen la acción que realiza un usuario.
# - 1 acción = 1 historia de usuario
#
# - quién: define quién realiza la acción
# - cuándo: antes o después de qué acción
# - dónde: en qué página o sección
# - qué: la acción a realizar
# - por qué: justificación para realizar la acción
# - criterios de aceptación: define qué se necesita para que la acción sea válida
#
# Ejemplo:
# > Como vendedor, en el panel de ventas, luego de haber configurado mi proveedor de envíos, quiero crear una venta para que los usuarios puedan comprar \
# > Debe solicitar: nombre, descripción, precio unitario, precio de envío
# 
# No es necesario llenar los campos [cuándo] y [dónde] cuando se infiere
# claramente por el contexto. Es especialmente importante siempre justificar
# [por qué], debido a que esto ayuda a descartar ideas innecesarias y
# solidificar los requerimientos.
#
# - Posteriormente pueden dividirse en especificaciones más técnicas

Test-driven development
# - Es una técnica para el desarrollo de software basada en el testeo
# - Primero se hace un test que falla, debido a que no ha sido implementado
# - Luego se realiza una implementación mínima para que el test no falle
# - Posteriormente se desarrollan versiones cada vez más complejas hasta
#   completar una funcionalidad
# - Tiene el beneficio de que nunca te quedarás sin tests y te obliga a pensar
#   la solución de forma metódica

Mercenarismo del software
- Dark Patterns
# "Características del diseño de una interfaz creadas para manipular a los
# usuarios en hacer cosas que podrían no desear hacer, pero que benefician a la
# empresa en cuestión"
# - Trick questions (preguntas trampa): Al llenar un formulario se engaña al
# usuario para dar una respuesta que no quisimos dar.
# - Sneak into Basket (colarse en el carrito): Se añaden productos adicionales
# en el carrito de compras sin que el usuario se de cuenta.
# - Roach Motel (motel de cucarachas): Se permite al usuario entrar en una
# situación muy de forma sencilla, pero es difícil salir de ella.
# - Privacy Zuckering (succión de privacidad): Se engaña al usuario para dar
# más información de si mismo de la que realmente pretendía.
# - Price Comparison Prevention (prevención de la comparación de precios): Al
# usuario se le dificulta comparar el precio de un artículo con otro.
# - Misdirection (despiste): El diseño llama la atención del usuario en una
# cosa para distraerlo de otra.
# - Hidden Costs (costos ocultos): Se agregan costos en el último paso de un
# proceso de pago.
# - Bait and Switch (cebo y cambio): Se propone hacer algo, pero en su lugar
# ocurre algo completamente distinto.
# - Confirmshaming (confirmación de vergüenza): Se obliga al usuario a optar
# por algo por medio de la vergüenza.
# - Disguised Ads (anuncios encubiertos): Publicidad que es disfrazada como
# otro tipo de contenido.
# - Forced Continuity (continuidad forzada): Luego de un trial gratuito el
# servicio comienza a cargar la tarjeta de crédito del usuario sin ninguna
# advertencia.
# - Friend Spam (SPAM de amigos): El producto solicita acceso a un email o red
# social pretendiendo que va a permitir hacer algo desable, como encontrar
# amigos, pero al hacerlo envía SPAM a los contactos.
# https://darkpatterns.org
- Ledger of Harms
# Las plataformas tecnológicas, sometidas a una inmensa presión para priorizar
# el compromiso y el crecimiento, han creado una carrera por la atención humana
# que ha desencadenado daños invisibles para la sociedad. Estos son algunos de
# los costes que no aparecen en sus balances.
# https://ledger.humanetech.com

Diseño ético
- Humane by design
# - El diseño empoderador garantiza que los productos se centren en el valor
# que aportan a las personas por encima de los ingresos que puedan generar. 
# - El diseño finito maximiza la calidad general del tiempo invertido al
# limitar la experiencia y priorizar el contenido significativo y relevante.
# - El diseño inclusivo es una metodología que permite y aprovecha toda la
# diversidad humana.
# - El diseño resiliente se centra en el bienestar de los más vulnerables y
# anticipa el potencial de abuso.
# - El diseño respetuoso prioriza el tiempo, la atención y el bienestar digital
# general de las personas.
# - El diseño reflexivo utiliza la fricción para evitar el abuso, proteger la
# privacidad y orientar a las personas hacia hábitos digitales más saludables.
# - El diseño transparente es claro en sus intenciones, honesto en sus acciones
# y libre de patrones oscuros.
# https://humanebydesign.com/
- Designing Mindfulness
# El mindfulness nos enseña que la calidad y la naturaleza de nuestra atención
# tienen un impacto directo en nuestro bienestar. Muchas de las interacciones
# que tenemos con la tecnología cada día implican nuestra atención. Por tanto,
# nuestro bienestar se ve afectado por los productos basados en la atención que
# utilizamos. Algunas empresas simplemente no comprenden el impacto que sus
# productos tienen en la mente de las personas que los utilizan. Otras empresas
# pueden utilizar deliberadamente este conocimiento para atrapar nuestra
# atención y explotarla con fines comerciales. 
# - Valorar la atención humana
# - Ser honest@ acerca de los patrones malignos
# - Respetar zonas de información
# - Priorizar calidad
# - Desalentar el uso adictivo (no cultivar el FOMO)
# - Proveer puntos de salida
# - Minimizar la ansiedad social
# - Establecer métricas holísticas
# https://www.designingmindfulness.com
- Software libre y comunitario

Jest
# https://jestjs.io

A 26-preguntas => 26-preguntas +5 -0
@@ 0,0 1,5 @@
- En ingeniería de software, cómo sabemos qué es lo que vamos a programar?
- Qué es una especificación de requerimientos?
- Cómo nos aseguramos de que nuestro software no se "quiebre" en el tiempo?
- Qué tipos de testing existen?
- Existe una ética en el desarrollo/diseño de software? Debería existir?