软件测试之基于博客系统项目的功能测试
上篇文章详细叙述了web自动化测试常用函数,它分别从元素定位,操作测试对象,窗口,等待,导航,弹窗,文件上传,浏览器参数这8个方面全面介绍了测试中常用函数。本篇文章基于上篇所讲的软件测试常用函数,制作一篇基于博客系统项目的web端功能测试。
博客系统功能测试
在互联网内容创作蓬勃发展的当下,博客系统作为用户分享观点、记录生活的重要平台,其功能稳定性与用户体验直接影响使用粘性。
开展博客系统功能测试,旨在通过系统性验证注册、发布、评论等核心功能的准确性,排查潜在bug与逻辑漏洞,确保系统在多场景下稳定运行。 这一项目不仅能保障用户正常使用各类功能,更是提升产品竞争力、降低后期运维成本的关键环节,为博客系统的可持续优化奠定基础。
自动化测试实施步骤
自动化测试实施主要由3步组成—编写web测试⽤例,⾃动化测试脚本开发,将⾃动化测试补充⾄测试报告,下面我将逐一为大家介绍。
1 编写web测试用例
编写Web测试用例时,需先依据需求文档梳理功能点,采用等价类划分、边界值分析等方法设计覆盖正常与异常场景的用例,同时结合场景法模拟用户真实操作路径。需注意用例描述要清晰具体,明确输入、操作步骤与预期结果,避免歧义;还要考虑浏览器兼容性、响应式布局等非功能维度,以及对验证码、文件上传等特殊控件的测试覆盖,确保用例既全面又具备可执行性,为Web系统质量验证提供有效支撑。
注:上图为本人写的测试用例,用例主要描述的是成功登录状态下的各个界面的测试用例,未登录状态下并未过多描述与测试,小伙伴们自己编写测试用例时可以成功登陆与未成功登录等各种情况都详细描述测试一下喔~
2 自动化测试脚本开发
自动化测试脚本开发能够将重复性的测试任务转化为可重复执行的代码,大幅提升测试效率,减少人工测试的时间与成本。通过脚本自动执行测试用例,可实现7×24小时不间断测试,及时发现系统在不同环境下的潜在问题。同时,脚本的复用性支持回归测试快速开展,帮助团队在项目迭代中高效验证功能稳定性,为软件质量持续提供可靠保障。
1.首先创建一个com.py的python文件,里面主要存储web测试中需要共同使用的函数—浏览器对象函数,隐式等待函数,屏幕截图函数等等。
下面为com.py文件里具体代码:
import os.path
import sys
from datetime import datetime
from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.edge.service import Service
from webdriver_manager.microsoft import EdgeChromiumDriverManager
#创建一个浏览器对象
class Driver:
driver = ""
def __init__(self):
driver_path = EdgeChromiumDriverManager().install()
edge_options = Options()
edge_options.add_argument( "--remote-allow-origins=*" )
# 2. 创建浏览器驱动对象访问浏览器
self.driver = webdriver.Edge( service=Service( driver_path ), options=edge_options )
#隐式等待
self.driver.implicitly_wait(3)
#创建屏幕截图
def getScreenShot(self):
dirname = datetime.now().strftime("%Y-%m-%d")
if not os.path.exists("../images/"+dirname):
os.makedirs("../images/"+dirname)
#图片路径:../images/LoginSucTest(方法名)-2025-06-04/2025-06-04-183940.png
filename = sys._getframe().f_back.f_code.co_name+datetime.now().strftime("%Y-%m-%d-%H%M%S")+".png"
self.driver.save_screenshot("../images/"+dirname+"/"+filename)
BlogDriver = Driver()
2.其次创建若干个test文件,比如博客登录文件,博客首页文件,博客详情页文件,博客编辑页文件等等,并把这些文件放在同一个命名为tests的python包中。
下面为各个文件的详细代码
<1>博客登陆文件:博客登陆页面的测试
import time
from commmon.com import BlogDriver
from selenium.webdriver.common.by import By
#测试博客登陆页面
class BlogLogin:
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 LoginFailTest(self):
# 前面的输入账号密码没退出,在send会变成拼接,因此需要清空在输入
self.driver.find_element( By.CSS_SELECTOR, "#username" ).clear()
self.driver.find_element( By.CSS_SELECTOR, "#password" ).clear()
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()
time.sleep(3)
# 验证登陆失败(出现弹窗)
alert = self.driver.switch_to.alert
#打印弹窗 有弹窗的时候 是不能截图的 所以你这里截图无效 你要么点提前之前截图 要么去掉截图都可以
#BlogDriver.getScreenShot()
alert.accept()
#成功登陆的测试用例
def LoginSuTest(self):
self.driver.find_element( By.CSS_SELECTOR, "#username" ).clear()
self.driver.find_element( By.CSS_SELECTOR, "#password" ).clear()
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()
time.sleep(3)
#能够找到博客首页的用户昵称,证明登陆成功,否则登陆失败
self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.left > div > h3")
BlogDriver.getScreenShot()
<2>博客首页文件:博客首页的测试
#博客首页测试
from selenium.webdriver.common.by import By
from commmon.com import BlogDriver
class BlogList:
url = ""
driver = ""
def __init__(self):
self.url = "http://8.137.19.140:9090/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" )
#添加屏幕截图
BlogDriver.getScreenShot()
<3>博客详情页文件:博客详情页的测试
from selenium.webdriver.common.by import By
from commmon.com import BlogDriver
#测试博客详情页
class BlogDetail:
url = ""
driver = ""
def __init__(self):
self.url = "http://8.137.19.140:9090/blog_detail.html?blogId=97185"
self.driver = BlogDriver.driver
self.driver.get( self.url )
#登录状态下的博客详情页信息(标题,发布时间,具体博客内容)
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,"#detail > p")
<4>博客编辑页文件:博客编辑页测试
from selenium.webdriver.common.by import By
from commmon.com import BlogDriver
#测试博客编辑页面
class BlogEdit:
url = ""
driver = ""
def __init__(self):
self.url = "http://8.137.19.140:9090/blog_edit.html"
self.driver = BlogDriver.driver
self.driver.get(self.url)
#测试登录状态下编辑完成正确发布博客(标题输入关键词,点击发布文章按钮,内容输入关键内容-通过菜单栏点击,博客系统编辑区默认下就不为空,可以不处理)
def EditSuTestByLogin(self):
self.driver.find_element(By.CSS_SELECTOR,"#title").send_keys("博客系统界面自动化测试")
self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
#屏幕截图
BlogDriver.getScreenShot()
3.最后,创建一个运行文件RunTest.py,在这个文件中运行博客登录文件,博客首页文件,博客详情页文件和博客编辑页文件里的内容。
RunTest.py里的代码如下:
from commmon.com import BlogDriver
from tests.BlogDetail import BlogDetail
from tests.BlogEdit import BlogEdit
from tests.BlogList import BlogList
from tests.BlogLogin import BlogLogin
if __name__ == "__main__":
BlogLogin().LoginFailTest()
BlogLogin().LoginSuTest()
BlogList().ListTestByLogin()
BlogDetail().DetailTestByLogin()
BlogEdit().EditSuTestByLogin()
BlogDriver.driver.quit()
4.结束观察界面自动截图展示,从而排查bug以及观察各个界面运行结果
总结:小伙伴们可以仿照我的代码自己动手实践一下,从而真正学会对web网页进行功能自动化测试噢(ง •_•)ง
3 ⾃动化测试补充⾄测试报告
1.项目背景
1.1测试目标及测试任务概括
1.2被测的系统、代码包及其文档等信息
1.3产品需求和设计文档等
《需求文档》、《技术文档》、《设计图》
2.测试安排
3.测试分类
1)功能测试
测试用例
功能测试结果:测试用例100%通过
2)性能测试
测试用例
功能测试结果:测试用例100%通过
3)自动化测试
自动化测试覆盖模块:登陆页面、博客首页、博客编辑页面、博客详情页面等等
●自动化代码示例(可以是代码链接,也可以直接放代码)
自动化测试用例数量:20
自动化测试结果:pass:19/20、fail:1/20
●自动化测试问题是否修复:是
4.遗留风险
测试时间紧张,先保证博客系统主功能没有问题,可能存在细节测试不到位等风险。
5.测试结果评估
1)主功能测试通过,项目可以上线。
2)项目上线后高优观察线上数据,查看线上用户操作日志,及时跟进用户反馈。
写在最后:以上就是博客系统功能测试及自动化实施的全流程梳理啦。从测试用例编写筑牢基础,到脚本开发释放效率,再到融入报告沉淀价值,每一步都为保障系统质量发力。测试之路没有终点,随着博客系统迭代,我也会持续优化测试策略,让自动化测试更好地护航产品体验,期待和小伙伴们继续交流更多测试干货,我们下次博客见~