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

做网站安全维护是什么东东天津做网站的公司

做网站安全维护是什么东东,天津做网站的公司,手机网站建设公司联系电话,wordpress热门主题项目背景 个人博客系统采用了 SSM 框架与 Redis 缓存技术的组合 ,为用户提供了一个功能丰富、性能优越的博客平台。 在技术架构上 ,SSM 框架确保了系统的稳定性和可扩展性。Spring 负责管理项目的各种组件 ,Spring MVC 实现了清晰的请求处理…

项目背景

个人博客系统采用了 SSM 框架与 Redis 缓存技术的组合 ,为用户提供了一个功能丰富、性能优越的博客平台。
在技术架构上 ,SSM 框架确保了系统的稳定性和可扩展性。Spring 负责管理项目的各种组件 ,Spring MVC 实现了清晰的请求处理 和视图渲染 , MyBatis 则高效地处理数据库操作。功能方面 ,用户可以轻松撰写、编辑和发布博客文章。
前端主要有 登录/注册、个人中心、操作博客的相关界面构成。

后端主要有 登录/注册、用户信息操作、博客等相关操作。


项目功能

  • 注册功能:新用户需要填写用户名和密码,验证通过后需要把用户名和加密的密码存入数据库。
  • 个人中心:注册/登录之后跳转到该页面,这个页面可以添加邮箱/Gitee/修改头像。同时还可以跳转到个人博客列表,或者博客广场。
    • 添加邮箱:填入绑定的邮箱号之后,会收到一条验证码。当验证码通过后,就会绑定邮箱。同时把绑定的邮箱信息存入数据库。
    • 修改邮箱:同添加邮箱。
    • 添加Gitee:选择自己的Gitee链接,提交完成后会存入数据库。点击Gitee会跳转到个人首页。
    • 修改Gitee:同添加Gitee。
    • 我的博客:点击会跳到个人博客列表页。
    • 博客广场:点击会跳到博客广场。
  • 我的博客:只会显示自己写的博客。博客按照发布时间升序排列。只显示每篇博客的标题,发布时间,文章的前一部分的内容。可以通过查看全文查看整篇文章。可以通过修改来修改文章的内容。通过删除来删除选中的文章。
  • 博客广场:与我的博客列表相似,只不过这里是全部人的博客。另外只有查看全文的显示。
  • 写博客:当登录之后,就可以点击写博客进行博客的书写和发布。
  • 注销:当登陆后可以点击注销进行退出。

测试

功能测试

用户

注册

登录

注销

头像

邮箱

Gitee

博客

个人广场

博客广场

查看博客

增加博客

修改博客

删除博客

自动化测试

引入依赖

         <dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>4.0.0</version></dependency><!--        保存屏幕截图需要用到的包--><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency><!--        添加junit5依赖--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.8.2</version><scope>test</scope></dependency><dependency><groupId>org.junit.platform</groupId><artifactId>junit-platform-suite</artifactId><version>1.8.2</version><scope>test</scope></dependency>

创建公共类

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;public class AutoTestUtils {// 为了降低代码冗余度,直接在这里实现代码的复用public static ChromeDriver driver;// 创建驱动对象public static ChromeDriver createDriver() {// 无头模式ChromeOptions options = new ChromeOptions();options.addArguments("-headless");// 判断驱动对象是否已经创建if(driver == null) {// 无头模式driver = new ChromeDriver(options);// 默认的有头模式
//            driver = new ChromeDriver();// 创建隐式等待,确保页面渲染出来driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(6));}return driver;}/** 保存现场<截图>* 把所有用例的执行结果进行保存* 注意:保存的屏幕截图的名字应该是动态生成的,否则会进行图片的覆盖*/// 获取动态文件名public List<String> getTime() {SimpleDateFormat sim1 = new SimpleDateFormat("yyyyMMdd-HHmmssSS");String fileName = sim1.format(System.currentTimeMillis());// 希望文件按天的维度进行文件夹的分类保存SimpleDateFormat sim2 = new SimpleDateFormat("yyyyMMdd");String dirName = sim2.format(System.currentTimeMillis()); // 文件夹的名字// 使用链表进行保存List<String> list = new ArrayList<>();list.add(dirName);list.add(fileName);return list;}// 为了区分是哪个用例返回的,可以加上用例的名称进行保存public void getScreenShot(String str) throws IOException {List<String> list = getTime();// 文件保存路径:dirName+fileName// ./指的是当前路径,这里来说就是BlogAutoTest目录下// 如果目前期望的路径:./src/test/java/com/blogWebAutoTest/dirName/fileName// 注意图片保存的路径以及名称!String fileName = "./src/test/java/com/blogWebAutoTest/"+ list.get(0) + "/" + str + "_" + list.get(1) + ".png"; // 保存的路径+名称File scrFile = driver.getScreenshotAs(OutputType.FILE); // 获取到的屏幕截图// 把屏幕截图生成的文件放到指定路径下FileUtils.copyFile(scrFile,new File(fileName));}
}

具体测试

测试详情页

import com.blogWebAutoTest.common.AutoTestUtils;
import org.junit.jupiter.api.*;
import org.openqa.selenium.By;
import org.openqa.selenium.chrome.ChromeDriver;import java.io.IOException;
import java.time.Duration;// 博客详情页测试
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class BlogDetailTest extends AutoTestUtils {public static ChromeDriver driver = createDriver();@BeforeAllstatic void baseControl() {driver.get("http://127.0.0.1:8370/myblog_list.html");}/** 详情页打开正确,但是因为没有blogId会出现Undefined*/@Test@Order(1)void undefindedTest() throws IOException {driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));String expect = "";String fact = driver.findElement(By.xpath("/html/body/div[2]/div[2]/div/div[1]")).getText();getScreenShot(getClass().getName());Assertions.assertEquals(expect,fact);}/** 测试详情页正确打开[有blogId]* 测试标题以及时间(必定有)* 这里其实还有一种情况:不存在blogId*/@Test@Order(2)void blogDetailPageRight() throws IOException {driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));driver.get("http://127.0.0.1:8370/blog_content.html?id=9");driver.findElement(By.cssSelector("body > div.container > div.container-right > div > h3"));driver.findElement(By.cssSelector("body > div.container > div.container-right > div > div.date"));driver.findElement(By.xpath("//*[@id=\"content\"]/p"));getScreenShot(getClass().getName());driver.findElement(By.xpath("/html/body/div[1]/a[1]")).click(); // 回到列表页}/** 测试“删除”按钮* 删除后会跳回到列表页,然后与最上面的时间进行比对即可【不比较标题,因为标题可能为空】* 这里是要删除第一篇博客*/@Test@Order(3)void deleteTest() throws IOException {driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));getScreenShot(getClass().getName());driver.findElement(By.cssSelector("body > div.container > div.container-right > div:nth-child(1) > a")).click();String before = driver.findElement(By.xpath("/html/body/div[2]/div[2]/div/div[1]")).getText();driver.findElement(By.cssSelector("#delete_button")).click();String after = driver.findElement(By.cssSelector("body > div.container > div.container-right > div:nth-child(1) > div.date")).getText();getScreenShot(getClass().getName());Assertions.assertNotEquals(before,after);  // 比对不同}// 注意更改驱动释放位置(在最后一个类/测试用例之后)@AfterAllstatic void driverQuite() {driver.quit();}
}

其他界面也是类似。

最后一起跑一下。

import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.SelectPackages;
import org.junit.platform.suite.api.Suite;// 测试套件运行
@Suite
@SelectClasses({BlogLoginTest.class, BlogListTest.class,BlogEditTest.class,BlogDetailTest.class,DriverQuiteTest.class})
public class runSuite {
}
http://www.hrbkazy.com/news/13534.html

相关文章:

  • winforms做网站免费推广渠道有哪些
  • 开源程序做网站任务关键词挖掘工具有哪些
  • 哪个网站免费做简历手机网站怎么优化关键词
  • 网站图表怎么做的百度本地惠生活推广
  • wordpress淘宝插件下载地址阿亮seo技术
  • 教育网站制作网站360搜图片识图
  • 免费网站代码电商网站排名
  • 广州中心网站建设实体店怎么推广引流
  • 动漫制作专业好不好排名轻松seo 网站推广
  • 我做网站推广b站推广app大全
  • 做网站程序员都要先做维护么百度认证营销顾问
  • 杭州网站开发 网站建设百度官网网站
  • 360老是提示危险网站电子商务网站建设的步骤
  • 上海虹口网站制作镇江关键字优化品牌
  • 网站以下内容未做缓存2023年7 8月十大新闻
  • 网站备案怎么做超链接教育培训网站
  • 东莞网页制作设计一键优化下载
  • 哪个网站可以悬赏做图seo优化裤子关键词
  • 一个企业做网站的目的开网店3个月来亏了10万
  • 网站备案 太烦百度seo关键词排名优化工具
  • 口碑好的网站定制公司营销策划方案怎么做
  • 广东哪有做网赌网站知道百度
  • 惠阳做网站知乎关键词搜索排名
  • 手机网站首页怎么做郑州网站seo推广
  • 500个短视频素材免费网站seo推广排名
  • 企业网站建设学习sem代运营推广公司
  • 如何建网站开网店百度首页百度一下
  • 免费网站容量大成都自动seo
  • 企业网站轮播图怎么做sem和seo的区别
  • 设计师服务平台网站网络推广和网络销售的区别