软件测试----【项目】中小型金融贷款管理平台测试报告


前言

随着金融科技的迅猛发展,金融贷款管理平台已成为金融机构不可或缺的重要工具。本报告针对某中小型金融贷款管理平台进行了软件测试,旨在评估该平台在功能、性能、安全性等方面的表现,确保其能够满足业务需求并稳定运行。本次测试基于严谨的测试方法和流程,通过详细的测试用例和数据分析,对平台进行评估和验证。


一、项目背景

  1. 当今经济快速发展的时代,金融行业作为经济发展的重要支柱,对于促进资金融通、优化资源配置、推动产业升级等方面发挥着至关重要的作用。然而,随着金融市场的不断扩大和深化,金融服务的对象也日益多样化,尤其是中小型企业和个人对于金融贷款的需求日益增长。传统的金融贷款方式存在诸多不足,如审批流程繁琐、效率低下、信息不对称等,这些问题极大地限制了中小型企业获取资金的渠道和速度。
  2. 为了解决这一难题,本项目致力于研发一个高效、便捷、安全、合法的中小型企业金融贷款管理平台。该平台旨在通过引入先进的信息化技术手段,管理产品信息、银行信息、用户信息,降低管理成本,提高服务效率,同时保障数据安全和隐私保护,为中小型企业提供更加优质的金融服务。

二、项目介绍

该项目是一个基于Spring Cloud和Vue.js的中小型金融贷款管理平台,采用微服务架构,实现了前后端的高度解耦,提升了系统的灵活性和性能。在这里插入图片描述

项目功能:登录与注册、对产品表、银行表、用户表进行增删改查操作、关联数据处理和图片上传、登录密码修改与安全性、数据导入导出与图表分析、退出登录等。

三、测试计划

1)功能测试

测试用例

因功能相似,此处只选择较为复杂的产品表进行相应CRUD功能测试
请添加图片描述

执行测试

①登录界面

正常登录:输入正确的账号、密码、验证码,三者缺一不可,点击登录按钮。
在这里插入图片描述
预期结果: 登录成功后会跳转到主页面。页面
实际结果:在这里插入图片描述

异常登录: 输入错误的账号或密码,点击登录按钮,结果是出现提示:账号或密码错误。
在这里插入图片描述
输入错误的验证码,点击登录按钮,结果是出现提示:验证码错误。
在这里插入图片描述

②产品信息测试

产品查询

正常查询:输入建设(产品名称可以模糊查询),利率查询为5的数据,点击快捷查询按钮。
预期结果:输出是数据库中查找到的数据。
实际结果:在这里插入图片描述

异常查询:产品名称和利率都不输入,点击快捷查询按钮。
预期结果:无数据返回,页面仍是全部数据信息。
实际结果:在这里插入图片描述

产品增加

正常增加:所有字段均填写,点击保存信息按钮。
在这里插入图片描述
预期结果:出现提示:增加产品成功,第三页可以查看刚刚增加的产品信息。
实际结果:在这里插入图片描述
在这里插入图片描述

异常增加:不填写银行字段,点击保存信息按钮。结果是点击保存信息按钮无效(因为数据库中定义了该字段不为空)。
在这里插入图片描述

产品修改

正常修改:将序号1的产品最长期限由300修改为100,点击保存信息按钮。
在这里插入图片描述

预期结果:出现提示:修改产品成功,可以看到表中数据改变了。
实际结果:在这里插入图片描述
在这里插入图片描述

产品删除

正常删除:选择想删除的产品,点击删除按钮,会出现是否确认删除的弹框,点击确定。
在这里插入图片描述
预期结果:出现提示:删除产品成功,表格中也找不到该条信息了。
实际结果:在这里插入图片描述

产品利率对比图展示
在这里插入图片描述
导出数据
在这里插入图片描述
在这里插入图片描述

③产品分类信息测试

在这里插入图片描述

产品分类查询

正常查询:输入按揭(产品类型名称可以模糊查询),点击快捷查询按钮。
预期结果:输出是数据库中查找到的数据。
实际结果:在这里插入图片描述

异常查询:产品类型名称不输入,点击快捷查询按钮。
预期结果:无数据返回,页面仍是全部数据信息。
实际结果:在这里插入图片描述

产品类型增加

正常增加:所有字段均填写,点击保存信息按钮。
在这里插入图片描述

预期结果:出现提示:增加产品类型成功,第二页可以查看刚刚增加的产品类型信息。
实际结果:在这里插入图片描述
在这里插入图片描述

异常增加:不填写产品类型名称,点击保存信息按钮。结果是点击保存信息按钮无效(因为数据库中定义了该字段不为空)。
在这里插入图片描述

产品类型修改

正常修改:将刚刚新增的创业贷款名称改为创业贷款new,点击保存信息按钮。

在这里插入图片描述
预期结果:出现提示:修改产品类型成功,可以看到表中数据改变了。
实际结果:

在这里插入图片描述
在这里插入图片描述

产品删除

正常删除:选择想删除的产品类型,点击删除按钮,会出现是否确认删除的弹框,点击确定。
在这里插入图片描述
预期结果:出现提示:删除产品类型成功,表格中也找不到该条信息了。
实际结果:
在这里插入图片描述> 在这里插入图片描述

④用户信息测试

在这里插入图片描述

用户信息查询

正常查询:输入钱(用户名称可以模糊查询),选择内部人员,结束时间选择2024-07-01 12:00:00,点击快捷查询按钮。

预期结果:输出是数据库中查找到的数据。
实际结果:在这里插入图片描述

异常查询:输入错误的登录用户,点击快捷查询按钮。
预期结果:数据库未查找到,无数据返回。
实际结果:在这里插入图片描述

用户信息增加

正常增加:所有字段均填写,点击保存信息按钮。
在这里插入图片描述
预期结果:出现提示:增加用户成功,第二页可以查看刚刚增加的用户信息。
实际结果:
在这里插入图片描述
在这里插入图片描述

异常增加:不填写邮箱信息,点击保存信息按钮。结果是点击保存信息按钮无效(因为数据库中定义了该字段不为空)。
在这里插入图片描述

用户信息修改

正常修改:修改刘八的头像,点击保存信息按钮。
在这里插入图片描述

预期结果:出现提示:修改用户成功,可以看到表中头像改变了。
实际结果:
在这里插入图片描述
在这里插入图片描述

用户删除

正常删除:选择想删除的产品类型,点击删除按钮,会出现是否确认删除的弹框,点击确定。
在这里插入图片描述
预期结果:出现提示:删除用户成功,表格中也找不到该条用户信息了。
实际结果:
在这里插入图片描述
在这里插入图片描述

修改密码

点击头像旁边的修改密码,修改成功后会有提示:修改密码成功,然后强制跳转回登录页面重新登录。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2)自动化测试

注:因为项目是动态元素的场景下实现,仅仅靠复制cssSelector或者xpath是不可行的,需要copy full xpath实现。

登陆界面
// 登录页面测试用例
   @ParameterizedTest
   @CsvSource({"http://localhost:80/,zhangsan,password1,http://localhost/layout"})
   void Login(String url, String username, String password,String expected_jump_url) throws InterruptedException {
       webDriver.get(url);

       

// 输入用户名
       webDriver.findElement(By.xpath("/html/body/div/div/div/div[2]/div/form/div[1]/div[2]/div/div/input")).sendKeys(username);
       sleep(3000);
       // 输入密码
       webDriver.findElement(By.xpath("/html/body/div/div/div/div[2]/div/form/div[2]/div[2]/div/div/input")).sendKeys(password);
       sleep(3000);
       // 点击登录按钮
       webDriver.findElement(By.xpath
               ("/html/body/div/div/div/div[2]/div/form/div[5]/div[2]/button/span")).click();
        sleep(3000); // 等待页面加载
        String cur_url=webDriver.getCurrentUrl();
        if(cur_url.equals(expected_jump_url)){
            System.out.println("测试通过");
        }else{
            System.out.println("测试不通过");
        }
    }

在这里插入图片描述

查询信息
//查询产品信息
    @ParameterizedTest
    @CsvSource({"工商银行住房贷款,3.9"})
    void Select(String productName,String interestRate){
        webDriver.get("http://localhost/layout/loanProduct");
        // 等待输入框变得可交互
        WebDriverWait wait=new WebDriverWait(webDriver,10);//最多等待10s
        //点击模糊查询输入框
        wait.until(ExpectedConditions.visibilityOfElementLocated(
                By.xpath("/html/body/div[1]/div/section/section/main/form/div[1]/div/div/div/input"))).sendKeys(productName);
        //点击精准查询输入框
        wait.until(ExpectedConditions.visibilityOfElementLocated(
                By.xpath("/html/body/div[1]/div/section/section/main/form/div[2]/div/div/div/input"))).sendKeys(interestRate);
        webDriver.findElement(By.xpath("/html/body/div[1]/div/section/section/main/form/div[3]/div/button/span")).click();
        //是否出来了查询结果即产品名称工商银行住房贷款是否出现
        webDriver.findElement(By.xpath("/html/body/div[1]/div/section/section/main/div[1]/div[1]/div[3]/div/div[1]/div/table/tbody/tr/td[2]"));

    }

在这里插入图片描述

增加信息
  //增加产品信息
    @ParameterizedTest
    @CsvSource({"招商银行创业贷款,4.2,200000, 60,无需抵押,低利率,前三年优惠"})
    void Add(String productName,String interestRate,String maxLimit,Integer maxTerm,String otherAttributes){
        webDriver.get("http://localhost/layout/loanProduct");
        //点击增加按钮
        webDriver.findElement(By.xpath("/html/body/div[1]/div/section/section/main/button[1]/span")).click();
        // 等待输入框变得可交互,增加产品信息
        WebDriverWait wait = new WebDriverWait(webDriver, 10); // 最多等待10秒
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/div[1]/div/section/section/main/div[3]/div/div/div/form/div[1]/div[2]/div/div/input"))).sendKeys(productName);
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/div[1]/div/section/section/main/div[3]/div/div/div/form/div[2]/div[2]/div/div/div[1]/div[2]"))).click();
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/div[2]/div[3]/div/div/div[1]/ul/li[4]"))).click(); //选择商业贷款
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/div[1]/div/section/section/main/div[3]/div/div/div/form/div[3]/div[2]/div/div/div[1]/div[2]"))).click();
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/div[2]/div[4]/div/div/div[1]/ul/li[8]"))).click(); //选择浦发银行
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/div[1]/div/section/section/main/div[3]/div/div/div/form/div[4]/div[2]/div/div/input"))).sendKeys(interestRate);
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/div[1]/div/section/section/main/div[3]/div/div/div/form/div[5]/div[2]/div/div/input"))).sendKeys(maxLimit);
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/div[1]/div/section/section/main/div[3]/div/div/div/form/div[6]/div[2]/div/div/input"))).sendKeys(String.valueOf(maxTerm));
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/div[1]/div/section/section/main/div[3]/div/div/div/form/div[7]/div[2]/div/textarea"))).sendKeys(otherAttributes);

        // 点击保存按钮(同样,使用更稳定的选择器)
        WebElement saveButton = webDriver.findElement(By.xpath("/html/body/div[1]/div/section/section/main/div[3]/div/div/footer/div/button/span"));
        saveButton.click();

    }

在这里插入图片描述

修改信息
 //修改产品信息
    @ParameterizedTest
    @CsvSource({"3.5"}) // 将利率值修改为3.5
    void modifyInterestRate(String interestRate) throws InterruptedException {
        webDriver.get("http://localhost/layout/loanProduct");
        // 点击修改按钮(这里应该使用更稳定的选择器)
        WebElement modifyButton = webDriver.findElement(By.xpath("/html/body/div[1]/div/section/section/main/div[1]/div[1]/div[3]/div/div[1]/div/table/tbody/tr[1]/td[9]/div/button[1]/span")); // 替换为稳定的选择器
        modifyButton.click();

        // 等待利率输入框变得可交互
        WebDriverWait wait = new WebDriverWait(webDriver, 10); // 最多等待10秒
        WebElement interestInput = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/div[1]/div/section/section/main/div[3]/div/div/div/form/div[4]/div[2]/div/div/input")));

        // 修改利率
        interestInput.clear(); // 如果输入框中有默认值,先清除
        interestInput.sendKeys(interestRate);

        // 点击保存按钮(同样,使用更稳定的选择器)
        WebElement saveButton = webDriver.findElement(By.xpath("/html/body/div[1]/div/section/section/main/div[3]/div/div/footer/div/button/span"));
        saveButton.click();   
    }

在这里插入图片描述

删除信息
//删除信息
    @Test
    void DeleteCtbuLoan() throws InterruptedException {
        //打开主页面
        webDriver.get("http://localhost/layout");
        sleep(3000);
        //点击贷款产品管理
        webDriver.findElement(By.xpath("/html/body/div[1]/div/section/section/aside/ul/li[2]/div/span")).click();
        sleep(3000);
        //点击产品信息
       webDriver.findElement(By.xpath("/html/body/div[1]/div/section/section/aside/ul/li[2]/ul/li[1]")).click();
        sleep(3000);
        //点击删除按钮
        webDriver.findElement(By.xpath("/html/body/div[1]/div/section/section/main/div[1]/div[1]/div[3]/div/div[1]/div/table/tbody/tr[1]/td[9]/div/button[2]/span")).click();

    }

在这里插入图片描述

退出登录


    //退出登录
    @Test
    void LogOut() throws InterruptedException{
        //打开主页面
        webDriver.get("http://localhost/layout");
        //点击欢迎
        webDriver.findElement(By.cssSelector("#app > div > section > header > div.welcome > div")).click();
        sleep(2000);
        //点击退出登录按钮
        webDriver.findElement(By.cssSelector("body > div>div>div>div>div>ul> li:nth-child(3)")).click();
        sleep(2000);
        //检查是否存在用户名输入框以此来校验是否跳转到了登录页面
        webDriver.findElement(By.cssSelector("body > div>div>div>div>div>form>div:nth-child(1)>div:nth-child(2)>div>div>input"));
    }

在这里插入图片描述


总结

本次测试覆盖了登录页面、主界面、产品信息页面、产品类型信息页面、用户信息页面,测试的用例全部通过,自动化测试的部分并不复杂,但是最初未关注到我的项目元素前端在生成的时候是动态生成的,定位元素的时候仅仅靠复制cssSelector或者xpath是不可行的,解决办法是:一级一级去定位元素位置;复制copy full xpath。最终解决了问题。

代码:
项目后端代码
项目前端代码

最后,码字不易,如果觉得对你有帮助的话请点个赞吧,关注我,一起学习,一起进步!

  • 12
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值