Alpha's Manifesto

La madriguera de una insignificante figurita blanquinegra.

Link del día: ¿Qué es el A/B Testing?

Quizá para muchos sea un concepto totalmente básico y muy simple de comprender, pero para aquellos que no lo tenemos tan asimilado, seguramente no estemos apreciando el importantísimo concepto que representa.

A/B Testing es una forma de probar las aproximacinoes de marketing de forma de poder tomar una decisión correcta con la aproximación final que va a hacerse al público en general. Muchas empresas grandes la utilizan para tomar decisiones, y se trata básicamente de probar distintas posibilidades, seleccionando siempre la que mejor resultados haya dado.

Adrián Paenza contaba en uno de sus libros una forma de ganar inversores. Decía que de una lista de emails de 130 personas les envíaba a 64 un mensaje que decía “mañana el dolar subirá su precio”, y a otras 64 “mañana el dólar bajará su precio”. (Eso suma 128, dejemos a 2 de lado.) Con 64 se habrá equivocado, con las otras no. Entre las que acertó, volvería a enviar un mail al día siguiente, haciendo lo mismo, pero dividiéndolas en 32 y en 32. Lo mismo al día siguiente: 16 y 16. Llegado a este punto ya existen 16 personas que durante 3 días consecutivos vieron como él acertó la varianza del dólar. Estas personas ya están muy seguras de que Adrián sabe lo que hace en sus finanzas, y muy seguramente, aceptarían un negocio con él.

Esa forma de aprovechar el A/B testing es muy similar a como se hace en la realidad, identificando qué formas de mensajes o de campañas publicitarias tiene mejor efecto.

Jeff Atwood hace una reseña de la película Atrapado en el Tiempo, una película en donde el personaje está condenado a repetir el mismo día siempre. Tras ir intentando distintas combinaciones de su día, él llega a lograr el día perfecto. Él lo considera deshonesto, y lo relaciona con otra técnica de marketing llamada Ghetto testing, porque el resultado que llega al usuario final está “pensado y probado” para que realmente le guste. ¿Es realmente deshonesto, o es perfectamente válido?

A/B Testing tiene algunas alternativas. Una de ellas es llamada A/B/N testing, en donde se utilizan varias iteraciones. Otra es A/B/A testing, en donde se repite la primer prueba para verificar que los resultados fueran realmente consistentes y no mera casualidad, etc.

Para más información, pueden visitar los artículos de Wikipedia sobre Choice Modelling, Adaptive Control, y Multivariate Testing.

Como extra, debo aclarar que la reseña de Atrapado en el Tiempo es impecable.

Soy un zorrinito testeado.

UPDATE 28/7/2010: Marc Von Brockdorff escribió un artículo sobre la medición de la validez estadística de un test A/B: AB testing Statistical Significance. Por otro lado, me encontré en WebDesignerDepot una muy buena guía llamada A Complete Guide to A/B Testing.

Link del día: Máquinas virtuales en la web

Hace pocas horas Peteris Krumins (@pkrumins) anunció que en poco tiempo estará saliendo al público su nuevo proyecto con James Halliday.

Dicho proyecto, llamado StackVM, tiene como propósito poder insertar máquinas virtuales en páginas web, darles conectividad entre ellas con simple pasos como drag & drop, y la cantidad de usos que esto podría tener son miles.

Entre los ejemplos que él menciona en su anuncio, están la posibilidad de dar una demo “live” de un software (que podría incluir por detrás todo el entorno necesario para mostrarlo, incluyendo servidores de bases de datos, incluyendo routers, etc). Podría demostrar online (sí, en la misma página web) el funcionamiento de un software cliente servidor, de un software firewall, o cosas que por lo general son muy complejas de demostrar.

Otro de los ejemplos es la enseñanza, testeos de seguridad, o la posibilidad de que los estudiantes realmente interaccionen con entornos virtuales sin otra necesidad que un navegador.

Otro de los ejemplos es el testeo de aplicaciones. Imaginen probar su software en un entorno Linux, un Mac OS, un Windows en distintas versiones, sin más que un navegador.

Actualmente están de a poco liberando muestras para distinta gente, solo tienen que apuntarse para ser tenidos en cuenta si es que lo quieren probar.

Soy un zorrinito virtual.

Link of the day: Writing Testable Code

I’ve been looking into some documentation on how testable code should be written. They all say pretty much the same, but I found this article by Isa Goksu which is quite extensive on some particular points, and also provides a good linking to other related articles. He mentions concepts that are closely related to testing and test-driven development, like The Simplest Thing that Could Possibly Work, or Law of Demeter (which is a good design pattern too), some not-as-spread-as-they-should-be Principles of Object Oriented Design, and so on.

Remember we also have Google Testing blog where sometimes guidelines about testing and good testable code is engineered.

Hope it’s a testable Friday for you!

I’m a testable little skunk.

Link del día: Usabilidad del iPad

¿Recuerdan algún artículo de UseIt.com? Si no es el caso, lo resumo en pocas palabras: es el sitio de Jakob Nielsen, en donde se dedica a escribir sobre informática, y especialmente sobre usabilidad. Muchas veces se han tratado temas específicos y este es uno de ellos.

Hace no mucho se ha publicado un artículo en este sitio sobre la usabilidad del iPad, llamado iPad Usability: First Findings From User Testing. El artículo es extenso y detallado sobre detalles y no-tan-detalles que dan lugar a determinadas características de usabilidad del iPad. Curiosamente, el resultado final es bastante más malo de lo esperado, y eso que se han testeado varias aplicaciones y sitios distintos.

Todo lo relativo al respecto lo pueden leer ahí, e incluso pueden bajar el reporte completo de 93 páginas explicando todos los testeos y resultados.

Soy un zorrinito usable.

Link del día: IE9, bien encaminado

Llamó mi atención un artículo en SixRevisions llamado Five Things IE9 is (Actually) Doing Right, y me sorprendió leer que este navegador está tomando un rumbo muy interesante. Más allá de personalmente creer que no llega al nivel de usabilidad que logran otros navegadores (aunque es una opinión personal), realmente está dando un giro refrescante.

Entre las cosas que menciona el artículo (sobre las cuales no me extenderé) quiero resaltar el hecho de soportar los nuevos estándares, cosa sin precedentes, tener una performance realmente increíble, la integración de herramientas de depuración (developer tools) y como extra, la transparencia de los desarrolladores.

Uno de los puntos mencionados allí es el hecho que Microsoft nos permita dar un vistazo a la plataforma de IE9 para probarla, cosa que podemos hacer desde IE9 TestDrive, una experiencia sorprendente, en lo especial para mí. No he hecho mucho más que ejecutar varias de las pruebas en IE9 y en comparación con otros navegadores (Chrome, Firefox) y realmente la forma en la que IE9 está trabajando parece ser la mejor.

Por supuesto, lo que tenemos disponible hoy por hoy es solamente la plataforma de renderizado de IE9. ¿Qué pasará cuando se anexen todas las posibilidades que el navegador nos brinda? ¿Mantendrá su performance y su estabilidad? El tiempo nos responderá.

Soy un zorrinito beta.

Link del día: consejitos de jQuery para pr0s

Ayer Xyborg compartió un link llamado jQuery and general Javascript Tips to improve your code. No sólo me encantaron los consejos que ahí aparecían, sino que me encontré con que dicho artículo tiene una secuela, llamada More jQuery and General Javascript Tips to improve your code.

Ambos artículos son muy detallados y concisos, con un montón de items interesantes que se pueden utilizar a modo de check-list para tunear finamente el código que hayamos hecho en jQuery. Algunos consejos probablemente no los vayamos a utilizar en el momento, pero sabiéndolos, en el futuro podremos mejorar un poco nuestras prácticas. Por ejemplo, quizá no usemos la consola o no usemos el almacenamiento de datos en los objetos, pero conociendo eso, a futuro podríamos hacer las cosas de forma más simple.

Otros consejos los podemos aplicar siempre: utilizar siempre IDs en lo posible para las búsquedas (o anteponer un ID en la búsqueda de clases), otros están apuntados a la performance, a la elegancia de código o a la reutilización del mismo, otros son snippets que podemos reutilizar para nuestras necesidades y otros son consejos para proyectos que pueden volverse demasiado grandes para verificar fácilmente.

Quien trabaje con jQuery no tiene excusa para no conocer lo bueno de estos consejos.

Soy un zorrrinito JavaScript.

Link del día: Testeo de usabilidad

Muchas veces la usabilidad de un sistema es un requerimiento tan primordial como el funcionamiento en sí, y más en un mundo como puede ser el mundo web, en donde tenemos miles de competidores para servicios similares que podemos estar ofreciendo online. Quien publica primero tiene la ventaja, pero quien hace el servicio lo más fácil de usar y de forma más cómoda e intuitiva es quien logra hacer la diferencia.

El problema es, cómo probar este tipo de cosas? Muchas veces se usan equipos de testing que no tengan conocimiento alguno de la herramienta; muchas veces también se utiliza gente que no está relacionada con el proyecto para nada, o incluso se terceriza este tipo de testeo. Otro problema es que, dado que estos testeos de usabilidad se basan en tratar de ver qué cosas son fáciles y cuáles no, cuáles son intuitivas y cuáles no… cómo obtener resultados homogéneos para cada persona que lo haya probado? Y un tercer problema es: cómo ver fácilmente los resultados en nuestra aplicación?

Usabilla es una aplicación web que quiere encargarse de esto. Tras registrarnos (con sus planes gratuitos o pagos), podemos crear pruebas de usabilidad contra sitios / aplicaciones web, imágenes o diseños. Las pruebas las generaremos en forma de consignas que le pediremos al usuario que realice sobre ese algo que queremos testear. Por ejemplo: “En dónde haría click para registrarse?” o “Qué elementos le llaman la atención de esta página?”

Tras probar con muchos usuarios, podemos visualizar nuestros resultados de forma gráfica, o en la misma página.

Recuerden que como competidor de este servicio alguna vez hablamos de Loop11, que parecía tener la ventaja de permitir la navegación a través de las pruebas, y de esa forma evaluar la navegabilidad de un sitio. No sé si Usabilla lo permita, aunque por lo que ví en las demos parecería que no.

Soy un zorrinito usable.

Link del día: Máquinas Virtuales

Es bien conocido que la virtualización es una herramienta muy poderosa que amplía vastamente nuestras capacidades de prueba y simulación sobre sistemas para los cuales no disponemos el hardware real – o el dinero equivalente. Hoy por hoy las máquinas virtuales pueden llegar a ser tan poderosas como máquinas reales (con obvias limitaciones) y satisfacer muy bien ciertas necesidades (hosting con administración remota, ambiente de pruebas, testing de stress, investigación, etc.).

El proceso de creación de una máquina virtual es igual (o a veces un poquito más complicado) que la configuración de una máquina real: instalar el sistema operativo, configurarlo acordemente, configurar la red, instalar los programas necesarios, configurarlos, dejar todo en un estado lo más performante posible y finalmente, algún retoque final que querramos, y sabemos que solo el sistema operativo ya puede tomar un buen par de horas que no quisiéramos tener que sacrificar.

Para eso la gente de VMWare Images y VirtualBox Images (via LuAuF) nos deja imágenes prearmadas para bajar, y por mi parte también encontré estas imágenes para Virtual PC (aunque expiran muy prontito). Podemos descargarlas a nuestro disco y una vez ahí, ya tenemos el sistema operativo pre-instalado y a veces con algunas aplicaciones (como es el caso de las de Virtual PC).

Soy un zorrinito virtual.

A Tester’s Guide to .NET Programming

Terminé hace poco de leer el libro A Tester’s Guide to .NET Programming, de Randal Root y Mary Romero Sweeney, un interesante libro aproximativo a .NET de unas 630 páginas.

Mi prejuicio de este libro, basándome en su título, era que iba a encontrarme con un libro que mostrara características propias de Visual Studio y de la plataforma .NET para llevar a cabo tareas particulares de testing. Seguramente, pensaba yo, me encontraría con nuevos conceptos de testing y nuevas características o nuevos usos de características existentes que me permitirían mejorar las metodologías que conozco para testing.

Desafortunadamente, no ha sido el caso. El libro, debo decir aún así, es realmente bueno, muy detallado y explicativo en sus puntos. La suposición que el libro hace es: tomemos como tester a aquél que quiere realizar testeos (más que nada de aceptación de usuario) sobre un determinado software, y basado en eso, el programa enseña programación en VB.NET y C# orientado a la utilidad de ciertas cosas.

A pesar de no haber cumplido con lo que esperaba, este libro es una joyita. Al poner un concepto tan poco desarrollado sobre testing, nos permite utilizar este libro como un manual para aprender a programar en ambos lenguajes, planteando al testing como un ejercicio práctico que desarrollaremos a lo largo de toda la lectura. Y esto mismo es interesante, porque no solo tiene una aplicación práctica muy directa – cosa que muchos estudiantes de un lenguaje siempre quieren ver prontamente – sino que es fácil de entender y de sobrellevar.

El libro comienza con conceptos algo vagos de la programación, solo mostrando que con determinadas líneas en determinado lugar podremos lograr cierto resultado. Avanzando más, de a poco nos introducen a las clases, métodos, conceptos de orientación a objetos y reutilización de código. No llega a niveles más avanzados como la creación de frameworks para generar testware más complejo, pero se para a un paso de eso, y lo mantiene simple. Esto nos permite seguir el libro sin necesidad de demasiada atención, en donde sabemos que la información no está condensada sino explicada de formas que son fáciles de comprender, llenos de ejemplos, llenos de ejercicios prácticos y todo eso nos genera el impulso de seguir avanzando.

Como tal, resumo, este libro no tenía lo que yo esperaba encontrar, pero ha sido un muy buen hallazgo aún así.

Soy un zorrinito .NET.