人工智能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环境。

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class CSDNRegistrationTest {
   
    
    

    private WebDriver driver;

    @BeforeMethod
    public void setUp() {
   
    
    
        // 设置Chrome驱动的位置
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        driver = new ChromeDriver();
        driver.manage().window().maximize();
    }

    @Test
    public void testUserRegistration() {
   
    
    
        // 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")); // 根据实际页面调整ID
        Assert.assertTrue(welcomeMessage.isDisplayed(), "注册未成功,欢迎消息未显示");
    }

    

猜你喜欢

转载自blog.csdn.net/lindafang72/article/details/143242336
今日推荐