¿Cómo implementar pruebas automatizadas de proyectos front-end?

En realidad, esto es lo que a menudo llamamos "pruebas automatizadas de UI". En respuesta a esta pregunta, primero le informaré las siguientes ideas para responder la pregunta:

1. ¿Qué es la automatización de la interfaz de usuario? ¿Cuáles son las ventajas?
2. ¿Qué dificultades encontrará en la práctica de la automatización de la interfaz de usuario?
3. ¿Cómo resolver problemas e implementar la interfaz de usuario en la práctica? [Puntos clave]
4. Materiales de aprendizaje de automatización de UI recomendados

1. ¿Qué es la automatización de la interfaz de usuario? ¿Por qué utilizar la automatización de la interfaz de usuario?

1. ¿Qué es la automatización de la interfaz de usuario?

En esencia, las pruebas automatizadas de UI consisten en utilizar scripts o herramientas para reemplazar la ejecución manual de casos de prueba funcionales y completar automáticamente la ejecución de los casos de prueba. A menudo se utiliza para verificar la funcionalidad, compatibilidad y estabilidad de la interfaz de usuario y se utiliza principalmente para realizar pruebas de regresión.

Las pruebas de automatización de la interfaz de usuario pueden simular la interacción del usuario con una aplicación o un sitio web, realizar automáticamente operaciones en la interfaz de usuario, como hacer clic en botones, ingresar texto, seleccionar opciones, etc., y verificar si la respuesta y el comportamiento de la aplicación o el sitio web son los esperados. En software Ayuda a detectar si hay errores durante el proceso de desarrollo.

2. ¿Cuáles son las ventajas de la automatización de la interfaz de usuario?

Las pruebas automatizadas de UI pueden simular la ejecución manual de pruebas y es el método de prueba más cercano a las operaciones reales del usuario. Esta es la parte más atractiva de las pruebas automatizadas de UI. Las pruebas automatizadas de UI también tienen las siguientes ventajas:

Ventaja 1: mejorar la eficiencia de las pruebas.

En comparación con las pruebas manuales, las pruebas automatizadas de UI pueden ejecutar de forma rápida y precisa una gran cantidad de casos de prueba, mejorar la eficiencia de las pruebas y reducir la carga de trabajo de las pruebas manuales.

Ventaja 2: Mejorar la cobertura de las pruebas.

Las pruebas automatizadas de UI pueden cubrir varias funciones y páginas de una aplicación o sitio web, asegurando que cada función haya sido probada, mejorando la cobertura de las pruebas y reduciendo el riesgo de omitir pruebas.

Ventaja 3: mejorar la coherencia de las pruebas.

Las pruebas automatizadas de UI pueden garantizar una ejecución consistente de las pruebas en diferentes plataformas, navegadores o dispositivos, reducir los factores subjetivos en las pruebas manuales y mejorar la consistencia y confiabilidad de las pruebas.

Ventaja 4: Mejorar la calidad del software.

Las pruebas automatizadas de la interfaz de usuario pueden ayudar a detectar y corregir errores y defectos en aplicaciones o sitios web, mejorar la calidad del software y reducir los problemas después de su lanzamiento.

Pero las pruebas de automatización de la interfaz de usuario son como una "rosa con espinas" en la práctica. Debido a que puede simular el funcionamiento real de la aplicación o el sitio web front-end por parte del usuario, es la prueba de simulación más cercana al comportamiento real del usuario, pero debido a algunas dificultades en la práctica, es fácil invertir mucho en la automatización de la interfaz de usuario sin lograrlo. Buenos resultados.

2. ¿Qué dificultades encontrará en la práctica de la automatización de la interfaz de usuario?

Algunas personas dicen que la automatización de la UI es inútil, la razón principal es que la automatización de la UI encontrará algunas dificultades en las aplicaciones prácticas, lo que resultará en malos resultados. Las pruebas de automatización de la UI actualmente enfrentan los siguientes desafíos:

1. La relación entrada-salida de las pruebas automatizadas de UI es baja.

Si desea lograr buenos resultados, debe invertir muchos recursos en el desarrollo del guión en la etapa inicial, pero a menudo los resultados esperados no se logran cuando se usan más adelante, lo que fácilmente puede conducir a la interrupción de la inversión.

2. Garantizar el mantenimiento del script es un gran problema.

Las iteraciones frecuentes del proyecto provocan cambios rápidos en las páginas de inicio y los scripts correspondientes deben modificarse constantemente. Cómo garantizar el mantenimiento de los scripts es un gran problema.

3. La estabilidad de las pruebas automatizadas de la interfaz de usuario también es un desafío.

A menudo nos encontramos con varios errores extraños al ejecutar scripts, cómo garantizar la estabilidad de los scripts es un dolor de cabeza.

3. ¿Cómo resolver en la práctica los cuatro problemas anteriores? 【Puntos clave】

En el proceso real, ¿cómo optimizar los cuatro problemas anteriores? Tomemos la automatización de la interfaz de usuario web front-end como proyecto y usemos el marco Python + Selenium como fondo para ver qué se debe hacer si el proyecto quiere realizar pruebas automatizadas.

Optimización 1: ¿Cómo garantizar la relación entrada-salida?

Muchas personas que participan en pruebas automatizadas de UI no han pensado claramente en cómo hacerlo. Simplemente obtenga un marco, comience primero, invierta mucha mano de obra y recursos materiales, y luego encuentre muchos problemas a la mitad y al final se terminará. . .

Por eso, antes de empezar, debes planificar bien y aclarar tus objetivos. Si se trata de una prueba automatizada de UI recién iniciada, se recomienda seleccionar primero el marco, luego seleccionar un proceso de negocio como caso y utilizar el caso como objetivo para construir el marco y desarrollar el script. Después de completar el desarrollo, principalmente Invierta en pruebas de regresión. Eche un vistazo. ¿Cómo es el efecto de implementación real? Luego calcule el tiempo y los costos laborales invertidos y luego continúe con el siguiente paso.

Optimización 2: ¿Cómo garantizar el mantenimiento del script?

El proyecto actual se repite con frecuencia, lo cual es un hecho inmutable, por lo que el script debe mantenerse y modificarse después de escribirlo.

En base a este hecho, lo que podemos optimizar es reducir la cantidad de modificaciones. En la automatización de la interfaz de usuario, el método de optimización más utilizado es utilizar el modo PO para la encapsulación.

Entonces, ¿qué es el modo PO?

PO es la abreviatura de Objeto de página. En pocas palabras, encapsula cada página en el proyecto front-end como una "clase", los elementos de la página se encapsulan como las "propiedades" de la instancia y las operaciones funcionales en la página. están encapsulados como instancias.Métodos".

Después de encapsular de esta manera, no importa cómo cambie la página en el futuro, solo necesitamos modificarla una vez, lo que puede mejorar en gran medida la eficiencia del mantenimiento.

El patrón PO es uno de los mejores patrones de diseño para la práctica de desarrollo de proyectos de prueba automatizados.

Optimización 3: ¿Cómo garantizar la estabilidad de la ejecución del script?

Puede encontrar varios problemas al ejecutar scripts de automatización de la interfaz de usuario, como que el tiempo de inicio del navegador es demasiado largo, la carga de la página es demasiado larga, la imagen está bloqueada, etc., no puede predecirlo.

Los métodos de optimización, además de los diversos procesos de espera explícitos o implícitos que usamos comúnmente, también podemos encapsular la API original. Por ejemplo, tome el marco Selenium comúnmente utilizado en la interfaz de usuario web: cuando esperamos que aparezca un determinado elemento, para garantizar el éxito, debemos encapsular la "espera". Además de mostrar la espera, puede optimizarla aún más y realizar un proceso de bucle, es decir, esperar 3 veces. Después de cada espera fallida, puede actualizar la espera.

Por ejemplo, encapsule un método de "esperar a que aparezca el elemento" y asegúrese de que se pueda hacer clic en él, como se muestra a continuación:

def element_click_wait(self, located_type, located_key, assert_condition=None, message="执行点击超时",time_out=10, refresh=False):        """        【适用于页面跳转时等待元素出现,确保可以点击的场景】        等待1个元素点击是否正常,并验证点击是否成功,每隔一段时间轮询点击1次,直到超时抛出异常为止        @:param located_type 定位方式(8种:id name class tag link plink xpath css)        @:param located_key 定位关键字        @:param assert_condition 验证点击是否完成的断言条件语句【默认不验证点击是否成功】        @:param message 点击失败提示信息        @:param time_out 等待时长,默认为10秒        @:param refresh 刷新标志,如果为True,则在等待超时后,刷新页面,重新再执行一轮等待执行(相当于刷新后重新执行一次)        如果是False,则不执行刷新,直接超时报错        """        driver = self.driver        is_type_true = 0  # 用户判断定位方式参数是否正确        for i in range(int(time_out)*2):  # 循环次数为配置的2倍,以便处理刷新重试的情景            try:                time.sleep(1)                if located_type == "id":                    driver.find_element_by_id(located_key).click()                elif located_type == "name":                    driver.find_element_by_name(located_key).click()                elif located_type == "class":                    driver.find_element_by_class_name(located_key).click()                elif located_type == "tag":                    driver.find_element_by_tag_name(located_key).click()                elif located_type == "link":                    driver.find_element_by_link_text(located_key).click()                elif located_type == "plink":                    driver.find_element_by_partial_link_text(located_key).click()                elif located_type == "xpath":                    driver.find_element_by_xpath(located_key).click()                elif located_type == "css":                    driver.find_element_by_css_selector(located_key).click()                else:                    is_type_true = 1            except:                if i == (int(time_out)-1):  # 第1次循环到点判断                    if refresh:  # 执行刷新后重新再执行1轮                        refresh = False                        self.element_refresh_wait()  # 刷新页面                        continue                    else:  # 不执行刷新重试                        AutomationLog.LogMsg("点击失败,第1次等待超时啦!---【"+located_type+","+located_key+"】", 2)                        raise ex.TimeoutException(message)                elif i == (int(time_out)*2-1):  # 刷新后再执行1轮还是失败了                    AutomationLog.LogMsg("点击失败,第2次等待也超时啦!---【" + located_type + "," + located_key + "】", 2)                    raise ex.TimeoutException(message)                elif assert_condition:  # 正常执行循环(验证点击是否成功,成功则结束循环,否则继续循环)                    try:                        WebDriverWait(driver, 1).until(assert_condition)                        break                    except:                        continue                else:  # 正常执行循环(不验证点击结果)                    continue            if is_type_true == 1:                AutomationLog.LogMsg("定位方式写错啦,请检查located_type参数!---【" + located_type + "】", 2)                raise ex.InvalidArgumentException("定位方式参数出错!")            elif assert_condition:  # 正常执行循环(验证点击是否成功,成功则结束循环,否则继续循环)                try:                    WebDriverWait(driver, 1).until(assert_condition)                    break                except:                    continue            else:  # 正常执行循环(不验证点击结果)                break

Por supuesto, además de la experiencia práctica anterior, también puede encontrar cooperación para el desarrollo para codificar las ID de los elementos comunes de la interfaz de usuario que se van a probar, lo que también puede mejorar en gran medida la eficiencia del éxito y resolver fácilmente los problemas de posicionamiento.

4. Materiales de aprendizaje sobre automatización de la interfaz de usuario recomendados

La automatización de la interfaz de usuario se divide en automatización web y automatización de aplicaciones.

Si desea aprender en profundidad la automatización de la interfaz de usuario, se recomienda ver los siguientes 4 conjuntos de videos para conocer el sistema, como se muestra a continuación:

1) "6 días de automatización de la interfaz de usuario Edición 2021" 
Enlace al sitio web de este video: https://www.bilibili.com/video/BV18Q4y1y7v3

2) "Tutorial introductorio a la automatización web de 8 días" 
Enlace al sitio B de este video: https://www.bilibili.com/video/BV1eZ4y1s7BY

3) "0-Introducción básica al marco de Appium de automatización móvil" 
Enlace al sitio web de este video: https://www.bilibili.com/video/BV11p4y197HQ

4) "Appium realiza pruebas automatizadas de máquinas reales con IOS" 
El enlace de este vídeo a la estación b: https://www.bilibili.com/video/BV1tT4y137bD

Supongo que te gusta

Origin blog.csdn.net/JACK_SUJAVA/article/details/132834884
Recomendado
Clasificación