自学内容网 自学内容网

【软件测试】自动化测试实战篇 -- 详解

以博客系统为例,基于 Web 项目进行完整的自动化实战。


一、自动化实施步骤

1、编写 Web 测试用例


2、自动化测试脚本开发

(1)用例需要用到的配置(common)

A. Utils.py
import datetime
import os.path
import sys

# 创建一个浏览器对象

from selenium import webdriver
from selenium.webdriver.edge.service import Service
from webdriver_manager.microsoft import EdgeChromiumDriverManager


class Driver:
    driver = ""
    def __init__(self):
        options = webdriver.EdgeOptions()
        self.driver = webdriver.Edge(service = Service(EdgeChromiumDriverManager().install()), options=options)
        self.driver.implicitly_wait(2)
    def getScreeShot(self):
        # 创建屏幕截图
        # 图片文件名称:./2024-07-19-134936.png
        dirname = datetime.datetime.now().strftime("%Y-%m-%d")
        # 判断dirname文件夹是否已经存在,若不存在则创建文件夹
        # ../images/2024-07-19
        if not os.path.exists("../images/" + dirname): # ../images/2024-07-19
            os.mkdir("../images/" + dirname)
        # 2024-07-19-134936.png
        # 图片路径:./images/调用方法-2024-07-19/2024-07-19-134936.png
        # 图片路径:./images/LoginSucTest-2024-07-19/2024-07-19-134936.png
        # 图片路径:./images/LoginFailTest-2024-07-19/2024-07-19-134936.png
        filename = sys._getframe().f_back.f_code.co_name + "-" + datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S") + ".png"
        self.driver.save_screenshot("../images/" + dirname + "/" + filename)

BlogDriver = Driver()

(2)存放测试用例文件(test)

A. BlogLogin.py(博客登录页相关测试用例)


B. BlogList.py(博客首页相关测试用例)

from selenium.webdriver.common.by import By

from common.Utils import BlogDriver
# 博客首页测试用例
class BlogList:
    url = ""
    driver = ""
    def __init__(self):
        self.url = "http://8.137.19.140:9090/blog_login.html"
        self.driver = BlogDriver.driver
        self.driver.get(self.url)
    # 测试首页(登录情况下)
    def ListTestByLogin(self):
        # 测试博客标题是否存在
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(1) > div.title")
        # 测试按钮是否存在
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(1) > div.desc")
        # 测试博客内容是否存在
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(1) > a")
        # 个人信息-检查昵称是否存在
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.left > div > h3")
        # 添加屏幕截图
        BlogDriver.getScreeShot()

    # 测试首页(未登录情况下)

C. RunTest.py


D. BlogDetail.py(博客详情页相关测试用例)


E. BlogEdit.py(博客编辑页相关测试用例)

import time

from selenium.webdriver.common.by import By

from common.Utils import BlogDriver
# 测试博客编辑页面
class BlogEdit:
    url = ""
    driver = ""
    def __init__(self):
        self.url = "http://8.137.19.140:9090/blog_login.html"
        self.driver = BlogDriver.driver
        self.driver.get(self.url)

    # 正确发布博客(登陆状态下)
    def EditSucTestByLogin(self):
        self.driver.find_element(By.CSS_SELECTOR, "#title").send_keys("自动化测试创建")
        # 找到编辑区,输入关键词(编辑区域不可操作)
        # 通过点击菜单栏达到编辑区域不为空的目的
        # 博客系统编辑区域默认情况下就不为空,可以暂不处理

        # 直接点击发布按钮来发布博客
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        # 点击完成之后出现页面跳转,页面跳转需要加载时间,可能会出现代码执行的速度比页面渲染的速度更快,导致元素查找不到,因此可以添加等待
        # 可以添加隐式等待/显示等待
        # 隐式等待:创建浏览器对象之后就可以加上,因为隐式等待的作用域在driver整个生命周期
        # 显示等待:可以作用在当前代码中
        actual = self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(1) > div.title").text
        assert actual == "自动化测试创建"
        # 屏幕截图
        BlogDriver.getScreeShot()


3、将自动化测试补充支测试报告

一般在执行完项目测试之后进行编写的测试报告文档。

测试报告并没有一个统一的写法,不同的企业、不同的测试部门要求的格式也不完全一样。但是测试报告整体来说还是有一个基本内容的,整体上来说差别不大。

在哪一个阶段出具测试报告呢?

当执行完项目测试之后,认为项目已经测试完成了就可以编写测试报告。


(1)测试报告模板


(2)测试报告主要内容

测试了哪些主要功能,测试覆盖面是多少,测试结论。

A. 项目背景

为什么要做这个项目(存在的意义是什么,解决了什么问题)


B. 项目简介

项目有哪些功能,每个功能分别怎样使用


C. 测试计划

D. 测试工具

比如:postman。


E. 设计到的测试动作 / 类型

功能测试、性能测试、自动化测试

  • 功能测试:覆盖了哪些功能,发现了多少个问题
  • 性能测试:覆盖了哪些页面 / 接口,发现了多少个问题
  • 自动化测试:覆盖了哪些页面

F. 功能测试

G. 自动化测试
  • 自动化测试用例
  • 自动化测试脚本

H. 项目测试 Bug 简述

I. 测试结论

J. 代码链接

K. 针对项目采用的框架 / 技术

原文地址:https://blog.csdn.net/weixin_74531333/article/details/140414627

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!