文档搜索工具项目-测试报告

目录

1.项目背景

2.测试环境

3.测试计划

3.1功能测试

3.2自动化测试 


1.项目背景

   主要采用了前后端分离的方式来实现,把整个项目分成前端模块,索引模块,搜索模块,同时将其布置到云服务器中。该搜索引擎只是基于java API的站内搜索,根据用户输入的关键词按权重检索出对应的结果。

2.测试环境

软件:Google Chrome
开发工具:IDEA
测试工具:自动化测试工具Selenium
操作系统:Windows 11家庭版
浏览器版本:Google Chrome 133.0.6943.98(正式版本) (64 位)

3.测试计划

测试用例:

3.1功能测试

执行过程部分截图:

3.2自动化测试 

import io.github.bonigarcia.wdm.WebDriverManager;
import org.junit.Test;
import org.junit.jupiter.api.Order;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import static java.lang.Thread.sleep;



public class docSearcher{
    WebDriver webDriver=null;
    //封装一个方法用来创建驱动对象
    void createDriver(){
        //打开浏览器 使用驱动打开
        WebDriverManager.chromedriver().setup();
        //增加浏览器配置:创建驱动对象要强制指定允许访问所有链接
        ChromeOptions options=new ChromeOptions();
        //允许访问所有链接
        options.addArguments("--remote-allow-origins=*");
        //打开浏览器
        webDriver=new ChromeDriver(options);
    }

    @Order(1)
    @Test
    public void search() throws InterruptedException {
        createDriver();
        //2.输⼊网址
        webDriver.get("http://81.70.35.150:8080/index.html");
        sleep(3000);
        //3.找到输入框并输入 array
        webDriver.findElement(By.cssSelector("body > div > div.header > input[type=text]")).sendKeys("array");
        sleep(3000);
        //4、找到按钮并点击
        webDriver.findElement(By.cssSelector("#search-btn")).click();
        sleep(3000);
        String s=webDriver.findElement(By.cssSelector("body > div > div.result > div.count")).getText();
        StringBuilder ret=new StringBuilder();
        for (char c:s.toCharArray()){
            if(Character.isDigit(c)){
                ret.append(c);
            }
        }
        if(ret.equals("0")){
            System.out.println("测试失败");
        }else {
            System.out.println("测试通过");
        }
        //5、关闭浏览器
        webDriver.close();
    }
    @Order(2)
    @Test
    public void search2() throws InterruptedException {
        createDriver();
        webDriver.get("http://81.70.35.150:8080/index.html");
        sleep(3000);
        webDriver.findElement(By.cssSelector("body > div > div.header > input[type=text]")).clear();
        webDriver.findElement(By.cssSelector("body > div > div.header > input[type=text]")).sendKeys(" ");
        sleep(3000);
        webDriver.findElement(By.cssSelector("#search-btn")).click();
        sleep(3000);
        String s=webDriver.findElement(By.cssSelector("body > div > div.result > div.count")).getText();
        StringBuilder ret=new StringBuilder();
        for (char c:s.toCharArray()){
            if(Character.isDigit(c)){
                ret.append(c);
            }
        }
        System.out.println(ret);
        String SS=ret.toString();
        if(SS.equals("0")){
            System.out.println("测试通过");
        }
    }
}

亮点:
使用Selenium与Junit结合来测试:
使用了JUnit5中提供的注解:避免生成过多的对象,造成资源和时间的浪费,提高了自动化的执行效率。
只创建一次驱动对象,避免每个用例重复创建驱动对象造成时间和资源的浪费。
使用参数化:保持用例的简洁,提高代码的可读性
使用测试套件:降低了测试人员的工作量,通过套件一次执行所有要运行的测试用例。
使用了等待:提高了自动化的运行效率,提高了自动化的稳定性,减小误报的可能性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/970901.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Field ‘id‘ doesn‘t have a default value

1.程序测试时,运行到向数据库插入数据时,报以下异常 是id没有默认值; 在测试单元内单独向该数据库插入数据,报同样的异常,确定了异常的定位 2.项目时采用mybatisPlus操作数据库,报异常的数据库和另外一个数据库关联,主键ID和另外一个数据库相同,通过读取另外一个数据库的ID获…

hive:分桶表和分区表的区别, 分桶表,抽样查询

分桶表和分区表的区别 分桶表 建表语法 clustered by 聚类依据 示例 创建分桶表 加载数据到分桶表(错误) load data local inpath /home/sjh/ft.txt into table sjh.ft; 报错: 提示设置 >>set hive.strict.checks.bucketingfalse 作用是关闭 Hive 中的一个严格检查…

【NLP251】命名实体实战(基于Transformer分类)

1. 查看数据集 json解析工具:JSON 在线解析 | 菜鸟工具 快速了解json文件内容分布 2.构建项目框架 project_root/ │ ├── src/ │ ├── medical_ner/ │ │ ├── datas/ │ │ │ ├── __init__.py │ │ │ ├── bmeso_ner_label…

欧洲分组加密算法之Kasumi

目录 (1)FL函数 (2)FO函数 (3)FI函数 密钥扩展算法 欧洲分组加密算法之Kasumi Kasumi分组密码算法是由欧洲标准机构ETSI(European Telecommunications Standards Institute)下属的安全算法组于1999年设计的,被用于构造A5/3、GEA3、f8和f9算法,参与移动通信系统无线…

SpringBoot速成(12)文章分类P15-P19

1.新增文章分类 1.Postman登录不上,可以从头registe->login一个新的成员:注意,跳转多个url时,post/get/patch记得修改成controller类中对应方法上写的 2.postman运行成功: 但表中不更新:细节有问题: c是…

登录弹窗效果

1,要求 点击登录按钮,弹出登录窗口 提示1:登录窗口 display:none 隐藏状态; 提示2:登录按钮点击后,触发事件,修改 display:block 显示状态 提示3:登录窗口中点击关闭按钮&#xff0…

1-16 tortoiseGit分支与Git操作

1-1 创建分支 什么时候需要开分支? - 隔离线上版本和开发版本 - 大功能开发,不想影响到其他人,自己独立开个分支去开发 SVN经典目录结构: - trunk-------------------------开发中的文件 - bran…

【工业安全】-CVE-2022-35561- Tenda W6路由器 栈溢出漏洞

文章目录 1.漏洞描述 2.环境搭建 3.漏洞复现 4.漏洞分析 4.1:代码分析 4.2:流量分析 5.poc代码: 1.漏洞描述 漏洞编号:CVE-2022-35561 漏洞名称:Tenda W6 栈溢出漏洞 威胁等级:高危 漏洞详情&#xff1…

HDFS体系结构

HDFS 支持主从结 构 , 主节 点 称为 NameNode ,从节点称为 DataNode HDFS中还包含一个 SecondaryNameNode 进程,只要辅助主节点 公司BOSS:NameNode (NN) 秘书:SecondaryNameNode (2NN) 员工&a…

物联网智能语音控制灯光系统设计与实现

背景 随着物联网技术的蓬勃发展,智能家居逐渐成为现代生活的一部分。在众多智能家居应用中,智能灯光控制系统尤为重要。通过语音控制和自动调节灯光,用户可以更便捷地操作家中的照明设备,提高生活的舒适度与便利性。本文将介绍一…

大模型开发实战篇5:多模态--文生图模型API

大模型文生图是一种基于人工智能大模型的技术,能够将自然语言文本描述转化为对应的图像。目前非常火的AI大模型赛道,有很多公司在此赛道竞争。详情可看这篇文章。 今天我们来看下如何调用WebAPI来实现文生图功能。我们一般都会将OpenAI的接口&#xff0…

(arxiv2411) CARE Transformer

作者提出了两个问题,问题 1:堆叠是充分利用局部归纳偏差和长距离信息优势的最佳方法吗? 问题 2:是否有可能同时提高线性视觉 Transformer 的效率和准确性? 为了解决这两个问题,作者提出了一种 deCoupled du…

时间序列分析(四)——差分运算、延迟算子、AR(p)模型

此前篇章: 时间序列分析(一)——基础概念篇 时间序列分析(二)——平稳性检验 时间序列分析(三)——白噪声检验 一、差分运算 差分运算的定义:差分运算是一种将非平稳时间序列转换…

仿叮咚买菜鸿蒙原生APP

# DingdongShopping 这是一个原生鸿蒙版的仿叮咚买菜APP项目 鸿蒙Next发布至今已经有一年多的时间了,但有时候我们想要实现一些复杂的功能或者效果,在开发文档上查阅一些资料还是比较费时的,有可能还找不到我们想要的内容。而社会层面上分享…

【大模型】DeepSeek 高级提示词技巧使用详解

目录 一、前言 二、DeepSeek 通用提示词技巧 2.1 DeepSeek 通用提示词技巧总结 三、DeepSeek 进阶使用技巧 3.1 DeepSeek一个特定角色的人设 3.1.1 为DeepSeek设置角色操作案例一 3.1.2 为DeepSeek设置角色操作案例二 3.2 DeepSeek开放人设升级 3.2.1 特殊的人设&#…

图论算法篇:邻接矩阵以及邻接表和链式前向星建图

那么我们从这一篇文章开始就正式进入了图相关算法的学习,那么对于认识图的各种算法之前,那么我们首先得学会建图,但是要在建图之前,我们又得对图这种非常基本非常常见的数据结构有着一定的认识,所以我们就先来简单回顾…

内容中台如何搭建?

内容概要 企业搭建内容中台的核心目标在于通过技术驱动的内容资产整合与流程优化,实现跨业务场景的内容高效复用与敏捷响应。这一过程始于对业务需求的深度拆解,包括明确内容生产、分发、管理的核心痛点,例如多部门协作效率低下、内容版本混…

Navicate数据库连接工具的下载与安装,附带使用(连接MySQL,建表、增删改查)

1.Navicate安装包下载 Navicat 中国 | 支持 MySQL、Redis、MariaDB、MongoDB、SQL Server、SQLite、Oracle 和 PostgreSQL 的数据库管理 2.安装 3.连接数据库 4.建表和四个基本的增删改查语句 CREATE DATABASE ckk_school20250216;USE ckk_school20250216;CREATE TABLE stude…

探秘 Map 和 Set 底层:二叉搜索树与哈希表的深度解析,解锁高效数据存储秘密!

目录 二叉搜索树(红黑树) 概念: 示例: Java代码实现: 性能分析: 哈希表 概念: 哈希冲突: 哈希冲突的避免: 避免方式1 -- 哈希函数设计 避免方式2 -- 负载因子…

python从入门到进去

python从入门到进去 第一章、软件和工具的安装一、安装 python 解释器二、安装 pycharm 第二章、初识 python一、注释可分三种二、打印输入语句三、变量1、基本数据类型1.1、整数数据类型 int1.2、浮点数数据类型 float1.3、布尔数据类型 boolean1.4、字符串数据类型 string 2、…