Skip to content

利用人工智能 ChatGPT 自动生成自动化测试脚本


简介

  • 自动化测试脚本可以模拟用户与应用程序的交互,例如点击按钮、输入数据、导航到不同的页面等等,以验证应用程序的正确性、性能和稳定性。

uml diagram


  • 自动化测试在回归测试、冒烟测试等测试流程中都可以极大的起到节省时间、节省人力的作用,所以目前自动化测试工程师,也是一个非常炙手可热的岗位。
  • 在编写自动化测试的过程中,ChatGPT 可以作为一个非常好用的工具,极大提升编写效率。

自动化测试的招聘信息


实践演练

  • 在使用 ChatGPT 编写自动化测试脚本的时候,提示词最好明确相关的技术栈,这样可以在生成的脚本基础之上做对应的修改。
  • 提示词:请帮我编写一个接口自动化测试脚本,要求使用 pytest + requests 。只需要对响应状态码完成断言即可。
  • ChatGPT的响应信息为:
    import pytest
    import requests
    
    # 定义测试用例
    def test_api_response_status_code():
        # 设置API端点
        api_url = "https://jsonplaceholder.typicode.com/posts/1"
    
        # 发送GET请求
        response = requests.get(api_url)
    
        # 检查响应状态码是否为200 OK
        assert response.status_code == 200
    
    # 运行测试
    if __name__ == "__main__":
        pytest.main(["-v", "test_api.py"])
    

  • 提示词:请帮我编写一个 Web 自动化测试脚本,要求使用 pytest + playwright。
  • ChatGPT的响应信息为:
    import pytest
    from playwright.sync_api import sync_playwright
    
    # 定义测试用例
    def test_web_page_title():
        with sync_playwright() as p:
            browser = p.chromium.launch()
            page = browser.new_page()
    
            # 打开网页
            page.goto("https://example.com")
    
            # 获取页面标题
            title = page.title()
    
            # 检查页面标题是否包含"Example Domain"
            assert "Example Domain" in title
    
            # 关闭浏览器
            browser.close()
    
    # 运行测试
    if __name__ == "__main__":
        pytest.main(["-v", "test_web.py"])
    

  • 请结合 harmcrest 优化断言。
  • ChatGPT的响应信息为:
import pytest
from playwright.sync_api import sync_playwright
from hamcrest import assert_that, contains_string

# 定义测试用例
def test_web_page_title():
    with sync_playwright() as p:
        browser = p.chromium.launch()
        page = browser.new_page()

        # 打开网页
        page.goto("https://example.com")

        # 获取页面标题
        title = page.title()

        # 使用Hamcrest断言检查页面标题是否包含"Example Domain"
        assert_that(title, contains_string("Example Domain"))

        # 关闭浏览器
        browser.close()

# 运行测试
if __name__ == "__main__":
    pytest.main(["-v", "test_web.py"])

总结

  1. 写清楚需求:在要求ChatGPT编写自动化测试脚本的时候,需要给它明确使用的技术栈,方便基于脚本做修改。

  2. 将复杂的任务拆分为更简单的子任务/系统地测试变化:通过多次提问,进一步修正ChatGPT的回复,直到满足需求。