//codecamp/ Agile Automation Testing con BDD. Patricia Coronel Software Quality Control Manager
//codecamp/
Agenda
BDD Nueva metodología Agile que busca mejorar un factor fundamental para el buen desarrollo de cualquier producto de software:
COMUNICACIÓN Como? Con un vocabulario común que derriba esa brecha que existe entre el negocio y la tecnología.
//codecamp/
BDD “Es una práctica Agile De Software que fomenta la colaboración entre desarrolladores, testers, analistas y personas del negocio en un proyecto de software.” “Describe un ciclo de interacciones con salidas bien definidas, resultando en la entrega de un sofwtare que ha sido verificado y funciona, un software que interesa.” Concebido por Dan North en 2003 como respuesta y evolución de combinar Test Driven Development con conceptos de Domain Driven Design.
//codecamp/
BDD Implementar el desarrollo describiendo el comportamiento desde la vision de los interesados en el producto (stakeholders). Implementaci贸n de un software que atiende las necesidades concretas del usuario y que en lo posible exceda sus expectativas. La forma? Una comunicaci贸n clara, que tanto el cliente como nosotros podamos entender. An谩lisis previo al desarrollo entre Stakeholders, BA y Testers.
//codecamp/
BDD Enough is enough No hacer menos de lo que necesitamos para comenzar pero no mas de lo que nos de como resultado un esfuerzo perdido.
//codecamp/
BDD
Deliver stakeholder value Ejecutar las tareas que cumplan con la premisa de agregar valor al negocio.
//codecamp/
BDD It’s all behavior Siempre podemos usar el mismo lenguaje para describir el comportamiento esperado del software en cualquiera de sus niveles.
//codecamp/
BDD El Negocio y la Tecnología deberían referirse al sistema de la misma forma. Todo sistema/funcionalidad debería tener un valor identificado y verificable para el negocio. La planificación, el análisis, y el diseño por adelantado tienen un retorno decreciente.
//codecamp/
BDD
.
Involucrar a los interesados del negocio.(Outside–in software development) Establecer los requerimientos que se deben alcanzar para implementar la visión de los diferentes interesados en el producto. Determinar las funcionalidades que nos permitirán lograr esos objetivos Usar ejemplos para describir el comportamiento de la aplicación o una unidad de código. Automatizar esos ejemplos para poder proveer feedback continuo y tener un testing de regresión permanente.
//codecamp/
BDD
//codecamp/
BDD
//codecamp/
BDD Identificar previamente los escenarios con el stakeholder Especificar exactamente cual es el alcance y el esfuerzo que se quiere del equipo No implementar mas all谩 de lo definido en los escenarios. Definici贸n y automatizaci贸n de estos escenarios: Cucumber
//codecamp/
//codecamp/ Cucumber
Herramientas
BDD - Cucumber Soporta la comunicaci贸n clara que busca BDD entre los stakeholders y el equipo de desarrollo. Utiliza un lenguaje simple para describir escenarios.
//codecamp/
BDD - Cucumber
//codecamp/
BDD - Cucumber “Cucumber es una herramienta de automatización funcional para equipos Lean y Agile.” “Asiste al equipo en la especificaciones “ejecutables””
creación
de
//codecamp/
BDD - Cucumber Stakeholder Feature Feature File Scenario Steps Step Definition
//codecamp/
BDD - Cucumber Un stakeholder es toda aquella persona que obtiene algĂşn valor del producto que vamos a desarrollar Usualmente representados por grupos de usuarios.
Es un pedazo del sistema que entrega valor a uno o mas stakeholders. Representan las especificaciones ejecutables
//codecamp/
BDD - Cucumber Contiene ejemplos representativos de la salida esperada. Valida la funcionalidad del sistema contra las especificaciones. Archivos de texto plano
//codecamp/
BDD - Cucumber Feature FeatureFile File Ejemplo Ejemplo
Feature: Register In order to verify Registration Process As a tester I want to navigate Registration functionality
//codecamp/
BDD - Cucumber Feature FeatureFile File Ejemplo Ejemplo
Scenario: Navigate from Home to Log on Page Given I am in the "Home" Page When I click on "LogOn" "link" Then the app navigates to "Log On" Page
//codecamp/
BDD - Cucumber Captura un ejemplo de una feature y se incluye en el feature file. Representa una porci贸n del sistema que es de valor para el stakeholder. Es la unidad de especificaci贸n de Cucumber.
//codecamp/
BDD - Cucumber Son frases del lenguaje del dominio que podemos combinar para escribir escenarios. Se refieren a: • El contexto del escenario: Given I am in the homepage • Una acción del escenario: When I press the "Ingresar" button • Una forma de validar la acción: Then I should be logged in
//codecamp/
BDD - Cucumber Componentes reutilizables de la automatizaci贸n que ejecutan los pasos que componen un escenario. Le dice a Cucumber que hacer cuando interpreta un paso en particular. Se dise帽an para la implementaci贸n de los escenarios y verificar que los mismos funcionan seg煤n la forma esperada. Una vez implementadas, estas definiciones pueden ser reutilizadas por otros escenarios.
//codecamp/
BDD - Cucumber Es fácil de aprender Es fácil de instalar Soporta la escritura de las especificaciones en aproximadamente 40 idiomas. Brinda snipets iniciales para la generación básica del código de automatización.
//codecamp/
BDD - Cucumber Se integra con casi todas las librerĂas de Testing. Se integra con otros entornos de desarrollo. Aunque es una herramienta en Ruby, no es necesario saber Ruby para poder hacer uso de ella. Se puede usar Cucumber con .NET
//codecamp/
//codecamp/ Specflow
Herramientas
BDD - Specflow Reduce la brecha de comunicación que usualmente existe entre los expertos del dominio y los desarrolladores, uniendo las especificaciones de comportamiento del negocio con su implementación. Facilita la integración de Cucumber al entorno de desarrollo .NET y a su vez interactúa librerías de automatización de testing.
//codecamp/
Puente de comunicaci贸n entre expertos del dominio y developers TDD y BDD en .NET
//codecamp/
BDD - Specflow Specflow convierte los archivos del tipo feature en clases de test unitario. La prueba dentro de esta clase se corresponde con los escenarios que se encuentran en el archivo feature, y contiene las llamadas a las definiciones de los pasos (steps definitions) Los steps definitions son el c贸digo que se ejecuta para cada uno de los pasos de los escenarios.
//codecamp/
BDD - Specflow Fรกcil! Descargar el fmwk de http://specflow.org/downloads/installer.aspx Ejecutar el instalador, y listo!
//codecamp/
BDD - Specflow Pero si uso SpecFlow mis otras herramientas de Testing Automåtico quedan fuera? Mocking? UI Tests? Esto debe tener mucha configuracion‌.
//codecamp/
BDD - Specflow
//codecamp/
BDD - Specflow Estructura del Test Project – Features – Specs – Helpers classes
//codecamp/
//codecamp/ Watin
Herramientas
BDD - Watin
Watin es una librer铆a que posibilita la Automatizaci贸n del testing para aplicaciones web en lenguaje .NET Permite la automatizaci贸n no solo en IE sino tambi茅n en FF.
//codecamp/
BDD - Watin Automatización de la mayoría de los elementos HTML con facilidad. Permite el reconocimiento de objetos a traves de múltiples atributos. Permite tomar screenshots de las páginas web. Puede manejar los popup: alertas, confirmaciones, login, etc.
//codecamp/
BDD - Watin Supports HTML dialogs (modal and modeless) Se integran con facilidad a las herramientas de testing Funciona con Internet Explorer 6, 7, 8, 9 y FireFox 3 Se puede usar con cualquier lenguaje .Net
//codecamp/
BDD - Watin
http://watin.org/documentation/element-class-mapping-
//codecamp/
BDD - Watin namespace bddspecflowtesting.Specs { [Binding] public class RegisterUserBBTestSteps { Uri rootUrl = new Uri(ConfigurationManager.AppSettings["RootUrl"]); [Given(@"I am in the ""(.*)"" Page")] public void GivenThePage(string page) { switch (page) { case "Home": WebBrowser.Current.GoTo(rootUrl); break; case "LogOn": WebBrowser.Current.GoTo(rootUrl + "Account/LogOn"); break; case "Register": WebBrowser.Current.GoTo(rootUrl + "Account/Register"); break; } WebBrowser.Current.CaptureWebPageToFile(@"C:\Automation\screenshots\image01.jpg"); }
//codecamp/
Contenido Relacionado
http://behaviour-driven.org/ Outside-In software development http://skillsmatter.com/podcast/java-jee/how-to-sell-bdd-to-th http ://msdn.microsoft.com/en-us/magazine/gg490346.aspx http://cukes.info/ http://cuke4ninja.com/ https://github.com/henritersteeg/cuke4vs http://specflow.org http://watin.org/ The RSpec Book, Behaviour -Driven Development with RSpec, Cucumber, and Friends de David Chelimsky
//codecamp/