前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何成长为一个无法被 AI 替代的测试工程师

如何成长为一个无法被 AI 替代的测试工程师

原创
作者头像
IT蜗壳-Tango
发布2023-12-16 23:30:32
1890
发布2023-12-16 23:30:32
举报
文章被收录于专栏:Pandas基础实践Pandas基础实践

最近半年的时间,我的朋友圈还有关注的一些知识平台都充斥的 ChatGPT 的身影。它的强大,使得包含我在内的大部分开发者感到焦虑。如何才能保住自己在这个行业中的“饭碗”,这是一个值得每个软件开发从业者都去思考的问题。

关于我

大家好,我是 Tango,目前就职于恩梯梯数据(中国)信息技术有限公司。从事软件测试相关的工作,了解我的朋友知道我算是半路出家从文科转的开发工作。也不是 985,211 的本科,更没有在大厂工作过的经历。

相信很多开发朋友和我一样,看到 ChatGPT 的能力后,感到一丝丝的焦虑,无论是翻译,还是对问题的理解,亦或是编写脚本的能力都超过了一个初级工程师的水平,再这么发展下去我们的饭碗会不会有一天被它所取代呢?

也行你觉得我在危言耸听,我下面展示一下它在测试工作中的一些环节上的表现。

AI 在测试工作中的表现

编写 User Story

假设我们有一个 APP,即将上线一个邀请新用户参与内测的活动,我们来看看 ChatGPT 该如何设计这样的一个 User Story

作为测试团队负责人,我希望开发一款 APP,并上线一个邀请新用户参与内测的活动,以便进行以下操作:

  1. 作为现有用户,我可以通过我的账号邀请新用户加入内测。
  2. 作为新用户,我可以通过邀请链接或邀请码加入内测,并获得相应奖励。
  3. 作为管理员,我可以查看并管理邀请记录,包括已发送的邀请数量、已注册的新用户数量、奖励发放情况等。
  4. 在邀请过程中,要确保用户信息安全,不会泄露用户隐私。
  5. 内测结束后,要及时关闭邀请通道,并对参与内测的用户进行统计和反馈处理

根据 User Story 设计测试用例

我们在让它基于上面的 Story 设计一些测试用例,看看效果如何。

以下是一份覆盖上述 user story 中所有测试点的测试用例: 用户邀请功能 a. 测试现有用户是否可以成功发送邀请链接或邀请码给新用户。 b. 测试新用户是否可以通过邀请链接或邀请码成功注册并加入内测。 c. 测试邀请链接或邀请码是否有效,不能重复使用,防止被恶意利用。 d. 测试邀请方式是否安全,不会泄露用户隐私信息。 奖励发放功能 a. 测试新用户是否能够成功获得相应奖励。 b. 测试奖励发放是否准确,不能出现漏发、错发等情况。 后台管理功能 a. 测试管理员是否可以查看邀请记录,并正确统计已发送的邀请数量和已注册的新用户数量。 b. 测试管理员是否可以正确地进行奖励发放和撤销奖励等操作。 内测结束处理 a. 测试内测结束时是否及时关闭邀请通道,防止新用户继续加入。 b. 测试参与内测的用户是否能够及时收到统计和反馈处理。

根据测试用例编写自动化测试脚本

有了测试用例,我们在实际工作中除了手工测试外,还会有自动化测试相关的内容,我们来看看它在 UI 自动化脚本编写上的表现如何

完整代码:

代码语言:javascript
复制
from appium import webdriverimport time
# 设置Desired Capabilitiesdesired_caps = {}desired_caps['platformName'] = 'Android'desired_caps['platformVersion'] = '8.0'desired_caps['deviceName'] = 'Android Emulator'desired_caps['appPackage'] = 'com.example.myapp'desired_caps['appActivity'] = '.MainActivity'
# 启动Appium Serverdriver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 测试用例1:用户邀请功能def test_invite():    # 验证现有用户是否可以成功发送邀请链接或邀请码给新用户。    driver.find_element_by_id('inviteButton').click()    driver.find_element_by_id('sendInviteButton').click()    assert driver.find_element_by_id('inviteSentText').text == '邀请已发送!'    # 验证新用户是否可以通过邀请链接或邀请码成功注册并加入内测。    invite_link = driver.find_element_by_id('inviteLinkInput').get_attribute('value')    # 模拟新用户点击邀请链接并注册    driver.get(invite_link)    driver.find_element_by_id('registerButton').click()    driver.find_element_by_id('usernameInput').send_keys('newuser')    driver.find_element_by_id('passwordInput').send_keys('testpassword')    driver.find_element_by_id('confirmButton').click()    assert driver.find_element_by_id('welcomeText').text == '欢迎加入内测,newuser!'    # 验证邀请方式是否安全,不会泄露用户隐私信息。    invite_code = driver.find_element_by_id('inviteCodeInput').get_attribute('value')    # 模拟其他人尝试使用该邀请码进行注册    driver.get('http://myapp.com/register')    driver.find_element_by_id('inviteCodeInput').send_keys(invite_code)    driver.find_element_by_id('registerButton').click()    assert driver.find_element_by_id('errorMessage').text == '邀请码无效!'
# 测试用例2:奖励发放功能def test_reward():    # 确保测试之前没有已注册用户,清空邀请记录和奖励数据    driver.find_element_by_id('adminButton').click()    driver.find_element_by_id('clearInvitesButton').click()    driver.find_element_by_id('clearRewardsButton').click()    driver.find_element_by_id('confirmButton').click()    driver.find_element_by_id('backButton').click()    # 验证新用户是否能够成功获得相应奖励。    driver.find_element_by_id('inviteButton').click()    driver.find_element_by_id('sendInviteButton').click()    driver.find_element_by_id('backButton').click()    # 点击管理员按钮,并进入管理界面    driver.find_element_by_id('adminButton').click()    # 发放奖励    driver.find_element_by_id('rewardButton').click()    driver.find_element_by_id('confirmButton').click()    assert driver.find_element_by_id('rewardSentText').text == '奖励已发送!'    # 验证奖励发放是否准确,不能出现漏发、错发等情况。    driver.find_element_by_id('backButton').click()    driver.find_element_by_id('statsButton').click()    assert driver.find_element_by_id('inviteCountText').text == '已发送邀请数:1'    assert driver.find_element_by_id('registerCountText').text == '已注册用户数:1'    assert driver.find_element_by_id('rewardCountText').text == '已发放奖励数:1'
# 清理测试环境def teardown():    driver.quit()
# 执行测试用例test_invite()time.sleep(2)test_reward()time.sleep(2)teardown()

复制代码

根据上面每一个环节的表现来看,它的能力还是很强的,感兴趣的小伙伴可以试试去往下继续,比如如何定制测试报告,如何做 hot fix 等。这里就不再赘述了。

开始我们的正题,既然 AI 这么强,我们如何保护好自己的“饭碗”呢?

知己知彼百战百胜

我们了解到了 ChatGPT 的能力,虽然还有很多不足的地方,但是这玩意儿只要有电它就会不停的“学习”下去,效果肯定也是越来越好的,我们如果不想被取代该怎么去提升自己呢?我暂且站在测试开发的角度来说一下我的想法,如果有不对或者不足的地方欢迎大家在评论区留言。

1. 增强对业务理解的能力

这一点我认为是 AI 很难快速取代的部分,如果不了解业务只是机械的套用测试方法,那么这样的测试工程师肯定要被取代掉的,不是 AI 就是公司内部的其他的小伙伴。

要想根据 Story 写出严谨的测试用例,对业务的理解深度决定了测试用例的质量以及覆盖率。很多时候,我们经常会看到刚刚上线没多久的功能,可能用不了多久就又下线了,可能这个这个功能再市场的表现并不好,或者用户反馈也不是很好。那么在产品频繁迭代的时候,如何更好的掌握这个产品的定位,以及如何能更好的站在用户体验的角度来编写测试用例,就变得尤为重要了。

而这个便是 AI 很难完成的部分,就单独的模块来看,AI 似乎能很好的胜任,但是如果站在整个产品来看目前它的表现应该还是没有办法来替代我们测试人员的。

2. 增强测试开发的能力

随着自动化测试的接入,很多手工测试的岗位已经慢慢的被自动化所取代,手工测试小伙伴不要慌啊,还有很多自动化目前无法覆盖到的场景,这一部分还是需要你们的。

随着 GPT 编码的能力的提升,写自动化测试脚本的小伙伴似乎也要面临被“优化”掉的问题。要想不被取得,我们不但要会写简单的测试脚本,更要掌握框架级别的开发能力,框架的开发不只是应用开发团队的事情,作为测试的我们其实对于如何开发出更好用,更能发挥测试效果更有优势,毕竟我们就是做这个内容的,现在只是把我们的测试经验用工具来表达出来。

总结

现在很少有人愿意读很长的文字了,今天的内容就暂时告一段落。后面有时间我再继续分享这方面的内容,如果你还感兴趣的话。

面对 ChatGPT 如此强大的对手,我们不应该抵触,而是应该化敌为友,让他帮做我们刚好的完成测试的工具,可以将它变为我们的第二个大脑,用我们的经验加上它的只是宽度,让我的职场的路越走越宽。

我是 Tango,一个热爱分享技术的程序猿,我们下期见。

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于我
  • AI 在测试工作中的表现
    • 编写 User Story
      • 根据 User Story 设计测试用例
        • 根据测试用例编写自动化测试脚本
        • 知己知彼百战百胜
          • 1. 增强对业务理解的能力
            • 2. 增强测试开发的能力
            • 总结
            相关产品与服务
            测试管理
            CODING 测试管理(CODING Test Management,CODING-TM)为您提供井然有序的测试协同管理工具服务,从测试用例库管理、制定测试计划,到协作完成测试任务,为测试团队提供敏捷测试工作方式,提高测试与研发团队的协同效率。提供可视化的工作视图以及数据报告,随时把控测试进度和规划。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档