当我们至少完成了一次项目的功能测试后,我们可以写一篇测试报告出来。在这里,我先完成了功能测试,自动化测试,又进行了弱网测试,我们把它们都编入测试报告,来写出一篇简单的博客系统测试报告
Gitee源码:博客系统自动化测试源码
1.项目背景
我们选择的博客系统是一个趋待完善的系统,它是一个允许用户登录、发布博客、管理博客和跳转Gitee账户的平台。它包含用户登录、内容编辑、分类、统计、关联Gitee仓库等功能。随着互联网的普及,越来越多的个人和企业希望通过博客系统来传播内容、展示专业知识或进行品牌推广。因此,检测这个博客系统是否可靠,是否能堪大用变得至关重要。
2.项目简介
我们选择的博客系统,由四个界面,分别是博客登录页面、博客主页面、博客详情页以及博客编辑页。下面我们来分别介绍这几个页面有哪些功能。
2.1博客登录页
功能:输入已经注册的账号和密码,点击登录,进入博客主页面
2.2博客主页面
功能:进入博客主页面后,我们可以看到页面分为两栏,左侧栏是我们的个人信息,有头像,昵称,Gitee仓库,文章和分类的统计,右侧是我们的博客栏,有我们发布过的所有博客,有博客标题,博客发布时间以及博客部分内容和查看博客详情的按钮。在博客顶栏,有主页,写博客,注销三个按钮。
2.3博客详情页
功能:点击主页面的查看全文按钮,我们进入到博客详情页,在详情页中,我们可以看到写的博客的全部内容,也分为两栏,左边栏是个人信息,有头像,昵称,Gitee仓库,文章和分类的统计,右侧是我们的博客详细内容,有编辑和删除按钮,可以对这篇博客进行编辑,在更新博客进行发布。在博客顶栏,有主页,写博客,注销三个按钮。
2.4博客编辑页
功能:点击顶栏的写博客按钮,我们进入到博客编辑页面,可以进行博客编辑,点击发布,回到博客主页面。
3.测试计划
针对本次测试的博客系统,我将从界面、功能、性能、兼容性、安全性、易用性以及弱网条件七个方面下进行测试。
测试计划 测试 测试时间 测试人 测试结果 功能测试(自动化) 2024.9.6 Qlp pass 界面测试 2024.9.7 Qlp pass 性能测试 2024.9.7 Qlp pass 易用性测试 2024.9.8 Qlp pass 兼容性测试 2024.9.8 Qlp pass 安全性测试 2024.9.8 Qlp pass 弱网测试 2024.9.8 Qlp pass 回归测试 2024.9.10 Lc pass
4.测试工具
1.弱网测试工具:fiddler
2.自动化测试工具:pycharm,安装selenium和webDriver-manager
3.性能测试工具:JMeter
5.测试动作
具体操作我放在设计测试用例中,这里只进行简单描述
5.1界面测试
界面测试需要根据编写好的需求手册与界面内容进行比对,出现不一致的情况,一般情况要按需求手册的要求进行修改,这一个方面的测试选我择手动测试
5.2功能测试
对于功能的测试,我采用自动化测试,要测试的功能界面就是博客登录页,博客主页,博客详情页,博客编辑页这四个界面,我们使用pycharm工具依次对这四个界面进行自动化测试
5.3性能测试
对于性能测试,我们用jmeter工具,前提是有java,由于本人电脑没有配置与java有关,所以这里只给出了测试用例,给大家提供测试思路
5.4易用性测试
对于易用性测试,我也采用了手动测试的办法
5.5安全性测试
对安全性的测试,我们主要在博客登录页进行测试,用户的密码是否是加密显示的,数据库中用户的密码是否也是加密的,通过解密才能看到用户本来的密码。我们通过SQL注入和越权来测试。
5.6兼容性测试
对于这个博客系统的兼容性,我们也有测试工具,BrowserStack,通过这个工具它可以模拟在不同操作系统和不同浏览器上博客系统是否可以正常运行,本人没有用这个测试工具,依然手动测试。
5.7弱网测试
测试在弱网条件下,博客系统的响应速度,这里我用了fiddler测试工具
6.开始测试(自动化测试)
6.1测试用例
如下图
6.2自动化测试
在自动化测试中,我们用pycharm来进行,选择Chrome浏览器,针对它的功能进行测试
6.3测试脚本
由于代码众多,这里我们只挑选部分代码做展示,全部代码会放在Gitee仓库中,有需要的铁子可以自行查看。
博客登录页的自动化测试的脚本
#测试登录页面 import timefrom selenium.webdriver.common.by import Byfrom common.Utils import BlogDriver class BlogLogin:url=""driver=""def __init__(self):self.url="http://8.137.19.140:9090/blog_login.html"self.driver=BlogDriver.driverself.driver.get(self.url)#成功登录的测试用例def LoginSucTest(self):self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("lisi")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.getScreeShot()# self.driver.back()# self.driver.find_element(By.CSS_SELECTOR,"#username").clear()# self.driver.find_element(By.CSS_SELECTOR, "#password").clear()# self.driver.quit()#异常登录def LoginFailTest(self):#1.正确的用户名错误的密码,点击提交按钮self.driver.implicitly_wait(3)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.getScreeShot()time.sleep(3)#进行断言比对,看是否符合预期actual1=self.driver.switch_to.alert.textassert actual1=="密码错误"#关闭警告弹窗self.driver.switch_to.alert.accept()self.driver.find_element(By.CSS_SELECTOR,"#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").clear()#2.错误的用户名正确的密码,点击提交按钮self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("admin")self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("123456")self.driver.find_element(By.CSS_SELECTOR,"#submit").click()time.sleep(3)actual2=self.driver.switch_to.alert.textassert actual2=="用户不存在"self.driver.switch_to.alert.accept()self.driver.find_element(By.CSS_SELECTOR,"#username").clear()self.driver.find_element(By.CSS_SELECTOR,"#password").clear()#3.错误的用户名错误的密码,点击提交按钮self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("sisi")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("1235678")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()time.sleep(3)actual3 = self.driver.switch_to.alert.textassert actual3 == "用户不存在"self.driver.switch_to.alert.accept()self.driver.find_element(By.CSS_SELECTOR, "#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").clear()#4.空的用户名和密码,点击提交按钮self.driver.find_element(By.CSS_SELECTOR, "#submit").click()time.sleep(3)actual4 = self.driver.switch_to.alert.textassert actual4 == "账号或密码不能为空"self.driver.switch_to.alert.accept()self.driver.find_element(By.CSS_SELECTOR, "#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").clear()#5.只输入正确的用户名,不输入密码self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("lisi")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()time.sleep(3)actual5 = self.driver.switch_to.alert.textassert actual5 == "账号或密码不能为空"self.driver.switch_to.alert.accept()self.driver.find_element(By.CSS_SELECTOR, "#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").clear()#6.只输入错误的用户名,不输入密码self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("lili")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()time.sleep(3)actual6 = self.driver.switch_to.alert.textassert actual6 == "账号或密码不能为空"self.driver.switch_to.alert.accept()self.driver.find_element(By.CSS_SELECTOR, "#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").clear()#7.只输入正确的密码,不输入用户名self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()time.sleep(3)actual7 = self.driver.switch_to.alert.textassert actual7 == "账号或密码不能为空"self.driver.switch_to.alert.accept()self.driver.find_element(By.CSS_SELECTOR, "#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").clear()#8.只输入错误的密码,不输入用户名self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()time.sleep(3)actual8 = self.driver.switch_to.alert.textassert actual8 == "账号或密码不能为空"self.driver.switch_to.alert.accept()self.driver.find_element(By.CSS_SELECTOR, "#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").clear()# self.driver.quit()def LoginPageEle(self):#测试登录页面元素和点击登录页面的各个元素会有什么效果#等价来测试#查找一下我的博客系统self.driver.find_element(By.CSS_SELECTOR,"body > div.nav > span")#点击写博客,跳转到博客编辑页self.driver.find_element(By.CSS_SELECTOR,"body > div.nav > a:nth-child(5)").click()# BlogDriver.getScreeShot()#在编辑页点击发布文章按钮,跳转到博客登录页面,无法发布文章self.driver.find_element(By.CSS_SELECTOR,"#submit").click()time.sleep(2)
7.项目测试bug
bug简述 bug标题 报告人 是否修复 弱网下,登录页点击主页按钮出现异常,点击主页按钮,进入博客主页,右侧栏的发表的博客不会显示,但是会显示用户的个人信息,安全性不高
qlp 未修复 在主页点击注销按钮,会到博客登录页,依靠命令back()会回答主页,点击主页的查看详情按钮,会回到博客登录页,并不是期待中的博客详情页 qlp 已修复 说明:第一个bug需要后端和前端开发人员来修复,次要bug,可以推迟到下一个版本优化
第二个bug是本人的测试失误,注销以后,就是应该重新登录才能确保用户的信息安 全,不能过多依靠界面上的回退按钮,本人进行了失误判断
8.遗留问题
1.利用测试工具fiddler,进行弱网测试,可能是网站还不成熟,弱网测试效果不明显,属于次要bug,推迟到下一个版本来解决
2.没有注册功能,推迟到下一个版本来解决
3.用户名和密码格式不受限制,太杂乱,不好管理,推迟到下一个版本来解决
3.博客系统的登录按钮,没有关联键盘上的Enter键,不符合用户使用的惯性,推迟到下一个版本来解决
9.测试结果
本次项目测试通过,测试耗时四天。
以上就是博客项目的简单测试报告,有需要的铁子可以参考,希望可以帮助到大家,铁子们下期再见!!!