博客系统自动化测试报告
1、项目背景
互联网博客的发展经历了从概念形成到快速增长,再到成熟期的演变过程。起源于1990年代末的个人网页记录,博客在2000年代随着Blogger、WordPress等平台的兴起而迅速普及,内容管理系统(CMS)的出现使得非技术人员也能轻松管理内容。进入2010年代,博客适应了移动设备的需求,并集成了多媒体元素,同时与社交媒体紧密结合,提升了传播效果。专业化和商业化成为趋势,许多博主通过多种方式实现盈利。当前,博客形式更加多样化,包括视频博客、播客等,并且借助人工智能技术提高了创作效率。博客不仅是个人表达的平台,也成为了一种重要的新媒体形式,反映了互联网技术和用户需求的不断进步。
2、项目简介
博客系统是一个让用户能够撰写、发布和管理文章的Web网站,主要包括用登录、文章的增删改查及文章分类标签等功能。该项目采用现代Web技术栈。系统设计需注重用户体验。
3、测试计划
功能 | 后端开发 | 前端开发 | 提测日期 | 测试 | 测试日期 | 测试结果 |
登陆界面 | 赵四 | 金善禹 | 8.20 | 小欣 | 8.22 | 测试通过 |
博客首页 | 张三 | 金善禹 | 8.21 | 小欣 | 6.23 | 测试通过 |
博客详情页 | 赵四 | 金善禹 | 8.21 | 小欣 | 6.23 | 测试通过 |
博客编辑页 | 赵四 | 金善禹 | 8.22 | 小欣 | 6.24 | 测试通过 |
回归测试 | 小欣 | 6.25 | 测试通过 |
4、测试工具
Selenium、Jmeter
5、涉及到的测试类型
本次测试涉及到的测试类型有:功能测试、性能测试、自动化测试。
功能测试:本次测试项目博客系统包括了用户的登录和注销、博客的增删查改、一键返回主页功能,此次共发现了0个问题
自动化测试:本次测试项目博客系统包括了博客登录页面、博客首页、博客详情页、博客编辑页面,发现了1个问题
6、功能测试
测试用例说明:
- 登陆界面:
- 预期结果:界面正常显示账号输入框、密码输入框、登录提交按钮、导航栏。
实际结果:所有页面元素均正常显示。
- 预期结果:界面上的登陆提交按钮、主页跳转链接按钮、写博客跳转链接按钮正常可点击。
实际结果:所有按钮均正常运作。
- 博客首页:
- 预期结果:界面正常显示用户信息栏(头像、昵称、GitHub地址、文章数目、分类数目)、博客列表(博客标题、博客发布时间、博客内容、“查看全文”按钮)、导航栏。
实际结果:所有页面元素均正常显示。
- 预期结果:界面上的“查看全文”按钮、主页跳转链接按钮、写博客跳转链接按钮、注销跳转链接按钮正常可点击。
实际结果:所有按钮均正常运作。
- 博客详情页:
a.预期结果:界面正常显示博客标题、博客发布时间、博客内容、编辑按钮、删除按钮、导航栏。
实际结果:所有页面元素均正常显示。
b.预期结果:界面上的编辑按钮、删除按钮以及导航栏中的跳转链接按钮均正常可点击。
实际结果:所有按钮均正常运作。
- 博客编辑页面:
a.预期结果:界面正常显示博客标题输入框、博客内容输入框、更新文章按钮、编辑文章相关插件、导航栏。
实际结果:所有页面元素均正常显示。
b.预期结果:界面上的更新文章按钮以及导航栏中的跳转链接按钮正常可点击。
实际结果:所有按钮均正常运作。
7、自动化测试
1)登陆界面
a.自动化测试用例
(1)预期结果:输入正确的账号和密码,正常登录跳转到博客主页
实际结果:正常运行
b.自动化测试脚本
#成功登录的测试用例
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")
time.sleep(3)
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)预期结果:输入正确的账号和错误密码,不能正常登录跳转到博客主页
实际结果:正常运行
c.自动化测试脚本
#异常登录的测试用例
def LoginFailTest(self):
# time.sleep(2)
#若连续多次的send_keys则会出现关键词拼接,而不是替换
self.driver.find_element(By.CSS_SELECTOR,"#username").clear()
self.driver.find_element(By.CSS_SELECTOR,"#password").clear()
# time.sleep(2)
self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("lisi")
#错误的密码
self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("123")
# time.sleep(2)
self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
# time.sleep(2)
#检查是否登录失败
actual=self.driver.switch_to.alert.accept()
#添加屏幕截图
# time.sleep(2)
BlogDriver.getScreenShot()
#断言检测一下是否符合预期
# assert actual==""
self.driver.quit()
2)博客首页
- 自动化测试用例
预期结果:成功进入博客首页,并且各个元素均正常显示
实际结果:均正常显示
- 自动化测试脚本
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.date")
# 测试博客内容是否存在
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()
3)博客详情页
a.自动化测试用例
预期结果:成功进入博客详情页,并且各个元素均正常显示
实际结果:均正常显示
b.自动化测试脚本
#登录状态下博客详情页的测试
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")
#屏幕截图
BlogDriver.getScreenShot()
4)博客编辑页
a. 自动化测试用例
预期结果:成功进入博客编辑页,并且各个元素均正常显示;可以正常发布博客
实际结果:均正常运行
b.自动化测试脚本
#正确发布博客(登录状态下)
def EditSucTestByLogin(self):
self.driver.find_element(By.CSS_SELECTOR,"#title").send_keys("自动化测试用例")
#找到编辑区域,输入关键词
self.driver.find_element(By.CSS_SELECTOR,"#editor > div.CodeMirror.cm-s-default.CodeMirror-wrap > div.CodeMirror-scroll > div.CodeMirror-sizer > div > div > div > div.CodeMirror-code > div > pre > span > span").send_keys("开心每一天开心每一天开心每一天开心每一天开心每一天开心每一天开心每一天开心每一天开心每一天开心每一天开心每一天开心每一天开心每一天开心每一天")
#找到编辑区域,输入关键词(编辑区域不可操作)
self.driver.find_element(By.CSS_SELECTOR,"#editor > div.editormd-toolbar > div > ul > li:nth-child(21) > a > i").click()
#直接点击发布按钮来发布博客
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(79) > div.title").text
assert actual=="自动化测试创建"
#屏幕截图
BlogDriver.getScreenShot()
8、项目测试bug简述
本次项目测试发现了0个bug,有0个崩溃级别的bug,有1个一般级别的bug。
bug级别 | bug所属 | bug位置 | 报告人 | 是否修复 |
一般级别 | 前端 | <a class="nav-span" href="#" οnclick="logout()">注销</a> | 小欣 | 未修复完成 |
9、遗留问题
1)需求变更:本次由于时间原因,推迟到下一个版本进行修复
2)低优先级的bug:对于注销时,没有提示框来警示用户可能导致用户体验感降低,该bug需要进行修复;但该bug并不影响正常功能的使用,推迟到下一个版本进行修复
10、测试结论
本次项目测试通过,项目开发耗时4天,项目测试耗时4天。
测试报告总结表明,在2023年8月20日至8月25日期间,对博客系统进行了全面测试,涵盖用户登录、文章编辑、用户注销等功能。测试结果显示,系统核心功能正常,但在移动端布局和极端条件下的性能上有待优化,且需加强安全防护。总体而言,系统表现良好,建议修复已发现的小问题并优化移动端体验、数据库查询效率和安全措施后,即可投入生产使用。
测试脚本:BlogAutoTest · 蜡笔小欣/BlogAutoTest - 码云 - 开源中国 (gitee.com)