Mi trabajo actual es principalmente escribir código de prueba GUI para varias aplicaciones en las que trabajamos. Sin embargo, encuentro que tiendo a copiar y pegar mucho código dentro de las pruebas. La razón de esto es que las áreas que estoy probando tienden a ser lo suficientemente similares como para necesitar repetición, pero no lo suficientemente similares como para encapsular código en métodos u objetos. Encuentro que cuando trato de usar clases o métodos de manera más extensa, las pruebas se vuelven más engorrosas de mantener y, a veces, absolutamente difíciles de escribir en primer lugar.
En cambio, generalmente copio una gran porción de código de prueba de una sección y la pego en otra, y hago los cambios menores que necesito. No uso formas más estructuradas de codificación, como el uso de más principios o funciones OO.
¿Otros codificadores se sienten así al escribir el código de prueba? Obviamente quiero seguir los principios DRY y YAGNI, pero encuentro que el código de prueba (código de prueba automatizado para pruebas GUI de todos modos) puede hacer que estos principios sean difíciles de seguir. ¿O solo necesito más práctica de codificación y un mejor sistema general de hacer las cosas?
EDITAR: La herramienta que estoy usando es SilkTest, que está en un lenguaje propietario llamado 4Test. Además, estas pruebas son principalmente para aplicaciones de escritorio de Windows, pero también he probado aplicaciones web con esta configuración.