网站设计与建设公司,一个网站的二维码怎么做,建立一个官网多少钱,手机网站的制作一、项目背景 大众博客系统采用前后端分离的方法来实现#xff0c;同时使用了数据库来存储相关的数据#xff0c;同时将其部署到云服务器上。前端主要有四个页面构成#xff1a;登录页、列表页、详情页以及编辑页#xff0c;以上模拟实现了最简单的大众博客系统。其结合后端… 一、项目背景 大众博客系统采用前后端分离的方法来实现同时使用了数据库来存储相关的数据同时将其部署到云服务器上。前端主要有四个页面构成登录页、列表页、详情页以及编辑页以上模拟实现了最简单的大众博客系统。其结合后端实现了以下的主要功能登录、编辑博客、注销、删除博客、以及强制登录等功能。 但是该项目没有设计用户注册功能只能提前在数据库中存储用户信息后经过校验登录并且用户头像不能自己设定在进行前端页面的书写过程中已经将头像的图片写为静态了而用户信息中的文章数以及分类数也没有在后端中具体实现直接在前端页面中写为了静态的。 该个人博客系统可以实现个人用户简单的博客记录时间、标题、内容以及发布者等都可以进行详细地查看。 二、项目功能
一功能介绍 该大众博客系统主要实现了以下几个功能登录写博客以及用户管理等功能。
登录功能用户名以及密码已经在后端写入了数据库没有实现账户注册功能即用户名以及密码是已经存在的。登录成功后就会跳转到列表页面。在右上角存在主页和写博客两个按钮但是在未登录情况下按下均只会跳转到登录页面。 列表页面可以在列表页查看有限数量的博客简介其包括博客标题、发布时间以及内容概要。在左侧可以看到登录的用户以及文章数、分类数等的模块。在右上角有主页、写博客和注销三个功能主页即列表页写博客即博客编辑页注销即注销用户回到登录页面。 详情页面在列表页面点击“查看全文”按钮就会跳转到详情页此时就可以看到该篇博客的完整内容。在右上角同样有主页、写博客、删除和注销四个功能删除即删除该篇博客删除之后就会跳转到列表页面该篇博客就被成功删除。 写博客在登录之后的任意界面点击“写博客”之后就会进入博客编辑页面此时就可以进行博客的编写点击“发布文章”后就可以成功发布文章此时就会跳转到列表页。
二相关源码 Order(3)Testvoid EditBlog() throws InterruptedException {EdgeOptions options new EdgeOptions();options.addArguments(--remote-allow-origins*);EdgeDriver driver new EdgeDriver(options);driver.get(http://62.234.43.231:7551/blog_add.html);driver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);driver.findElement(By.xpath( body div.nav a:nth-child(5))).click();//输入框输入标题((JavascriptExecutor)driver).executeScript(document.getElementById(\title\).value\自动化测试\);sleep(3000);driver.findElement(By.cssSelector(body div.blog-edit-container div.title button)).click();sleep(3000);//获取urlString cur_url driver.getCurrentUrl();Assertions.assertEquals(http://62.234.43.231:7551/blog_list.html,cur_url);三、测试计划操作 一功能测试 1测试用例 实际执行测试的部分操作步骤/截图 1正常登录 2写博客测试 3发布成功并查看详情页 4博客用户管理进行查询 5博客用户管理进行添加 6博客用户管理进行删除 6博客用户管理进行修改 二 自动化测试 代码编写 根据脑图进行测试用例的编写每个页面一个测试类然后再各个测试类中进行测试用例的编写。 注意公共属性需要单独放一个类方便进行代码复用。 使用测试套件便于运行以及修改。 创建启动以及现场截图就是会频繁进行复用所以单独创建一个类进行存储。 注意添加隐式等待为了确保页面正确加载显示。 1. 添加相关依赖pom.xml
dependencies
!-- 添加selenium依赖--dependencygroupIdorg.seleniumhq.selenium/groupIdartifactIdselenium-java/artifactIdversion4.0.0/version/dependency!-- 保存屏幕截图需要用到的包--dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion2.6/version/dependency!-- 添加junit5依赖--dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter/artifactIdversion5.8.2/versionscopetest/scope/dependencydependencygroupIdorg.junit.platform/groupIdartifactIdjunit-platform-suite/artifactIdversion1.8.2/versionscopetest/scope/dependency/dependencies29 2. 新建包并在包下创建测试类以及公共类 以下是所建立的是common公共包和Tests测试包 1公共类AutoTestUtils 创建驱动、保存现场截图 注意在保存现场截图的时候命名是按时间来进行文件夹的划分然后图片的名称要体现出测试类的类名方便进行问题的追溯。 注意文件名的动态获取注意时间格式的设置。 注意可以在创建驱动的时候修改默认的有头模式or无头模式 2登录页面测试BlogLoginTest ① 创建驱动并打开页面 ② 测试页面是否正常打开 ③ 测试正常登录多参数测试 ④ 测试异常登录用户名/密码错误的情况此处不测null ⑤ 注意测试的顺序使用Order注解指定否则可能会因为执行顺序不对导致测试失败 ⑥ 注意清空内容后才能再次输入用户名以及密码
3列表页测试BlogListTest ① 测试博客列表页是否可以正常打开 ② 测试列表页的“查看全文”按钮是否可以正常跳转 ③ 测试未登录的直接链接是否会跳转到登录页面顺便测试了“注销”按钮 ④ 同样注意执行顺序
4编辑页测试BlogEditTest ① 测试编辑页是否可以正确打开 ② 测试博客是否可以正常发布元素齐全 or 部分元素 ③ 测试“写博客”按钮是否可以正常使用 ④ 执行顺序
5详情页测试BlogDetailTest ① 测试详情页的正确打开有blogId和没有blogId两种情况 ② 测试“删除”按钮是否可用注意比较的是时间因为标题可能会存在为空的情况 ③ 执行顺序 ④ 一定要注意导航回到列表页的操作
6驱动释放DriverQuiteTest 因为驱动的测试是要在最后一个测试类完成之后进行释放的如果是使用AfterAll注解那么每次修改测试类的时候都会需要挪动驱动释放的位置所以直接新建一个类作为驱动释放此时只需要在测试套件中放到最后就行。
7测试套件runSuite 测试套件的运行使用的是以测试类作为执行顺序的方式
三 性能测试
使用loadrunner进行简单性能测试针对登录、编写并发布博客以及删除博客、注销等功能进行简单的性能测试。 然后在实现的过程中插入集合点以及事务等并通过设置来实现用户的并发操作。
录制脚本 登录测试
通过开发者工具查看请求发送的格式以此来进行性能测试脚本的编写。发现用户名以及密码是使用form表单的形式来进行发送的。因为用户名以及密码可以有多个所以可以进行参数化。
添加事务以及集合点、检查点注意检查点一般放在请求之前。
设置迭代次数为了能够更好地遍历到所有的参数一定要进行保存。
参数化 检查点一定注意函数只放在要检查的URL前面不要随便再往前面放置。即只放在需求之前相关源码
Action()
{web_custom_request(crx_game_2.html, URLhttp://browser.360.cn/se/config/crx_game_2.html, MethodGET, Resource0, RecContentTypetext/html, Referer, Snapshott4.inf, ModeHTML, EXTRARES, Urlhttp://62.234.43.231:7551/css/conmmon.css, Refererhttp://62.234.43.231:7551/login.html, ENDITEM, Urlhttp://62.234.43.231:7551/css/login.css, Refererhttp://62.234.43.231:7551/login.html, ENDITEM, Urlhttp://62.234.43.231:7551/js/jquery.min.js, Refererhttp://62.234.43.231:7551/login.html, ENDITEM, Urlhttp://62.234.43.231:7551/img/logo2.jpg, Refererhttp://62.234.43.231:7551/login.html, ENDITEM, Urlhttp://62.234.43.231:7551/img/cat.jpg, Refererhttp://62.234.43.231:7551/css/conmmon.css, ENDITEM, Urlhttp://62.234.43.231:7551/login.html, Refererhttp://62.234.43.231:7551/login.html, ENDITEM, Urlhttp://cseupdate.360safe.com/safe/safe.cab, Referer, ENDITEM, Urlhttp://cseupdate.360safe.com/formal/360chrome.cab?ver13.5.2044.0mid4f3c60c60fbd8d385ef600e811f8f6f5guid4f3c60c60fbd8d385ef600e811f8f6f5pid360CEdb1sbox0ceip1usei0usei90usew0skinsafe0setcto4, Referer, ENDITEM, LAST);//集合点lr_rendezvous(Rendezvous);//事务lr_start_transaction(login_transaction);lr_think_time(9);web_submit_data(info, Actionhttp://cloud.browser.360.cn/site/info, MethodPOST, EncTypemultipart/form-data, RecContentTypetext/plain, Referer, Snapshott5.inf, ModeHTML, ITEMDATA, Namern, Value814537, ENDITEM, Namesitedata, Value631302071d050b051a0100190a02050f0b020b081b176e, ENDITEM, LAST);//检查点
web_reg_find(Textadmin,LAST);web_submit_data(login, Actionhttp://62.234.43.231:7551/user/login, MethodPOST, RecContentTypeapplication/json, Refererhttp://62.234.43.231:7551/login.html, Snapshott6.inf, ModeHTML, ITEMDATA, Nameusername, Value{username}, ENDITEM, Namepassword, Value{password}, ENDITEM, LAST);web_submit_data(info_2, Actionhttp://cloud.browser.360.cn/site/info, MethodPOST, EncTypemultipart/form-data, RecContentTypetext/plain, Referer, Snapshott7.inf, ModeHTML, ITEMDATA, Namern, Value680672, ENDITEM, Namesitedata, Value6d1a0104001c061600180608070808061865535a645942404517126b, ENDITEM, LAST);web_url(myblog_list.html, URLhttp://62.234.43.231:7551/myblog_list.html, Resource0, RecContentTypetext/html, Refererhttp://62.234.43.231:7551/login.html, Snapshott8.inf, ModeHTML, LAST);web_submit_data(info_3, Actionhttp://cloud.browser.360.cn/site/info, MethodPOST, EncTypemultipart/form-data, RecContentTypetext/plain, Referer, Snapshott9.inf, ModeHTML, ITEMDATA, Namern, Value501298, ENDITEM, Namesitedata, Value6e12000b0b160406091c0c0e1b010b030900051f46575b4c5a4543411b65, ENDITEM, LAST);web_submit_data(info_4, Actionhttp://cloud.browser.360.cn/site/info, MethodPOST, EncTypemultipart/form-data, RecContentTypetext/plain, Referer, Snapshott10.inf, ModeHTML, ITEMDATA, Namern, Value859621, ENDITEM, Namesitedata, Value6317080f001f090301180707160403070209081a5a515b1c5a5c571945545456565b571f48591b6b, ENDITEM, LAST);web_custom_request(mylist, URLhttp://62.234.43.231:7551/art/mylist, MethodPOST, Resource0, RecContentTypeapplication/json, Refererhttp://62.234.43.231:7551/myblog_list.html, Snapshott11.inf, ModeHTML, EncType, LAST);web_custom_request(showinfo, URLhttp://62.234.43.231:7551/user/showinfo, MethodPOST, Resource0, RecContentTypeapplication/json, Refererhttp://62.234.43.231:7551/myblog_list.html, Snapshott12.inf, ModeHTML, EncType, LAST);lr_end_transaction(login_transaction,LR_AUTO);return 0;
}
脚本测试通过 同时测试2个用户并显示日志 设置并发数量进行性能测试并导出测试报告以及图表 1设置2个虚拟用户防止电脑崩溃 2在Controller中设置场景 3开始进行运行性能测试开始运行中结束截图 4在Analysis中查看性能报告以及报表 ① 报告 ② 点击率和吞吐量分析图 ③ 事务响应量 5分析系统资源 ① 剩余的物理内存近80%即使用了近40%的内存对于简单的登录功能来说还是较高的内存使用还有内存优化的空间。 ② 当点击率较大时CPU使用也是达到了一个较高的点CPU利用率较高。 ③ 总之该性能还有优化的空间。