当前位置: 首页 > wzjs >正文

前端优化网站外包网络推广

前端优化网站,外包网络推广,什么叫专业建设,网站怎么做百度才会收录1.编写目的 本次测试主要针对ChatRoom项目,目的是对其进行全方位的测试。从功能性来看,它的主要功能包括登录、消息接收发送、搜索联系人、创建会话、以及是否能够正常显示消息的功能。同时,验证对于文件、音乐、视频等格式文件是否能够发送。…

1.编写目的

        本次测试主要针对ChatRoom项目,目的是对其进行全方位的测试。从功能性来看,它的主要功能包括登录、消息接收发送、搜索联系人、创建会话、以及是否能够正常显示消息的功能。同时,验证对于文件、音乐、视频等格式文件是否能够发送。在性能方面,测试不同用户数量下的响应时间、吞吐率和资源利用率以评估项目的性能。此外对于安全性,在登录时测试了用户输入是否隐藏、SQL注入、多次失败锁定等,保障用户隐私。

2.背景

2.1功能

        ChatRoom项目主要分为登录页和聊天页。

        (1)登录页:主要提供了用户登录以及用户输入密码隐藏的功能。这里没有设计注册的功能,只有数据库中存在的账号密码可以登录

        (2)聊天页:主要提供搜索联系人、新建会话、历史会话以及发送消息的功能。

2.2测试环境

        硬件:个人电脑

        操作系统:Win11

        浏览器:Edge(135.0.3179.54 (正式版本) (64 位))

        项目运行环境:maven、JDK1.8

        自动化测试环境:Selenium4.0、Python3.11

        性能测试工具:Jmeter

3.测试概要

        ChatRoom项目测试工作于2025年4月8日启动,2025年4月10日结束历时3天。设计了69条测试用例,自动化执行了40条用例。在测试过程中发现了6个Bug,其中有1个严重级别、3个一般级别、2个轻微级别。同时还有4条扩展建议。

3.1测试计划

功能

后端开发

前端开发

提测日期

测试

测试日期

测试结果

登录页面

***

***

4.8

金**

4.8

测试成功

聊天页面

***

***

4.9

金**

4.9

测试成功

3.2测试用例

4.功能测试

        本项目功能测试实现100%自动化覆盖,并且根据测试用例中的安全测试也使用自动化的方式进行测试,根据设计的测试用例编写自动化脚本。

        对于不同的页面各自编写脚本,有利于管理。并且使用Python的虚拟环境可以保证脚本的开发是独立的,避免污染并且能够减少文件体积。

4.1脚本文件结构

对于这个自动化脚本需要编写

(1)ChatRoomLoginTest.py测试登录界面

(2)ChatRoomTalkTest.py测试聊天界面

(3)LoginSafeTest,py测试安全性

(4)Utiles.py作为通用类给其他文件提供驱动对象和截图接口等等

(5)RunTest.py同一管理测试的开始

同时对于屏幕截图创建一个images文件夹存放截图,便于管理。

4.2Utiles.py通用工具

import datetime
import os.path
import sys
from selenium import webdriver
from selenium.webdriver.edge.service import Service as EdgeService
from webdriver_manager.microsoft import EdgeChromiumDriverManager#创建浏览器对象
class Driver:driver = ""def __init__(self):options = webdriver.EdgeOptions()self.driver = webdriver.Edge(service=EdgeService(EdgeChromiumDriverManager().install()),options=options)#增加屏幕截图def GetScreenShoot(self):#文件命名:调用的方法名称+2025-4-8-13:14'15''.png#图片路径:../images/2025-4-8/2025-4-8-13:14:15.pngdirname = datetime.datetime.now().strftime("%Y-%m-%d")  #格式化年月日#判断当前文件夹是否存在,如果不存在就创建if not os.path.exists("../images/"+dirname):os.mkdir("../images/"+dirname)#../images/2025-4-8filename = 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)ChatRoomDrive = Driver() #单例模式

4.3ChatRoomLoginTest.py登录界面

        登录成功后会有弹窗提示,涉及到弹窗一般会添加显示等待确保弹窗加载完成。并且这里涉及到输入信息,在输入之前要clear掉输入框内的信息,避免信息不断叠加达不到测试效果。

#登录页面测试
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from Common.Utils import ChatRoomDriveclass ChatRoomLogin:url = ""    #每个类都要有自己的urldriver = ""def __init__(self):self.url = "http://127.0.0.1:8080/login.html"self.driver = ChatRoomDrive.driverself.driver.get(self.url)#成功登录的测试用例def LogSucTest(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("123")# #检查密码是否隐藏,直接验证密码框的type属性是否为password# type = self.driver.find_element(By.XPATH,'//*[@id="password"]').get_attribute("type")# assert type == "password"# #print(f"type:{type}")self.driver.find_element(By.CSS_SELECTOR,"#submit").click()#time.sleep(1)#alert = self.driver.switch_to.alertwait = WebDriverWait(self.driver,1)alert = wait.until(EC.alert_is_present())text_1 = alert.text# print(f"text:{text}")assert text_1 == "登录成功!"alert.accept()#time.sleep(1)wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.user")))#找到聊天界面的首页说明登录成功self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.user")#添加屏幕截图ChatRoomDrive.GetScreenShoot()self.driver.back()#失败登陆的测试用例def LogFailTest(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("1234")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()#time.sleep(1)#alert = self.driver.switch_to.alertwait = WebDriverWait(self.driver,1)alert = wait.until(EC.alert_is_present())text_2 = alert.textassert text_2 == "登录失败!"alert.accept()#添加屏幕截图ChatRoomDrive.GetScreenShoot()#错误的账号和正常的密码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("jinweixin")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()#time.sleep(1)#alert = self.driver.switch_to.alertalert = wait.until(EC.alert_is_present())text_3 = alert.textassert text_3 == "登录失败!"alert.accept()#添加屏幕截图ChatRoomDrive.GetScreenShoot()#错误的账号和错误的密码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("jinweixin")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("1234")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()#time.sleep(1)#alert = self.driver.switch_to.alertalert = wait.until(EC.alert_is_present())text_3 = alert.textassert text_3 == "登录失败!"alert.accept()#添加屏幕截图ChatRoomDrive.GetScreenShoot()#空的账号和正确的密码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("")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()#time.sleep(1)#alert = self.driver.switch_to.alertalert = wait.until(EC.alert_is_present())text_4 = alert.textassert text_4 == "当前输入的用户名或者密码为空!"alert.accept()#添加屏幕截图ChatRoomDrive.GetScreenShoot()#输入正确的账号和空的密码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("")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()#time.sleep(1)#alert = self.driver.switch_to.alertalert = wait.until(EC.alert_is_present())text_5 = alert.textassert text_5 == "当前输入的用户名或者密码为空!"alert.accept()#添加屏幕截图ChatRoomDrive.GetScreenShoot()#输入空的账号和空的密码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("")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()#time.sleep(1)#alert = self.driver.switch_to.alertalert = wait.until(EC.alert_is_present())text_6 = alert.textassert text_6 == "当前输入的用户名或者密码为空!"alert.accept()#添加屏幕截图ChatRoomDrive.GetScreenShoot()#输入的账号是中文字符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("金维鑫")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()#time.sleep(1)#alert = self.driver.switch_to.alertalert = wait.until(EC.alert_is_present())text_7 = alert.textassert text_7 == "登录失败!"alert.accept()#添加屏幕截图ChatRoomDrive.GetScreenShoot()

4.4ChatRoomTalkTest.py聊天界面

        聊天页面有搜索框,对话框和发送消息框三个大元素,可以直接在这个测试中对这三个元素进行测试。

        还有一种情况是用户不登陆直接访问聊天页面,此时会出现弹窗提请用户登录并且返回到登录页面。但是这个功能要在正常功能测试完毕之后再测试,避免测试时发生冲突。

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from Common.Utils import ChatRoomDriveclass ChatRoomTalk:url=""driver=""def __init__(self):self.url="http://127.0.0.1:8080/client.html"self.driver=ChatRoomDrive.driverself.driver.get(self.url)#登录状态下聊天页面def LogTalkTest(self):#用户名#self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.user")text_1 = self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.user").textprint(f"text_1:{text_1}")assert  text_1 == "zhangsan"#搜索框#1.输入完整信息self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.search > input[type=text]").clear()self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.search > input[type=text]").send_keys("lisi")self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.search > button").click()self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.search > input[type=text]").clear()#2.输入部分信息self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.search > input[type=text]").send_keys("li")self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.search > button").click()self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.search > input[type=text]").clear()#3.输入含有特殊字符能否进行搜索self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.search > input[type=text]").send_keys("@##$$!!~~%%^^&**")self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.search > button").click()self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.search > input[type=text]").clear()#4.中文格式下是否正常搜索self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.search > input[type=text]").send_keys("李四")self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.search > button").click()self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.search > input[type=text]").clear()#5.不输入内容是否能正常搜索self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.search > input[type=text]").send_keys("")self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.search > button").click()self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.search > input[type=text]").clear()#会话列表self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.tab > div.tab-session")self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.tab > div.tab-session").click()#time.sleep(10)wait_1 = WebDriverWait(self.driver,10)wait_1.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="session-list"]/li[1]/h3')))self.driver.find_element(By.XPATH,'//*[@id="session-list"]/li[1]/h3').click()#time.sleep(1)wait_2 = WebDriverWait(self.driver,1)wait_2.until(EC.visibility_of_element_located((By.XPATH,'//*[@id="session-list"]/li[1]/h3')))text_2 = self.driver.find_element(By.XPATH,'//*[@id="session-list"]/li[1]/h3').text#time.sleep(1)wait_2.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="session-list"]/li[1]/h3')))text_3 = self.driver.find_element(By.XPATH,'//*[@id="session-list"]/li[1]/h3').textprint(f"text_2:{text_2}")print(f"text_3:{text_3}")assert  text_2 == text_3#好友列表,这里验证新建会话self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.left > div.tab > div.tab-friend").click()self.driver.find_element(By.CSS_SELECTOR,"#friend-list > li:nth-child(2) > h4").click()text_4 = self.driver.find_element(By.XPATH,'//*[@id="session-list"]/li[1]/h3').texttext_5 = self.driver.find_element(By.XPATH,'/html/body/div[2]/div/div[2]/div[1]').textassert  text_4 == text_5print(f"text_4:{text_4}")print(f"text_5:{text_5}")ChatRoomDrive.GetScreenShoot()#发送消息#1.发送长度不超过200的文本信息是否能正常发送self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > textarea").clear()self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > textarea").send_keys("i love you")self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > div.ctrl > button").click()#2.英文格式下,发送数字+字母self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > textarea").clear()self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > textarea").send_keys("i love you123")self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > div.ctrl > button").click()#3.英文格式下,发送数字+特殊字符self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > textarea").clear()self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > textarea").send_keys("1322134&&&^^^***")self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > div.ctrl > button").click()#4.英文格式下,发送字母+特殊字符self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > textarea").clear()self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > textarea").send_keys("i love you&&&^^^***")self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > div.ctrl > button").click()#5.中文状态下,发送中文信息self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > textarea").clear()self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > textarea").send_keys("我爱你")self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > div.ctrl > button").click()#6.中文状态下发送中文+特殊字符self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > textarea").clear()self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > textarea").send_keys("我爱你,,,&&&^^^***!!!!")self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > div.ctrl > button").click()#7.发送网址链接self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > textarea").clear()self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > textarea").send_keys("https://www.doubao.com/chat/2705630781366018")self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > div.ctrl > button").click()#8.发送信息中包含换行self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > textarea").clear()self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > textarea").send_keys("i love you.\nAnd i miss you.")self.driver.find_element(By.CSS_SELECTOR,"body > div.client-container > div > div.right > div.ctrl > button").click()ChatRoomDrive.GetScreenShoot()#未登录状态下聊天页面,出现警告弹窗#确认之后跳转到登录页面def NoLogTalkTest(self):alert = self.driver.switch_to.alerttext_7 = alert.textassert text_7 == "当前用户未登录!"alert.accept()ChatRoomDrive.GetScreenShoot()

4.5LoginSafeTest,py安全性

        安全性测试主要测试了用户输入密码是否隐藏,是否防止SQL注入和多次密码错误是否锁定这三个安全问题。

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from Common.Utils import ChatRoomDriveclass LoginSafe:url = ""driver = ""def __init__(self):self.url = "http://127.0.0.1:8080/login.html"self.driver = ChatRoomDrive.driverself.driver.get(self.url)def SafeTest(self):#SQL注入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("'OR' 1'='1")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")#顺带可以检查密码是否隐藏type = self.driver.find_element(By.XPATH,'//*[@id="password"]').get_attribute("type")assert type == "password"#print(f"type:{type}")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()#time.sleep(1)wait = WebDriverWait(self.driver,1)#alert = self.driver.switch_to.alertalert = wait.until(EC.alert_is_present())text_8 = alert.textassert text_8 == "登录失败!"alert.accept()#添加屏幕截图ChatRoomDrive.GetScreenShoot()#多次输入错误for _ in range(5):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("1234")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()#time.sleep(1)alert = wait.until(EC.alert_is_present())#alert = self.driver.switch_to.alerttext_3 = alert.textassert text_3 == "登录失败!"alert.accept()ChatRoomDrive.GetScreenShoot()

自动化脚本测试结果展示

ChatRoom自动化测试


5.界面测试、易用性测试

        关于这两个测试按照测试用例使用手动测试的方式。

6.测试总结

        (1)功能测试覆盖全面,测试用例涉及合理,发现3个Bug。

        (2)进行了基础的安全测试,SQL注入、隐藏密码等测试,发现1个Bug。

        (3)进行了权限测试,用户无法跳过登录界面直接访问聊天页,测试通过。

        (4)进行了界面测试和易用性测试,发现2个Bug。

7.Bug描述

       

Bug描述
Bug标题Bug等级报告人是否修复
搜索框无法搜索严重金**
在输入信息时回车换行后,发送的信息显示是空格间隔的。严重金**
进入聊天页面后,需要较长的时间才能加载出会话列表一般金**
连续多次输入账号和密码错误之后不会锁定一般金**
登录界面的密码显示和隐藏的按钮设计不合理,用户在输入密码时无法自由切换,只要鼠标切换点击这个按钮就会消失。
 
轻微金**
密码框没有大小写提示轻微金**

8.测试建议

        在优化时可以考虑以下几点建议:

        (1)发送消息后可以添加显示发送的时间

        (2)目前只能发送文本信息,可以添加发送文件,音乐,视频等文件的功能。

        (3)目前没有注册的功能,可以添加注册功能

        (4)可以在用户名前加上头像

9.测试工具

        (1)功能测试、安全测试:使用Selenium+WebDriver自动化测试核心功能。

        (2)API测试:使用Postman+Jmeter对接口进行性能测试

        (3)测试用例设计:使用Xmind进行测试用例的设计

        (5)脚本开发:使用PyCharm编写自动化脚本

http://www.dtcms.com/wzjs/75328.html

相关文章:

  • 怎么下载网站动态图片青岛seo杭州厂商
  • 网站建设方案 备案100%能上热门的文案
  • 北京ui设计培训win优化大师
  • 怎么做网站平台教程免费智能seo收录工具
  • 网站目录 整理1688网站
  • 如何设置企业网站查关键词排名工具app
  • 塘厦网站建设公司志鸿优化网
  • 做旅游网站的任务百度指数如何提升
  • 网站建设过程中服务器的搭建方式网站推广软件费用是多少
  • 常见的网络推广平台长沙seo外包服务
  • 用手机做诱导网站admin5站长网
  • 郑州做公司网站的公司知乎关键词排名优化
  • 盐山做网站的网络营销的成功案例有哪些
  • 网站建设和管理颁奖抖音seo点击软件排名
  • 买卖域名哪个网站好seo优化多少钱
  • 宠物寄养网站毕业设计国际新闻最新
  • 网站做图分辨率是多少合适百度关键词排名价格
  • 汕头模板建站软件西地那非片能延时多久
  • 买虚机送网站建设一站式网络推广服务
  • php网站后台地址百度最怕哪个投诉电话
  • 在长沙做网站百度应用搜索
  • 网站名超链接怎么做搜狐视频
  • 创建网站免费注册杭州百度推广代理商
  • 做生鲜的网站近两年成功的网络营销案例及分析
  • 东莞网站制作百年苏州百度关键词优化
  • 溧阳市建设局网站企拓客软件多少钱
  • seo顾问服务 乐云践新专家上海网络seo优化公司
  • 做简单鬼畜视频的网站软文怎么做
  • 网站建设功能设计全网整合营销推广
  • 深圳定制网站制作seo最新快速排名