ChatGPT能测试用例,那么测试人员会被取代吗?
Posted 爱吃 香菜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ChatGPT能测试用例,那么测试人员会被取代吗?相关的知识,希望对你有一定的参考价值。
ChatGPT4已经发布了并引起了巨大的反响,有一些基于ChatGPT的应用还是令人印象深刻的,比如
-
画个草图,让ChatGPT根据草图去生成一个有完备功能的网页;
-
让ChatGPT实现一个可以在网页上运行的贪吃蛇游戏;
-
看图说话
-
调教ChatGPT让其在几小时内写一个chrome扩展
在GPT4的论文中有一句话是这么说的:
GPT-4和类似的模型可能会从此引起失业,甚至那些需要多年经验和教育的职位也可能逐渐消失,比如法律服务。
简单理解就是GPT-4模型专治老专家,作为功能测试人员,领域经验往往是非常核心的竞争力,从业年限越久,老专家属性越明显。那么ChatGPT可以替代软件测试从业者么?
我们不妨直接试一试先,验证一下这个想法。
最简单的登录用例
ChatGPT4需要尊贵的会员才能使用,bing的聊天功能就成了比较理想的平替了,据说其背后也是gpt4模型。下面所有的内容均是使用bing生成的。
问:我有一个web系统的登录页面,其中有1个用户名的文本框,密码文本框以及登录按钮,请帮我写一些测试用例来验证登录功能?
你好,这是Bing。我可以帮你写一些测试用例来验证登录功能。根据网上的资料1234,你可以从以下几个方面来设计测试用例:
功能测试:检查用户名、密码、验证码的输入和校验,以及登录按钮的点击和跳转 性能测试:检查登录界面的加载速度,以及不同情况下的响应时间 界面测试:检查登录界面的布局、样式、字体、颜色等是否符合设计要求 安全性测试:检查是否有防止SQL注入、暴力破解、跨站脚本等攻击的措施 兼容性测试:检查在不同的浏览器、操作系统、分辨率下是否能正常显示和使用 可用性测试:检查是否支持Tab和Enter键,以及提示语是否友好 你想要我给你具体的例子吗?
问:是的,请给我一些功能测试的例子。
好的,我可以给你一些功能测试的例子。根据网上的资料²³⁴,你可以按照以下的表格来编写测试用例:
测试点 | 用例编码 | 测试用例描述 | 预期结果 |
---|---|---|---|
正常登录 | 001 | 输入正确的用户名和密码,点击登录按钮 | 成功登录 |
用户名为空 | 002 | 输入空的用户名和正确的密码,点击登录按钮 | 提示用户名不能为空 |
密码为空 | 003 | 输入正确的用户名和空的密码,点击登录按钮 | 提示密码不能为空 |
用户名错误 | 004 | 输入不存在或错误的用户名和任意密码,点击登录按钮 | 提示用户名或密码错误 |
密码错误 | 005 | 输入正确的用户名和错误的密码,点击登录按钮 | 提示用户名或密码错误 |
验证码为空或错误(如果有) | 006-007 | 输入正确或错误的验证码,以及正确或错误的用户名和密码,点击登录按钮 | 根据验证码是否正确提示相应信息 |
连续多次输入错误(如果有) | 008-009 | 连续输入3次或更多次错误的用户名或密码,观察系统行为(是否锁定账号、显示倒计时、要求重置等) | 根据系统设计给出相应提示 |
使用Tab和Enter键(如果有) | 010-011 | 使用Tab键在各个输入框之间切换,使用Enter键代替点击登录按钮,观察系统行为(是否能正常切换、提交等) | 根据系统设计给出相应响应 |
这些是一些基本的功能测试用例。你还想要我给你其他方面的测试用例吗?
问:是的,更多用例
你想要我给你哪个方面的测试用例?是性能测试、界面测试、安全性测试、兼容性测试还是可用性测试?
问:性能测试
好的,我可以给你一些性能测试的例子。根据网上的资料¹²,你可以按照以下的表格来编写测试用例:
测试点 | 用例编码 | 测试目的 | 并发用户数 | 模拟用户行为 | 预期结果 |
---|---|---|---|---|---|
登录响应时间 | li_001 | 测试100个虚拟用户并发时,系统登录的响应时间 | 100个 | 1)进入登录界面 2)输入用户名和密码,点击“登录”按钮 | 系统登录的响应时间不能超过5秒 |
登录成功率 | li_002 | 测试1000个虚拟用户并发时,系统登录的成功率 | 1000个 | 1)进入登录界面 2)输入用户名和密码,点击“登录”按钮 | 系统登录的成功率不能低于95% |
登录负载均衡 | li_003 | 测试5000个虚拟用户并发时,系统是否能够自动分配负载到不同服务器上 | 5000个 | 1)进入登录界面 2)输入用户名和密码,点击“登录”按钮 | 系统能够自动分配负载到不同服务器上,并保证每台服务器的CPU、内存、网络等资源使用率不超过80% |
这些是一些基本的性能测试用例。你还想要我给你其他方面的测试用例吗?
源: 与必应的对话, 2023/3/16(1) 性能测试中如何编写测试用例 - 知乎. https://zhuanlan.zhihu.com/p/373180730 访问时间 2023/3/16. (2) 登录功能常用测试用例 - 肖兔—随遇而安 - 博客园. https://www.cnblogs.com/Happy-To-Lucky/p/14183788.html 访问时间 2023/3/16. (3) 登录测试用例 - 知乎. https://zhuanlan.zhihu.com/p/375249371 访问时间 2023/3/16.
问:用什么工具做性能测试呢?
性能测试工具有很多种,你可以根据你的需求和预算来选择。根据网上的资料¹²³⁴⁵,一些主流的性能测试工具有:
这些只是一部分性能测试工具。你还想要我给你其他方面的信息吗?
问:能给一个jmeter进行登录测试的例子吗 JMeter是一款基于Java开发的性能测试工具,可以对Web应用、数据库、FTP等进行压力测试,支持多种协议和插件,易于扩展和定制。³
要使用JMeter进行登录测试,你需要先配置好HTTP请求的参数,如协议、服务器名称或IP、端口号、路径等。然后你需要添加一个HTTP请求采样器,填写登录接口的URL和请求方法(通常是POST),以及登录所需的参数(如用户名和密码)。²⁴⁵
如果登录接口需要携带Cookie或Session信息,你还需要添加一个HTTP Cookie管理器或HTTP Header管理器来保存和发送这些信息。¹⁴
最后,你可以添加一个查看结果树或聚合报告来查看登录测试的结果,如响应时间、响应数据、错误率等。²⁴⁵
下面是一个JMeter进行登录测试的例子:
Thread Group
- Number of Threads: 10
- Ramp-Up Period: 10
- Loop Count: 2
HTTP Request Defaults
- Protocol: http
- Server Name or IP: www.example.com
- Port Number: 80
HTTP Cookie Manager
HTTP Request (Login)
- Path: /login
- Method: POST
- Parameters:
- name: username, value: testuser
- name: password, value: testpass
View Results Tree
这个例子表示在10秒内模拟10个用户对www.example.com/login接口进行POST请求,发送用户名和密码参数,并保存Cookie信息。循环执行两次,共计20次请求,并查看结果树。
希望这个例子能对你有所帮助。
问:登录页面的安全测试怎么做?
登录页面的安全测试是指对登录页面的安全性进行检查,防止用户的信息被泄露或者被恶意攻击。²³⁴
登录页面的安全测试主要包括以下几个方面:
-
用户名和密码是否通过加密的方式,发送给Web服务器,避免被截取或者篡改。¹
-
登录成功后生成的Cookie,是否是httponly (否则容易被脚本盗取)。¹
-
登录密码在数据库中不能明文显示,要使用哈希或者加密算法进行存储。⁴
-
登录密码要隐文显示,不支持复制粘贴,避免被他人窥视或者复制。³⁴
-
登录用户名需要限制输入大小写,避免因为大小写不一致而导致登录失败。⁴
-
登录失败需要限制登录次数,设置验证码或者锁定账号等措施,防止暴力破解。²³⁴
-
登录需要添加唯一识别标志(如CSRF Token),防止跨站请求伪造攻击。²⁴
这些是一些常见的登录页面安全测试点,你还有其他问题吗?
初步看来
生成的功能测试用例还是水平在线的,特别是用例都有描述和预期结果,起码生成的都是结构完备的测试用例。从功能覆盖率上说也没啥问题,基本的要点都有,而且异常情况也有比较多的覆盖。
在性能测试方面也没啥大问题,尽管直接拿来执行不太可能,不过测试的思路是有了的。
安全测试方面很惊艳,比我自己考虑的都要全面。
难度升级
登录页面太简单,来点复杂的。
问: 我有一个测试用例管理系统,系统里有一个创建测试用例的功能。创建页面上有3个字段,用例名称,测试步骤,预期结果,这三个字段都是必填的,还有一个创建按钮,如果所有必填项都完备的话,点击后会成功创建,否则会给出错误提示。请根据我的描述尽可能多的生成测试用例
你好,我是Bing。我可以帮助你生成一些测试用例,但是你需要提供更多的信息,比如测试目标、测试范围、测试环境等。根据你的描述,我猜测你的系统是一个基于web的测试用例管理系统¹²⁴⁵,如果是这样的话,你可以参考以下的一些测试用例:
-
用例编号:TC001
-
所属模块:创建测试用例
-
测试标题:验证所有必填字段都完备时,可以成功创建测试用例
-
重要级别:高
-
前置条件:已登录系统,并进入创建页面
-
测试输入:用例名称为“登录功能正常”,测试步骤为“1.打开浏览器;2.输入网址;3.输入用户名和密码;4.点击登录按钮”,预期结果为“登录成功并跳转到首页”
-
操作步骤:
-
1.在用例名称字段输入“登录功能正常”
-
2.在测试步骤字段输入“1.打开浏览器;2.输入网址;3.输入用户名和密码;4.点击登录按钮”
-
3.在预期结果字段输入“登录成功并跳转到首页”
-
4.点击创建按钮
-
-
预期结果:提示“创建成功”,并显示刚刚创建的测试用例
-
用例编号:TC002
-
所属模块:创建测试用例
-
测试标题:验证缺少任意一个必填字段时,无法创建测试用例,并给出错误提示
-
重要级别:高
-
前置条件:已登录系统,并进入创建页面
-
测试输入:
-
a)缺少用例名称,其他字段正常填写
-
b)缺少测试步骤,其他字段正常填写
-
c)缺少预期结果,其他字段正常填写
-
-
操作步骤:
-
a)在用例名称字段不输入任何内容,在其他两个字段正常填写后,点击创建按钮
-
b)在测试步骤字段不输入任何内容,在其他两个字段正常填写后,点击创建按钮
-
c)在预期结果字段不输入任何内容,在其他两个字段正常填写后,点击创建按钮
-
-
预期结果:
-
a)提示“请输入用例名称”,并且不会创建新的测试用例
-
b)提示“请输入测试步骤”,并且不会创建新的测试用例
-
c)提示“请输入预期结果”,并且不会创建新的测试用例
-
问:请补充更多用例
好的,我可以根据你的需求,再补充一些测试用例,但是你需要明确你的测试目标是什么,比如功能测试、性能测试、安全测试等。不同的测试目标,需要考虑的因素和场景也不同。¹²³⁴⁵
假设你的测试目标是功能测试,那么你可以参考以下的一些测试用例:
-
用例编号:TC003
-
所属模块:创建测试用例
-
测试标题:验证输入非法字符时,无法创建测试用例,并给出错误提示
-
重要级别:中
-
前置条件:已登录系统,并进入创建页面
-
测试输入:
-
a)在用例名称字段输入特殊字符或空格,在其他两个字段正常填写后,点击创建按钮
-
b)在测试步骤字段输入特殊字符或空格,在其他两个字段正常填写后,点击创建按钮
-
c)在预期结果字段输入特殊字符或空格,在其他两个字段正常填写后,点击创建按钮
-
-
操作步骤:
-
a)在用例名称字段输入“@#$%^&*”,在其他两个字段正常填写后,点击创建按钮
-
b)在测试步骤字段输入“@#$%^&*”,在其他两个字段正常填写后,点击创建按钮
-
c)在预期结果字段输入“@#$%^&*”,在其他两个字段正常填写后,点击创建按钮
-
-
预期结果:
-
a)提示“请输入有效的用例名称”,并且不会创建新的测试用例
-
b)提示“请输入有效的测试步骤”,并且不会创建新的测试用例
-
c)提示“请输入有效的预期结果”,并且不会创建新的测试用例
-
-
用例编号:TC004
-
所属模块:创建测试用例
-
测试标题:验证超过最大长度限制时,无法创建测试用例,并给出错误提示
-
重要级别:中
-
前置条件:已登录系统,并进入创建页面;假设每个字段都有最大长度限制为1000个字符。
-
测试输入:
-
a)在用例名称字段输入超过1000个字符,在其他两个字段正常填写后,点击创建按钮
-
b)在测试步骤字段输入超过1000个字符,在其他两个字段正常填写后,点击创建按钮
-
c)在预期结果字段输入超过1000个字符,在其他两个字段正常填写后,点击创建按钮
-
-
操作步骤:
-
a)在用例名称字段输入“登录功能正常”重复200次,在其他两个字段正常填写后,点击创建按钮
-
b)在测试步骤字段输入“1.打开浏览器;2.输入网址;3.输入用户名和密码;4.点击登录按钮”重复50次,在其他两个字
-
表现惊艳
-
不仅可以理解测试用例管理系统是什么,而且还把登录用例作为测试数据放在了用例里
-
基本上功能测试的点都能覆盖到
不过因为用例管理系统里有很多领域相关的知识,比如用例编号应该有格式等,这些是bing的搜索结果里所缺失的,所以生成的用例偏common sense, 专业程度不够。但如果基于特定的领域去做训练的话,专业程度提升也是触手可得的事情。
我的看法
如果训练的材料足够多且精准,ChatGPT完全可以替代测试人员进行用例的编写,但是目前看来生成的用例还是需要人工去执行,所以点来点去的工作短期无法取代,不过后面AI的发展可能会从生成内容变成执行操作,因此未来的某一天点点点的工作也可能被取代。不过gpt生成的用例是否合理并且有无遗漏这点还是要专业人士来评判,所以测试老专家们大可不必担心,以后的测试行为可能变成:让AI写用例,老司机修改和补充用例,最后让初级和中级测试人员甚至是AI进行用例的执行和反馈。
除了写用例之外,测试同学还可以使用ChatGPT来进行自动化代码的生成,从而可以提高一些生产效率,所以短期来看,使用ChatGPT辅助进行自动化测试的生产力提升的操作还是可以期待一下的。这可以比较好的解决一些测试同学代码能力不足的问题,不过凡是都有两面性,尽管可以用AI来辅助做自动化测试,但是AI生成的代码如果有问题需要修改的话,还是需要很强的编程能力的。所以哪怕是辅助做自动化测试,本质上还是利好老司机。
中期看来AI将会成为强大的测试提效工具,比如生成一些测试文档,用例等。
从足够远的远期来看,最终大部分基于有限经验的进行测试的测试人员可能会被AI取代,剩下一些老司机进行更具创造性的测试工作。测试人员的规模可能会减少,但测试这个角色应该还会存在。
你的既有经验将被机器学习和传承,你的创造力才是立身之本。
最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
RabbitMQ基本功能测试用例(Java实现)
为了测试RabbitMQ是否好用,编写了一个由Java语言编写的RabbitMQ基本功能测试用例,仅供参考。
代码说明:
由于实现语言是Java,因此有Java虚拟机(安装了JDK或JRE)即可测试,不需要像Python一样需要安装第三方模块,便于Docker环境下做简单测试。在此测试用例用用到了amqp-client-3.x.x.jar库,可以自行下载。
为实现一个java源文件中实现收与发(编译后还是3个Class文件),在main函数中起了两个线程,一个负责发,一个负责收,用来测试RabbitMQ消息的收与发。发送消息是每2s发一次(实现:Java Thread Sleep),为了每次发送消息内容的不同消息内容中加入了Java随机数(实现:Java Random)。
代码如下:
package com.devops.broker.rabbitmq.client; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.QueueingConsumer; import java.io.IOException; import java.util.Random; class send extends Thread { private final static String QUEUE_NAME = "hello"; public void run() { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("10.6.28.46"); factory.setPort(5672); factory.setUsername("guest"); factory.setPassword("guest"); Random randomIntNumber = new Random(); try { while (true) { Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); channel.queueDeclare(QUEUE_NAME, false, false, false, null); String message = "Hello World!"; Long ThreadID = send.currentThread().getId(); message = message + " Thread ID: " + ThreadID.toString() + " Random Num: " + randomIntNumber.nextInt(); channel.basicPublish("", QUEUE_NAME, null, message.getBytes()); System.out.println("Sent ‘" + message + "‘"); System.out.println(""); channel.close(); connection.close(); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } } catch (Exception e) { System.out.println(e.getMessage()); } } } class receiver extends Thread { private final static String QUEUE_NAME = "hello"; public void run() { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("10.6.28.46"); factory.setPort(5672); factory.setUsername("guest"); factory.setPassword("guest"); try { Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); channel.queueDeclare(QUEUE_NAME, false, false, false, null); QueueingConsumer consumer = new QueueingConsumer(channel); channel.basicConsume(QUEUE_NAME, true, consumer); while (true) { QueueingConsumer.Delivery delivery = consumer.nextDelivery(); String message = new String(delivery.getBody()); System.out.println("Received ‘" + message + "‘"); } } catch (Exception e) { System.out.println(e.getMessage()); } } } public class Main { public static void main(String[] args) throws IOException { send send = new send(); send.start(); receiver receiver = new receiver(); receiver.start(); } }
tag:RabbitMQ Java demo,测试用例,功能测试
--end--
本文出自 “通信,我的最爱” 博客,请务必保留此出处http://dgd2010.blog.51cto.com/1539422/1794635
以上是关于ChatGPT能测试用例,那么测试人员会被取代吗?的主要内容,如果未能解决你的问题,请参考以下文章