博客系统的测试报告

1.博客系统项目介绍

该博客系统有四个部分组成,分别是登录页面,博客详情页,博客首页和博客编辑页。本次测试将分为手动测试和自动化测试两个部分。

2.博客系统测试用例的设计

在正式进行测试之前,我们首先就是要设计测试用例,搞清楚测试到底测什么?测哪些功能?

我将通过思维导图的方式将我设计的测试用例体现出来

3.手动测试

3.1博客登录页面

正常登录就是输入正确的账号和密码,成功登录博客系统,首先进入登录界面:

然后输入正确的账号和密码,将会跳转到博客首页, 如图所示,正常登录的功能正常:

什么情况下将会发生异常登录呢?输入正确的账号和错误的密码,输入错误的账号和正确的密码,输入错误的账号和错误的密码,这些情况都会造成异常登录,我们来测试看看这个功能能不能正常进行。

如图所示,假如输入错误的信息,将会发生异常登录,所以这个功能测试是正常的。

3.2博客首页显示功能

博客首页界面也分为登录状态下和未登录状态下,这两种状态下的显示功能应当也不一样。我们测试看看。

首先,在登录状态下,我们需要看到哪些信息才能证明首页功能是正常的呢?

如图所示,在登录状态下,我们应当看见的是用户的头像,用户的昵称,博客分类和博客文章。在博客列表这边也要看到的是博客文章名称,博客日期,博客正文和查看全文按钮,这些是需要正常显示的,我们正常登录看看,是否正常显示

如上图所示,我们可以正常看到上述描述的那些功能,所以博客首页显示功能是正常的,完成测试。

而在未登录的情况下,我们必须要看到的是哪些东西呢?在未登录状态下,博客系统应当将该用户拦在登录界面,先登录才能正常查看用户信息,我们测试看看,将登录页面的url复制,粘贴到另一个浏览器,然后查看页面。

如上图所示,确实是将用户拦在登录界面了,所以该功能是正常的,测试完成!

3.3博客详情页

博客详情页的查看也要分为登录状态下和未登录状态下,在登录状态下,我们应当测试的是文章的标题,文章的发布日期,文章的内容,这些都应该正常显示。我们测试看看吧:

如上图所示,我们测试的功能都能完成,并且左侧还显示出了用户的信息,这些功能也是正常的。测试完成。

那我们在未登录状态下测试一下吧。

如上图所示,达到我们的预期,该未登录用户成功被拦在了登录界面,需要登录才能查看博客内容。

3.4博客编辑页

在博客编辑页界面,我们需要测试哪些功能呢?首先我们正常发布博客和异常发布博客的表现是不一样的。正常发布博客,需要我们输入博客标题,博客内容以及点击发布博客的按钮,这三个都必须完成才能正常发布博客,这三个少一个都会导致异常发布。

我们先测试正常发布博客功能

如图所示,博客正常发布之后,博客系统将会正常发布博客,并且跳转到博客首页,博客首页将会显示博客标题,发布时间,博客内容和查看全文按钮。这些都是正常的,所以该功能正常,测试成功!

下面将测试异常发布,这里以不写标题为例:如图所示,不写标题就点击发布按钮就会触动弹窗警告。符合用户需求,所以测试成功!

4.博客系统的自动化测试

我们使用Selenium工具,惊醒web自动化测试,Python语言。

想要完成这个测试我们需要下载两个工具,一个是

selenium库和webdriver-manager驱动。

这两个工具下载完成后可以检查一下

在设置里面的Python解释器里面看看有没有就可以了。

4.1工程项目列表

下一步,我们要创建工程,我们看看项目列表,来分析一下我们这次自动化测试项目需要测试的功能吧。

如上图所示,我们在工程目录下创建了两个包,一个是common,一个是tests,common包里面存放的是我们每个测试文件需要共同用到的对象。

另一个tests包就是存放的我们的测试代码。可以看到测试代码Python文件有测试登录界面,博客详情页,博客首页和博客编辑页。至于RunTest这个Python文件则将整个测试项目连接起来的运行入口。

4.2Utils文件

毫无疑问的是,我们的每个测试文件都需要一个浏览器驱动,于是就写了一个类,创建出一个类对象,供每个测试文件使用,在使用时引入这个包就可以了。具体看代码,

python 复制代码
# 创建一个浏览器对象
import os
import sys
from datetime import datetime
from time import sleep

from requests import options
from selenium import webdriver
from selenium.webdriver.ie.service import Service


class Driver:
    driver = ""
    def __init__(self):
        options = webdriver.ChromeOptions()
        self.driver = webdriver.Chrome(service = Service("D:\\driver\\chromedriver-win64\\chromedriver.exe"), options=options)
        self.driver.implicitly_wait(2)

    def getScreenShot(self):
        dirname = datetime.datetime.now().strftime("%Y-%m-%d")
        if not os.path.exists("../images/" + dirname):
            os.mkdir("../images/" + dirname)

        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()

1)需要注意的是在我们的driver类里面有一个getScreenShot函数,这个函数的功能就是在测试的时候可以截图,做到一个锦上添花的作用,帮助测试人员进行测试,并且还会以日期来命名,达到不会覆盖历史截图的效果。

2)在初始化函数内,还有一个implicitly_wait函数,这是一个智能等待函数,由于代码执行速度较快,页面内容较多,渲染加载需要时间,所以这个就会等待所有元素加载成功再去测试,很好地帮我们规避掉了这样的困难。

4.3自动化测试博客登录页面

测试博客登录页面分为两个部分:正常登录和异常登录,首先我们先创建一个类,写初始化函数:

python 复制代码
class BlogLogin:
    url = ""
    driver = ""
    def __init__(self):
        self.url = "http://47.108.157.13:8090/blog_login.html"
        self.driver = BlogDriver.driver
        self.driver.get(self.url)

初始化将URL设置为登录页面的URL,将浏览器驱动设置为utils文件中创建的类对象,并且设置驱动为目标URL。

下一步,测试正常登录:

python 复制代码
 # 成功登录的测试用例
    def LoginSucTest(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhangsan")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        # 找到博客首页的昵称,说明登录成功
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.left > div > h3")

        self.driver.back()

设置一个成员函数,然后找到这个页面的用户名、密码和登录按钮的选择器,填入正确的账号和密码,找到选择器,如图所示:右键copy selector即可

成功登录后找到博客首页的用户名等信息,如果存在,则会返回0。证明正常登录功能正常,测试成功!

异常登录测试

异常登录就是输入错误的账号错误的密码,正确的账号错误的密码,错误的账号正确的密码,就会异常登录。

python 复制代码
 # 异常登录的测试用例
    def LoginFailTest(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhangsan")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()

    BlogDriver.getScreenShot()

我们最后一步截图,查看测试效果。如图所示,达到用户需求,完成测试。

自动化测试博客登录页面测试完成,附上文件代码:

python 复制代码
# 测试博客登录页面
import time

from selenium.webdriver.common import alert
from selenium.webdriver.common.by import By
from selenium.webdriver.support.expected_conditions import alert_is_present

from common.Utils import BlogDriver

class BlogLogin:
    url = ""
    driver = ""
    def __init__(self):
        self.url = "http://47.108.157.13:8090/blog_login.html"
        self.driver = BlogDriver.driver
        self.driver.get(self.url)
    # 成功登录的测试用例
    def LoginSucTest(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhangsan")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
        # 找到博客首页的昵称,说明登录成功
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.left > div > h3")

        self.driver.back()
    # 异常登录的测试用例
    def LoginFailTest(self):
        self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("zhangsan")
        self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")
        self.driver.find_element(By.CSS_SELECTOR, "#submit").click()

    BlogDriver.getScreenShot()

login = BlogLogin()
login.LoginSucTest()
login.LoginFailTest()

4.4自动化测试博客首页

博客首页需要测试的内容就是博客标题,博客内容,博客发布时间以及查看全文按钮,其实也是照猫画虎,附上代码:

python 复制代码
# 博客首页测试用例
from selenium.webdriver.common.by import By

from common.Utils import BlogDriver

class BlogList:
    url = ""
    driver = ""
    def __init__(self):
        self.url = "http://47.108.157.13:8090/blog_list.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")


list = BlogList()
list.ListTestByLogin()

先初始化,然后设置成员函数,如果返回值为0,则测试成功!

4.5自动化测试博客详情页

博客详情页我们需要测试的是博客标题,博客发表时间以及博客内容。这三项非常重要。

python 复制代码
# 测试博客详情页
from selenium.webdriver.common.by import By

from common.Utils import BlogDriver


class BlogDetail:
    url = ""
    driver = ""
    def __init__(self):
        self.url = "http://47.108.157.13:8090/blog_detail.html?blogId=68538"
        self.driver = BlogDriver.driver

    # 博客详情页测试
    def DetailTestByLogin(self):
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div > div.title")
        self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div > div.date")
        self.driver.find_element(By.CSS_SELECTOR, "#h2--")
        BlogDriver.getScreenShot()

detail = BlogDetail()
detail.DetailTestByLogin()

也和之前的测试代码类似,创建一个成员函数,测试结果返回0,则测试成功!

4.6自动化测试博客编辑页

博客编辑页的流程是,先找到标题输入框,输入标题,然后找到内容输入框,输入内容。然后点击发布按钮,点击。最后检测页面顶部有没有标题为刚输入的标题的文章,如果有则发布成功!

python 复制代码
# 博客编辑页面
import time

from selenium.webdriver.common.by import By

from common.Utils import BlogDriver


class BlogEdit:
    url = ""
    driver = ""
    def __init__(self):
        self.url = "http://47.108.157.13:8090/blog_edit.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()
        actual = self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(1) > div.title").text
        assert  actual == "111"

        BlogDriver.getScreenShot()
        time.sleep(3)


edit = BlogEdit()
edit.EditSucTestByLogin()

4.7自动化测试执行入口RunTest.py

上面我们分别编写了每个模块的自动化测试代码,下面我们将这几个测试连接在一块,回归测试。

python 复制代码
from tests.BlogLogin import BlogLogin
from tests.BlogList import BlogList
from common.Utils import BlogDriver
from tests.BlogDetail import BlogDetail

if __name__ == "__name__":
    BlogLogin.BlogLogin().LoginFailTest()
    BlogLogin.BlogLogin().LoginSucTest()

    BlogList.BlogList().ListTestByLogin()
    BlogDetail.BlogDetail().DetailTestByLogin()

    BlogDriver.driver.quit()

可以看到我们将每个测试模块的类都生成了,然后执行测试函数,最后关闭浏览器。这就是一个完整的测试过程。

由此可见,测试工作的流程主要就是设计测试用例->手动测试->编写自动化测试脚本->完成测试。

5.自动化测试的意义

自动化测试脚本是需要测试人员编写的,在测试每个项目的新版本时,测试人员都需要将旧版本的代码测试一遍,看是否兼容,但是每个版本测试一遍的人工成本是巨大的,这就需要测试人员编写自动化测试的脚本,将旧版本的代码测试,这就节省了很多人力成本。所以说自动化测试是高效的,但是也不能完全替代测试人员的手动测试,这两者是绝对相辅相成的。

相关推荐
Promise微笑4 小时前
2026年绝缘油介损测试仪(油介损)功能测试排行及口碑测评白皮书
功能测试
测试_AI_一辰5 小时前
Agent & RAG 测试工程笔记 13:RAG检索层原理拆解:从“看不懂”到手算召回过程
人工智能·笔记·功能测试·算法·ai·ai编程
天天爱吃肉82186 小时前
【电机双闭环控制问答:PI 输出为何不同?测功机台架选型有多关键】
功能测试·嵌入式硬件·信息可视化·汽车
llilian_169 小时前
IRIG-B码产生器立足用户痛点,提供精准授时解决方案
大数据·数据库·功能测试·单片机·嵌入式硬件·测试工具
紫丁香1 天前
pytest_自动化测试5
python·功能测试·单元测试·集成测试·pytest
念越2 天前
蓝桥杯17届功能测试模拟1期题目及解析(1)
功能测试·蓝桥杯·测试用例·场景法
紫丁香2 天前
pytest_自动化测试3
开发语言·python·功能测试·单元测试·集成测试·pytest
奶茶精Gaaa2 天前
AI实战(二)生成ui自动化
功能测试·学习·自动化
紫丁香2 天前
pytest_自动化测试1
开发语言·python·功能测试·单元测试·pytest