0


人工智能AI在软件测试和质量效能中的实际应用

软件测试人员在工作生活中如何使用AI?AI带来的变化是好是坏?自从黑盒测试工程师已经90%下岗了之后,自动化测试工程师怎么办?AI到底在哪些方面给予我们帮助?如何实现呢?一系列的问题涌上心头。

一、软件测试与AI的纠缠

1.1、 什么是人工智能AI?

人工智能是指机器能够完成通常由人类智能完成的任务,例如学习、推理、解决问题和决策。目前在测试中应用比较火的几个方向:机器学习ML和深度学习DL,计算机视觉CV,自然语言处理NLP,还有综合的大语言模型ChatGPT。

1.2、什么是软件测试?

通过各种手段验证【程序】是否与预期结果是否一致。以达到提高质量和效能的作用。
主要流程是:软件测试计划,设计用例(编写脚本),执行测试,编写测试报告。

1.3、软件测试与AI的纠缠

源于二大方面:

  • 一、是对于AI技术本身(程序)进行软件测试(AI测试),它与传统的测试也有些许不同(本文不涉及)。
  • 二、是AI技术在软件测试中的应用(AI驱动测试或AI赋能测试)。

二、AI的应用会取代自动化测试工程师吗?

请添加图片描述

2.1、不会被取代的原因

测试自动化中的人工智能 (AI) 有望改变自动化软件测试员的角色,但不太可能完全取代他们。目前了解的大概数据是原来10个人完成的工作,现在只需要2-3个自动化测试工程师完成。
原因有三:

  1. 人工智能的成长性:现在的人工智能(以ChartGPT为例)虽然很强大,但依然问题很多,它就象一个知识广度很宽的小孩子,从小是美国人培训的(训练数据),还有很多成长空间。目前很多给出的答案是错误的,有认知问题,提示词问题,模糊问题,安全问题等。通常如果你是糊涂的,它也是糊涂的。
  2. 人工智能的局限性:人工智能可以自动执行一些测试任务,但它也有擅长与不擅长。对于那些有固定步骤固定模式的工作步骤,它做的不错。但人类测试人员的认知技能、创造力和解决问题等的能力仍然是不可替代的。
  3. 人工智能的地位:基于人工智能的特点,应用者是不敢完全相信它,即使它克服了错误,成长了,但地位一定要摆正,人类永远都要起监督作用。那测试环节本身就是验证环节,所以公司一定会在重要地方制定的策略必须由人来进行验证的。

三、 AI技术在软件测试中的应用

3.0、掌握AI技术应用融合的顺序

在软件测试中,我们可以使用人工智能在测试全流程中应用,而且效果还是不错的。通常一个技术来的的变革为分四种:

第一,可以直接替代,没有整合。第二,可以融合的增强或者是改进,第三,是修改部分的一些设计,第四,重塑。
在这里插入图片描述

下面三种不同应用是增强、修改和重塑,这是个顺序,这个顺序通过你对技术的了解多少而逐渐提升。
比如:chatGPT中你如何不了解测试,你无法写出专业的它能理解的提示词,也就会得到通用范范的答案
。这种就是只是简单的技术积累,而不是两种技术的整合改变。(替代)
下面三种是进一步的改变:

  1. 测试人员可以把ChartGPT当做测试助手,完成一些测试流程中的小任务。 (增加)
  2. 使用带有AI的测试工具完成自己的测试工作任务。(修改)
  3. 真正使用AI技术解决测试过程中的难点,以达到提高效率和质量的目的。这需要更高的技术才行。(重塑)

3.1、ChartGPT为软件测试带来的梦幻

chartgpt在软件测试的全流程中都可以有很好的应用。主要是提高速度和效率,节约了成本。下面提供几方面的例子供参考:
请添加图片描述

3.1.0、应用ChartGPT要注意你的提示词的专业性

提示词要素:
简单地给人工智能一个角色。这样,你会得到更多经验丰富的回复。
[你的角色]
[你的知识]
[你的特质]
[完成任务的步骤]
[你的任务]
[目标]
[格式]

3.1.1、自动生成测试用例

ChatGPT可以根据用户的输入描述或需求文档,自动生成测试用例。
在这里插入图片描述

3.1.2、代码审查和缺陷预测

通过分析代码,ChatGPT能够帮助测试人员识别潜在的漏洞、代码规范问题和性能瓶颈。它能够识别常见的编程错误或安全漏洞,并为代码审查提供建议,进一步提升代码质量。
在这里插入图片描述
在这里插入图片描述

3.1.3、自动化脚本生成

对于自动化测试,ChatGPT可以生成Selenium、Appium等测试框架的脚本。用户只需简单描述测试场景,ChatGPT就能自动生成对应的测试代码。这大大降低了编写自动化测试脚本的技术门槛。

提示词:使用java编程语言,使用selenium框架写一个自动化脚本,执行框架选择testng,根据测试用例编写。
‘’‘测试用例:注册用户成功
测试步骤:
1.启动chrome浏览器,打开url"https://www.csdn.net/"。
2.导航进入注册页
3.在合适区域输入相关信息(例如:邮箱,密码,确认密码等)
4.选择所有必选的选项(例如:性别等)
5.点击注册
预期结果:用户成功注册,并重定向到欢迎页或帐户仪表盘。’‘’

ChatGPT:下面是一个使用Java语言、Selenium框架和TestNG的自动化测试脚本,完成用户注册成功的测试用例。该脚本将启动Chrome浏览器、导航至CSDN网站、进入注册页面并模拟用户注册操作。请确保你已经配置好了Selenium WebDriver和TestNG环境。

importorg.openqa.selenium.By;importorg.openqa.selenium.WebDriver;importorg.openqa.selenium.WebElement;importorg.openqa.selenium.chrome.ChromeDriver;importorg.testng.Assert;importorg.testng.annotations.AfterMethod;importorg.testng.annotations.BeforeMethod;importorg.testng.annotations.Test;publicclassCSDNRegistrationTest{privateWebDriver driver;@BeforeMethodpublicvoidsetUp(){// 设置Chrome驱动的位置System.setProperty("webdriver.chrome.driver","path/to/chromedriver");
        driver =newChromeDriver();
        driver.manage().window().maximize();}@TestpublicvoidtestUserRegistration(){// Step 1: 打开CSDN主页
        driver.get("https://www.csdn.net/");// Step 2: 导航进入注册页WebElement registerLink = driver.findElement(By.linkText("注册"));// 根据实际链接文本调整
        registerLink.click();// 等待页面加载,必要时可以添加显式等待try{Thread.sleep(2000);// 简单的暂停2秒,建议使用显式等待(WebDriverWait)}catch(InterruptedException e){
            e.printStackTrace();}// Step 3: 输入注册信息WebElement emailField = driver.findElement(By.id("username"));
        emailField.sendKeys("[email protected]");WebElement passwordField = driver.findElement(By.id("password"));
        passwordField.sendKeys("Test@123");WebElement confirmPasswordField = driver.findElement(By.id("confirmPassword"));
        confirmPasswordField.sendKeys("Test@123");// Step 4: 选择必选项(例如性别) - 根据CSDN的表单要求WebElement genderOption = driver.findElement(By.id("genderMale"));// 如果有性别选择
        genderOption.click();// Step 5: 点击注册按钮WebElement registerButton = driver.findElement(By.id("registerButton"));
        registerButton.click();// 预期结果:验证是否成功注册并跳转到欢迎页WebElement welcomeMessage = driver.findElement(By.id("welcomeMessage"));// 根据实际页面调整IDAssert.assertTrue(welcomeMessage.isDisplayed(),"注册未成功,欢迎消息未显示");}@AfterMethodpublicvoidtearDown(){// 关闭浏览器if(driver !=null){
            driver.quit();}}}
代码说明
@BeforeMethod:在每个测试方法前运行,设置Chrome驱动,初始化WebDriver。
@Test:定义具体的测试步骤,完成用户注册的操作。
@AfterMethod:在每个测试方法后运行,关闭浏览器,释放资源。
注意事项
ChromeDriver路径:请确保System.setProperty("webdriver.chrome.driver","path/to/chromedriver");中的路径是ChromeDriver的实际路径。
显式等待:测试中使用了简单的Thread.sleep(),建议使用Selenium的WebDriverWait进行显式等待,以提高稳定性。
元素定位:CSDN的元素定位和ID可能会随时间更新。确保定位符(By.id("elementId")等)符合最新页面布局。
这个脚本假设页面元素的ID和链接文本为示例中的值,实际页面中可能需要根据HTML结构进行调整。

注:有个很大的问题,就是网页定位不是真实的。因为chatgpt培训的时间到2021年,网页现在有变化。但可以通过提供网页单独将定位写正确。或使用付费方式或换goole gemini可以实时定位。

提示词:使用刚才的测试用例,更换为python语言,pytest框架实现自动化脚本,添加智能等待的封装。

下面是使用Python语言、Selenium库和Pytest框架编写的自动化测试脚本,用于验证用户成功注册。此脚本还包含了智能等待(显式等待)的封装。

请确保已安装了相关的库:
bash
pip install selenium pytest
代码实现:

import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

classTestCSDNRegistration:@pytest.fixture(autouse=True)defsetUp(self):# 设置Chrome驱动的位置
        self.driver = webdriver.Chrome(executable_path="path/to/chromedriver")
        self.driver.maximize_window()yield# 关闭浏览器
        self.driver.quit()defsmart_wait(self, by, value, timeout=10):"""智能等待封装,等待元素加载"""return WebDriverWait(self.driver, timeout).until(EC.visibility_of_element_located((by, value)))deftest_user_registration(self):# Step 1: 打开CSDN主页
        self.driver.get("https://www.csdn.net/")# Step 2: 导航进入注册页
        register_link = self.smart_wait(By.LINK_TEXT,"注册")# 根据实际链接文本调整
        register_link.click()# Step 3: 输入注册信息
        email_field = self.smart_wait(By.ID,"username")
        email_field.send_keys("[email protected]")

        password_field = self.smart_wait(By.ID,"password")
        password_field.send_keys("Test@123")

        confirm_password_field = self.smart_wait(By.ID,"confirmPassword")
        confirm_password_field.send_keys("Test@123")# Step 4: 选择必选项(例如性别) - 根据CSDN的表单要求
        gender_option = self.smart_wait(By.ID,"genderMale")# 如果有性别选择
        gender_option.click()# Step 5: 点击注册按钮
        register_button = self.smart_wait(By.ID,"registerButton")
        register_button.click()# 预期结果:验证是否成功注册并跳转到欢迎页
        welcome_message = self.smart_wait(By.ID,"welcomeMessage")# 根据实际页面调整IDassert welcome_message.is_displayed(),"注册未成功,欢迎消息未显示"
代码说明
Fixture setUp:在每次测试前启动Chrome浏览器,测试结束后自动关闭浏览器。
智能等待封装 smart_wait:使用WebDriverWait封装了显式等待,可以等待元素在页面上可见。默认超时时间为10秒。
test_user_registration:定义具体的测试步骤,完成用户注册的操作,使用smart_wait方法替代driver.find_element(),确保元素在页面上加载完毕再进行交互。
注意事项
ChromeDriver路径:确保webdriver.Chrome(executable_path="path/to/chromedriver")中的路径为ChromeDriver的实际路径。
元素定位:页面元素的定位符(例如By.ID("username"))可能需要根据CSDN的实际页面元素属性调整。

注:请不要完全相信生成的代码,最后断言写的是不正确的。应该是注册成功。

3.1.4、智能化错误诊断与日志分析

ChatGPT可以帮助测试人员快速分析错误日志,找出问题的根源,并提供可能的解决方案。它能够从大量的日志数据中提取出关键信息,减少分析时间。

3.1.5、自动化API测试

对于API测试,ChatGPT可以生成API调用脚本,验证请求和响应数据的一致性,并提供自动化测试方案。它能理解API文档,并自动生成测试用例,包括输入数据、期望响应和边界条件等。

你是资深的测试工程师,要编写接口的测试用例,以json格式提供测试数据,接口的需求文档为“https://petstore.swagger.io/v2/swagger.json”,请你仔细阅读/user 接口,创建用户的接口说明。按说明的要求写出postman工具可以测试用例,数据包括功能测试,安全,异常健壮,性能,接口的测试用例。

在分析需求文档中的/user接口后,我们可以设计多个测试用例,涵盖功能测试、安全测试、异常健壮性测试和性能测试。以下是针对这些测试目标所设计的详细测试数据和方法,每个测试用例都使用JSON格式的请求数据,可以在Postman中直接使用。

1. 功能测试
测试用例 1:创建用户成功

描述:发送有效的用户数据,验证用户是否能够成功创建。
请求方法:POST/user
请求体:

{"id":1,"username":"testUser","firstName":"John","lastName":"Doe","email":"[email protected]","password":"Password123!","phone":"123-456-7890","userStatus":1}
预期结果:返回状态码 200,响应体包含新创建用户的详细信息。
测试用例 2:根据用户名获取用户信息

描述:使用GET/user/{username}接口验证是否能够正确获取用户信息。
请求方法:GET/user/testUser
预期结果:返回状态码 200,响应体包含username为testUser的用户信息。
2. 安全测试
测试用例 1:不带身份验证创建用户

描述:尝试在不包含身份验证信息的情况下创建用户。
请求方法:POST/user
请求体:与功能测试相同。
预期结果:返回状态码 401 或 403,提示无权限。
测试用例 2:输入SQL注入内容测试

描述:测试接口是否可以防御SQL注入攻击,输入特殊字符和SQL代码。
请求体:

{"id":1,"username":"test'; DROP TABLE users; --","firstName":"John","lastName":"Doe","email":"[email protected]","password":"Password123!","phone":"123-456-7890","userStatus":1}
预期结果:返回状态码 400 或者类似错误,不会删除数据或返回敏感信息。
3. 异常健壮性测试
测试用例 1:请求体缺少必需字段

描述:在请求体中省略username字段,检查系统响应。
请求体:

{"id":1,"firstName":"John","lastName":"Doe","email":"[email protected]","password":"Password123!","phone":"123-456-7890","userStatus":1}
预期结果:返回状态码 400,提示缺少必填字段。
测试用例 2:传递超长的字段值

描述:传递超出数据库预设长度的字符串作为username值。
请求体:

{"id":1,"username":"a".repeat(1001),"firstName":"John","lastName":"Doe","email":"[email protected]","password":"Password123!","phone":"123-456-7890","userStatus":1}
预期结果:返回状态码 400,提示字段值过长。
4. 性能测试
测试用例 1:高并发创建用户

描述:模拟1000个用户并发创建请求,验证接口在高并发下的响应时间和稳定性。
请求方法:POST/user
请求体:与功能测试相同,每个用户的username值不同。
预期结果:接口在一定时间内响应,服务器稳定,无重大错误。
测试用例 2:快速连续请求同一用户数据

描述:快速连续请求同一用户的GET/user/{username}接口,观察系统性能。
预期结果:接口在一定时间内响应,无错误信息,返回一致的用户数据。
这些用例可以帮助全面地验证/user接口的功能、健壮性、安全性和性能,确保其在各种场景下都能稳定、正确地响应。可以在Postman中配置这些测试,观察实际响应是否符合预期。

测试用例转成yaml格式。

下面是将这些测试用例转换为 YAML 格式的内容。可以直接将其用于 YAML 配置的测试工具,或者导入到适合 YAML 的自动化测试平台中。

yaml

tests:-name: 功能测试 - 创建用户成功
    request:method: POST
      url: /user
      body:id:1username:"testUser"firstName:"John"lastName:"Doe"email:"[email protected]"password:"Password123!"phone:"123-456-7890"userStatus:1expected_response:status_code:200body_contains:username:"testUser"-name: 功能测试 - 根据用户名获取用户信息
    request:method: GET
      url: /user/testUser
    expected_response:status_code:200body_contains:username:"testUser"-name: 安全测试 - 不带身份验证创建用户
    request:method: POST
      url: /user
      body:id:1username:"testUser"firstName:"John"lastName:"Doe"email:"[email protected]"password:"Password123!"phone:"123-456-7890"userStatus:1headers:{}expected_response:status_code:401-name: 安全测试 - SQL注入
    request:method: POST
      url: /user
      body:id:1username:"test'; DROP TABLE users; --"firstName:"John"lastName:"Doe"email:"[email protected]"password:"Password123!"phone:"123-456-7890"userStatus:1expected_response:status_code:400-name: 异常健壮性测试 - 缺少必需字段
    request:method: POST
      url: /user
      body:id:1firstName:"John"lastName:"Doe"email:"[email protected]"password:"Password123!"phone:"123-456-7890"userStatus:1expected_response:status_code:400error_message:"Missing required field 'username'"-name: 异常健壮性测试 - 超长字段值
    request:method: POST
      url: /user
      body:id:1username: "a".repeat(1001)
        firstName:"John"lastName:"Doe"email:"[email protected]"password:"Password123!"phone:"123-456-7890"userStatus:1expected_response:status_code:400error_message:"Field 'username' is too long"-name: 性能测试 - 高并发创建用户
    request:method: POST
      url: /user
      body_template:id:"{{ id }}"username:"user{{ id }}"firstName:"John"lastName:"Doe"email:"johndoe{{ id }}@example.com"password:"Password123!"phone:"123-456-7890"userStatus:1concurrent_requests:1000expected_response:status_code:200-name: 性能测试 - 快速连续请求同一用户
    request:method: GET
      url: /user/testUser
      repeat:100expected_response:status_code:200body_contains:username:"testUser"
以上是每个测试用例的 YAML 表达格式,concurrent_requests 和 repeat 等属性可用于并发或快速连续请求的场景,具体配置方式会因工具而异。

注:整体的测试用例写的还不太够。

增加一些接口层独有的测试用例,比如:协议不对,请求方法不正确,数据格式不正确,数据中类型不正确等。

ChatGPT 说:
以下是新增的一些接口层独有的测试用例,包括协议不正确、请求方法不正确、数据格式不正确、数据类型不正确等内容。此类测试用例帮助验证接口的健壮性和接口规范的正确性。

tests:# 功能测试用例省略# 接口层测试用例-name: 协议错误 - 使用HTTP协议
    request:protocol: http
      method: POST
      url: /user
      body:id:1username:"testUser"firstName:"John"lastName:"Doe"email:"[email protected]"password:"Password123!"phone:"123-456-7890"userStatus:1expected_response:status_code:400error_message:"HTTPS required"-name: 请求方法错误 - 使用GET方法创建用户
    request:method: GET
      url: /user
      body:id:1username:"testUser"firstName:"John"lastName:"Doe"email:"[email protected]"password:"Password123!"phone:"123-456-7890"userStatus:1expected_response:status_code:405error_message:"Method Not Allowed"-name: 数据格式错误 - 使用XML格式请求
    request:method: POST
      url: /user
      headers:Content-Type: application/xml
      body:|
        <user>
          <id>1</id>
          <username>testUser</username>
          <firstName>John</firstName>
          <lastName>Doe</lastName>
          <email>[email protected]</email>
          <password>Password123!</password>
          <phone>123-456-7890</phone>
          <userStatus>1</userStatus>
        </user>expected_response:status_code:415error_message:"Unsupported Media Type"-name: 数据格式错误 - 不完整的JSON格式
    request:method: POST
      url: /user
      headers:Content-Type: application/json
      body:'{ "id": 1, "username": "testUser", "firstName": "John",'expected_response:status_code:400error_message:"Invalid JSON format"-name: 数据类型错误 - 用户ID类型错误
    request:method: POST
      url: /user
      body:id:"one"username:"testUser"firstName:"John"lastName:"Doe"email:"[email protected]"password:"Password123!"phone:"123-456-7890"userStatus:1expected_response:status_code:400error_message:"Invalid data type for 'id', expected integer"-name: 数据类型错误 - userStatus 类型错误
    request:method: POST
      url: /user
      body:id:1username:"testUser"firstName:"John"lastName:"Doe"email:"[email protected]"password:"Password123!"phone:"123-456-7890"userStatus:"active"expected_response:status_code:400error_message:"Invalid data type for 'userStatus', expected integer"-name: 数据格式错误 - 超长的 JSON 数据
    request:method: POST
      url: /user
      body:id:1username: "a".repeat(10001) # 使用一个超长字符串firstName:"John"lastName:"Doe"email:"[email protected]"password:"Password123!"phone:"123-456-7890"userStatus:1expected_response:status_code:400error_message:"Data too long for field 'username'"-name: 数据格式错误 - 空的请求体
    request:method: POST
      url: /user
      headers:Content-Type: application/json
      body:{}expected_response:status_code:400error_message:"Missing required fields"-name: 数据格式错误 - 请求体缺少 Content-Type 头
    request:method: POST
      url: /user
      body:id:1username:"testUser"firstName:"John"lastName:"Doe"email:"[email protected]"password:"Password123!"phone:"123-456-7890"userStatus:1expected_response:status_code:400error_message:"Missing Content-Type header"
用例说明
协议错误:在接口只支持 HTTPS 的情况下,尝试使用 HTTP 协议,验证是否返回适当的错误信息。
请求方法错误:尝试使用 GET 方法创建用户,检查是否返回405 Method Not Allowed。
数据格式错误:使用不被支持的 XML 格式或不完整的 JSON 格式,验证接口处理格式错误的健壮性。
数据类型错误:传递不符合接口要求的数据类型(例如 ID 为字符串,userStatus 为字符串),验证是否能正确处理。
超长数据错误:使用超长字符串进行请求,测试接口是否有字段长度限制。
缺少必填字段:测试发送空 JSON 时是否返回相应的错误提示。
缺少 Content-Type 头:验证请求体缺少Content-Type头时的返回情况。
这些测试可以帮助发现接口在错误请求下的表现,确保系统可以合理地处理各种不规范请求。

注:这回是真实的接口。你聪明,它就聪明。你要是写不出具体细节,它也糊弄你。也就是说,你测试理论技术都得会,只是懒得写,指导chatgpt去做还是可以的。
正象有句哲理的话:你永远赚不到认知以外的钱。

就象上面的python自动化UI测试脚本中,如果提示加智能显示等待,最初的它是不会加入的一样。你需要看出问题,再完善它。或在一开始就写的很完全。

3.1.6、自然语言转测试脚本

用户可以用自然语言描述测试场景,ChatGPT能够理解并转换为实际的测试代码。这使得非技术人员也能够参与测试用例设计,并生成测试脚本。

3.1.7、提升测试文档编写效率

测试报告、测试计划等文档的编写是测试工程师的重要工作之一。ChatGPT能够根据测试结果自动生成详细的测试报告,包括通过率、失败原因、性能数据等,并总结关键的测试指标和发现的问题,极大地提高了文档编写效率。

3.1.8、测试数据生成

按要求生成随机的测试数据。

3.1.9、实用功能的创建

比如:创建一个读取Csv格式数据的方法。

以下是一个使用 Python 读取 CSV 格式数据的示例方法。该方法利用 Python 内置的 `csv` 模块,可以轻松读取并处理 CSV 文件的数据。

```python
import csv

defread_csv_data(file_path):"""
    读取CSV文件并返回数据列表
    :param file_path: CSV文件路径
    :return: 包含CSV数据的列表,每行数据为字典格式
    """
    data =[]try:withopen(file_path, mode='r', encoding='utf-8')asfile:
            csv_reader = csv.DictReader(file)# 使用DictReader将每行数据读入字典for row in csv_reader:
                data.append(row)print("CSV文件读取成功!")except FileNotFoundError:print("错误:文件未找到,请检查文件路径是否正确。")except Exception as e:print(f"读取CSV文件时发生错误: {e}")return data

# 示例使用
file_path ='your_file.csv'
csv_data = read_csv_data(file_path)for row in csv_data:print(row)

说明

  • csv.DictReader:该类会将 CSV 文件的每一行转换为一个字典,键为表头,值为对应的单元格数据。
  • 错误处理:包含了文件未找到错误和其他可能的异常,以防止程序因错误崩溃。

示例输出
如果

your_file.csv

内容如下:

name,age,city
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago

程序输出:

CSV文件读取成功!
{'name':'Alice','age':'30','city':'New York'}{'name':'Bob','age':'25','city':'Los Angeles'}{'name':'Charlie','age':'35','city':'Chicago'}

该方法可以用于读取任何带表头的 CSV 文件,并返回结构化的数据,便于后续处理。

3.2 AI在测试工具的应用带来的便利

在这里插入图片描述
通常在中小公司选择测试工具进行测试。可以先选择免费,工具各有优缺点,

3.2.1、Katalon-AI 驱动的测试自动化平台

Katalon是一个由 AI 驱动的测试自动化平台,允许用户为 Web、移动和桌面应用程序创建和执行自动化测试。凭借其直观的界面和 AI 驱动的智能定位器,Katalon 简化了测试创建和维护,确保更快、更可靠的软件测试。
Katalon Studio 集成了 AI 功能,可实现自动化功能和 API 测试。
优点:
用户友好界面,支持无代码自动化。
内置AI算法协助测试用例的生成和维护。
强大的社区支持和文档。

限制:
对于有定制需求的高级用户来说可能会变得复杂。
大型测试套件可能会降低性能。
AI驱动示例:
使用可视化测试验证,最终确认页添加截图验证,测试人员会比对执行测试的截图与原图的区别。这部分之前是人工。
在这里插入图片描述
katalon在可视化平台增加了图片比对的功能,值的高兴的事,比对可以从不同方面,像素上,格式上,文字上,还可以设置忽略的区域。最终可以手动标记是否通过。如果变动的区域(你定义的忽略区域)每次是因为数据不同而变化的测试就算通过。

请添加图片描述

3.2.2、Test.im-AI 驱动的测试自动化工具

Testim是一款由 AI 驱动的测试自动化工具,旨在加速自动化测试的创建和维护。它使用生成式 AI 和机器学习算法来生成、执行和维护测试用例,使其成为基于 Web 的软件和移动应用程序的理想选择。Testim 在需要快速创建和维护测试的环境(例如敏捷开发团队)中特别有用。
主要特点:
灵活的测试环境,通过提供多功能的测试执行环境来适应各种测试需求。
通过与 Selenium 兼容的跨浏览器 Web 测试,跨各种浏览器进行 Web 测试以确保兼容性和性能
在物理和虚拟移动设备上执行测试,以确保全面的移动应用程序质量。
与持续集成/持续部署流程集成,以自动化代码签入测试。
Salesforce 测试,专为使用 Salesforce 且无需编码的企业设计的端到端测试。
支持桌面和移动浏览器。
提供免费和付费版本。起价为每次测试每年 450 美元(不含安装费)。
示例:
web自动化脚本录制时,录制文本,也录制元素截图,可删除不用的,每一步骤都可选择只个功能,添加验证,执行失败也可选择,可按步运行。
在这里插入图片描述

3.2.3、Applitools-视觉 AI 测试

Applitools专注于视觉 AI 测试,提供用于视觉验证用户界面的高级功能。它广泛应用于需要在各种设备上保持一致用户界面 (UI) 的应用程序,例如电子商务和金融服务平台。Applitools 利用计算机视觉和 ML 来增强视觉测试,确保 UI 元素在不同设备和平台上保持一致,从而改善用户体验。
主要特点:
经过企业验证的 AI 实现了利用成长型公司十年经验训练的模型,并使用专有算法。
在首选框架或 AI 生成的测试中使用无代码工具创建测试。
测试任何界面并验证任何用户界面,包括屏幕或设备上的应用程序、组件和 PDF。
UI 组件测试通过自动化的视觉和功能测试立即检测 Storybook 组件中的回归和变化。
Applitools 提供三种不同的定价模式 - Starter、Eyes 和 Ultrafast Test Cloud。用户可以选择创建一个免费帐户来评估其功能。
原理步骤:
seleniumIDE录制,获得DOM和css规则,利用计算机视觉和 ML 来增强视觉测试,确保 UI 元素在不同设备和平台上保持一致,从而改善用户体验。
在这里插入图片描述
测试结果:
在这里插入图片描述

3.2.4、Functionize-AI 驱动的测试平台

Functionize是一个由 AI 驱动的测试平台,它使用生成式 AI 技术自动执行整个 QA 生命周期,从测试创建到执行和维护。它适用于基于 Web 的应用程序,并且与持续测试环境很好地集成。Functionize 使用机器学习来理解和适应变化,从而减少了手动测试更新的需要。
主要特色
Architect——一款 Chrome 插件,它使用机器学习来创建和维护测试,通过记录用户交互并适应网站变化,确保最少的维护。
TestAGENTS——人工智能系统,可根据真实用户旅程生成测试,通过根本原因分析自动调试测试,并为案例管理工具创建测试计划。
使用计算机视觉和人工智能将视觉验证集成到自动化测试中,以确保像素完美的用户体验。
适应较小的浏览器变化,提供详细的视觉比较和完成模型,并通过使整个团队都可以访问来使测试民主化。
用于测试创建的自然语言处理。
Functionize 采用基于报价的定价模式
在这里插入图片描述

3.2.5、Testsigma-直观的智能和自动纠错AI 测试工具

Testsigma是业内领先的 AI 测试工具之一。该工具使 QA 分析师和自动化工程师能够设计涵盖 Web、移动、桌面应用程序和 API 的自动化测试。值得注意的是,它拥有强大的自动修复功能,可以无缝纠正错误。此外,手动测试人员和团队负责人可以熟练地并行执行测试。
采用自然语言处理NLP简化测试开发,使得测试创建就像编写简单的英语句子一样轻松。
基于云的架构无需安装,具有值得称赞的仪表板
涵盖 Web、移动、桌面和 API 的测试自动化。
直观的智能和自动纠错增强了它的功能。
配备适用于真实测试场景的数据驱动功能。
提供自动调度功能和可定制的报告生成。
与流行的 CI/CD 工具无缝集成。
Testsigma 提供三种定价模式。用户可以选择免费计划或订阅 Pro 或 Enterprise 计划。
在这里插入图片描述

3.2.6、Mabl-测试覆盖广泛的AI驱动的测试自动化工具

Mabl是一款由人工智能驱动的测试自动化工具,致力于让所有开发团队成员都能进行自动化测试。它对于开发 Web 应用程序的敏捷团队特别有效。Mabl 使用机器学习来检测和适应应用程序变化,确保测试覆盖范围广泛。
主要特点:
使用低代码和 JavaScript 为用户旅程创建浏览器 UI 测试,包括可缩放矢量图形 (SVG)、双因素身份验证 (2FA)、电子邮件和 PDF。
使用低代码和 Appium 脚本为混合或原生移动框架准备移动 UI 测试。
使用 Mabl 的代码编辑器将 API 测试集成到 Web 和移动测试中或直接从 Postman 集合中导入。
通过重复使用现有的浏览器 UI 测试来简化 Web 可访问性测试并修复 Web 可访问性问题。
通过重复使用浏览器和 API 测试以及服务水平协议 (SLA) 来执行高效的浏览器和 API 负载测试,以获得核心网络生命力和用户流持续时间。
在这里插入图片描述

3.2.7、Perfecto- AI驱动的功能性能测试自动化平台

Perfecto是一个由AI驱动的测试自动化平台,旨在跨多种设备和浏览器测试移动和 Web 应用程序。它提供全面的测试功能,包括功能、性能和视觉测试,非常适合提供高质量用户体验的组织。
主要特点:
使用 Apache JMeter™、Selenium、Gatling、Grinder 和 Locust 等开源工具对 Web 和移动应用程序、微服务和 API 进行大规模性能测试。
将 Android 模拟器和 iOS 模拟器集成到测试策略中,在开发生命周期的早期扩大测试覆盖范围,同时最大限度地减少漏检缺陷。
在单一平台内结合虚拟和真实设备,有助于在各种设备类型和操作系统上更快、更彻底地测试应用程序。
提供针对 Web 和移动设备的 UX 负载测试,在云中模拟真实情况,可扩展至 200 万虚拟用户。这可确保全面测试应用程序用户体验和负载下的后端性能,从而提高可靠性和效率。
执行 API 测试并监控从早期开发到生产阶段的 API 行为。它支持强大的断言来验证数据的准确性,便于测试各种场景,并将性能与功能测试相结合,以便在整个开发生命周期中进行全面的 API 测试和监控。
在这里插入图片描述

3.3 调用AI技术(机器学习和深度学习等)完善软件测试(高手使用)

3.3.1、测试中的机器学习(ML)

定义:机器学习涉及对历史数据进行算法训练,以便无需明确编程即可做出预测或决策。
测试中的应用:
测试用例生成:ML 算法分析过去的测试数据和用户行为以自动生成测试用例。这可确保全面覆盖并减少创建测试脚本所需的手动工作量。
缺陷预测:通过分析历史缺陷数据,ML 模型可以预测应用程序中最有可能包含缺陷的区域。这使测试人员能够将精力集中在高风险区域,从而提高测试效率和效果。

3.3.2、测试中的自然语言处理(NLP)

定义:自然语言处理是人工智能的一个分支,使机器能够理解、解释和生成人类语言。
测试中的应用:
需求分析:NLP 工具可以将自然语言需求转换为正式的用户故事和测试用例。这可确保测试涵盖所有需求,并降低误解的风险。
缺陷分类:NLP 可以分析错误报告并根据缺陷描述对缺陷进行分类,从而更容易对其进行优先排序和管理。
自动故障排除:人工智能可以通过利用由历史数据和实时监控构建的综合知识库来简化问题的识别和解决。利用先进的NLP模型,人工智能可以理解和处理用户查询,提供即时的、特定于上下文的解决方案,或引导用户通过决策树来解决更直接的问题。对于复杂的场景,机器学习模型可以通过识别数据中的模式来预测和推荐解决方案。

3.3.3、测试中的计算机视觉

定义:计算机视觉是训练计算机解释视觉数据并做出决策的人工智能领域。
测试中的应用:
视觉测试:计算机视觉算法比较屏幕截图和 UI 元素以检测视觉差异。这可确保应用程序在不同设备和屏幕尺寸上的外观和行为正确。
UI 验证:自动化 UI 测试工具使用计算机视觉与屏幕上的视觉元素交互,确保 UI 正确响应用户输入。

四、人工智能在软件测试中应用的未来

作者观点

4.1、人工智能对测试人员技术要求的影响

  • 中小企业测试选择AI驱动的测试工具进行,由于AI一些技术的不透明,导致出现错误定位困难,所以基础必须打牢,整个开发流程技术都得了解。代码不会的,自动化技术不懂的测试人员基本找不到工作。
  • 大企业更多种采用自己利用AI技术编写需要的用例脚本报告等,需要学习的很多。同时对于在不同行业领域的测试人员,AI对那个行业的颠覆也要了解,比如自动驾驶、医学检测…

4.2、人工智能对测试流程和CI/CD的影响

技术,时间,方式,手段等的变化,让策略变化 ,同时流程必然随之变化。
最终导致企业架构也可能重塑。

4.2、人工智能进一步融合加速

测试人员危机感,是一类重要的少数人群。
增加只有人类能做的擅长部分:决策,认识…

声明:初浅理解,欢迎多提意见!!


本文转载自: https://blog.csdn.net/lindafang72/article/details/143242336
版权归原作者 linda测试 所有, 如有侵权,请联系我们删除。

“人工智能AI在软件测试和质量效能中的实际应用”的评论:

还没有评论