none
Entity Framework Linq to Entities Consideraciones para testing RRS feed

  • Pregunta

  • Hola amigos, tengo que testear una aplicacion que va a manejar mucho trafico en web.

    Usa WCF, EF4, Linq to Entities.

    Necesito saber cuales son las ventajas de usar Linq ante Sp's, contingencia ante interbloqueos, y performance a nivel de consultas y transccionalidad.

    Aun no tengo los fuentes pero si la documentacion, necesito establecer parametros para poder realizar el testing adecuado al sistema. maneja los mantenimientos de parametrizacion a nivel de Winforms para los administradores, y todo lo que son consultas y transacciones para usuarios normales a nivel Web con Asp.Net.

    Por favor, necesito comentarios de profesionales que hayan tenido experiencia en testing. uno como desarrollador ve las ventajas en corta escala pero cuando es una organizacion grande con alta demanda de usuarios (institucion publica) las pruebas deben ser lo mas estrictas y apegadas a la realidad posibles.

    Espero sus comentarios siempre acertados.

    Atentamente, Eduardo


    Atentamente. Eduardo Pérez Leyton
    martes, 12 de julio de 2011 18:37

Todas las respuestas

  • hola

    bien la ventaja que obtendrias con EF es que este permite visualmente modelar tus tablas como ojbjetos de negocio de una forma bastante simple, hacer lo mismo son SP y volcar esto a las clases de tu negocion requieren codificar mucho mas, salvo que uses algun generador de codigo que te ahorre parte de la escritura, sino deberias codigicar todo manualmente para obtener las enticades cargadas desde los SP

    ademas aplciar un cambio es mas directo, porque al no haer query fijo, modifcas o actualzias el modelo y listo, en cambio en un SP un cambio puede repercutir en muchos sitios, en el SP en la entidad y en el codigo que selecciona y carga la lista de entidades

     

    para el tema de test, se me ocurre que podrias usar script de datos para crear la estructura y carga de datos inicial, mas que nada de tablas parametricas, y esto si puede ponlo en un proyecto del tipo Database, en algunas distribuciones del VS puedes crear un proyectod e base de datos par aubicar estos script

    entonces antres de correr los test haces un deploy fde los script de datos, y luego ya puedes correr los test que inserten los datos, invoquen al negocio y valien si se realizo correctamente

    eso si trata que los test esten en una transaccion asi puede anular los datos que cada test crea, o sea no los confirmes, para esto sua el TransactionScope

    de esta forma no ensucia de datos cada test a medida que es ejecutado, ya que luego de validar se hace un roolback y continua el proximo test

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 13 de julio de 2011 3:58
  • Estimado Leandro,

    Muchas gracias por tu respuesta, lo de las estructuras y la carga de datos inicial en el sistema digamos que ya esta lista. Tengo acceso a la Bd de desarrollo con la cual se ha desarrollado el sistema.

    Lo que quiero probar es:

     * Una por una todas las transacciones del sistema ( CRUD ). Para medir, rendimiento, tiempo de respuesta, uso de procesador del servidor.

    Pero como..???? obviamente simulando el acceso de un usuario no voy a tener datos trascendentales. Entonces no se.. quiero tratar de identificar los procesos criticos de la aplicacion ( que tengan mayor concurrencia de usuarios, procesos de consulta que engloben querys LINQ a muchas tablas <considerando que la data se toma de Bases diferentes inclusive y que dichas tablas poseen mas de un millon de registros por lo menos>)

    Entonces, Eso es lo que considero que necesito verificar, si el sistema esta apto para soportar ese tirpo de transaccionalidad, y ademas que el diseño de las consultas del sistema, sean lo mas optimo posible para reducir al minimo los tiempos de respuesta de la aplicacion.

    Supongo que he de tener que crear un Proyecto de Testing, para hacer unit Testing, la verdad no se.. O sino intentar desarrollar una aplicacion cliente donde pueda llamar a los servicios de las consultas yo que se.. metiendolos dentro de interaciones de For o Foreach, concurrentemente utilizando .hilos o cosas asi.

    Incluso pense tambien en crear una aplicacion de consola que me realice todas estas consultas pero controlando con un timer, que cada cierto tiempo se abra una aplicacion nueva que va a realzar las mismas operaciones q la primera y asi sucesivamente hasta un numero determindado digamos unas 100 aplicaciones pequeñas, que se llamen a si mismas y que realicen las mismas consultas pero no al mismo tiempo sino con una latencia de segundos entre ellas para establecer un nivel de carga real.

    No se si me hago entender Leandro, pero es la primera vez que tengo que hacer un Testing de una aplicacion, y justamente es una aplicacion a gran escala de usuarios y concurrencia, lo cual dispara mi preparacion como novel ingeniero.. jejeje.. Pero quiero hacer lo mejor en esto.

     


    Atentamente. Eduardo Pérez Leyton
    miércoles, 13 de julio de 2011 16:43