软件测试和质量管理——实验6:Web测试

《软件测试和质量管理》实验报告六

一、实验目的

        应用Web测试工具对Web系统进行功能和性能测试;

二、实验要求

  1. 撰写实验报告;
  2. 撰写Web系统的测试计划,测试方案;
  3. 撰写Web系统测试的测试用例;
  4. 撰写缺陷报告;
  5. 提交测试脚本。

三、实验内容

1.题目一:测试网站功能

选择一个网站,对其进行功能测试。要求首先编写测试用例,然后在mooctest平台对该网站进行测试。

2.题目二:测试网站性能

选择一个网站,对其进行性能测试。要求在mooctest平台进行负载测试。

四、测试用例的编写

1.功能测试用例设计

1)用例名称

        千千音乐功能测试

2)前置条件
  1. 在Chrome浏览器中安装Selenium IDE插件;
  2. 点击Selenium插件,在URL地址栏中输入https://music.91q.com/,打开千千音乐首页,在《Web功能测试——千千音乐》的基础上拓展录制相关操作并导出junit。
  3. 使用Chrome浏览器,在URL地址栏中输入https://music.91q.com/,进入千千音乐网页,事先注册好账号;
  4. 下载并配置chromedriver.exe,并其所在路径添加至环境变量;
  5. 下载并配置selenium-standalone.jar;
3)测试步骤
  1. 进入“https://music.91q.com/”千千音乐首页;
  2. 击右上角“登录”,弹出登录弹窗后点击“使用账号登录”;
  3. 在账号栏输入电话,密码栏输入密码,点击立即登录;
  4. 点击导航栏的“歌单”;
  5. 选择流派中的“电子”;
  6. 选择并查看第一行第二位的音乐;
  7. 点击“收藏“;
  8. 选择全部歌曲栏中的第一个歌曲;
  9. 在右上角搜索栏输入“周杰伦”,并点击“搜索”;
  10. 点击搜索结果中的“专辑”一栏;
  11. 点击专辑栏中的“广西女孩”;
  12. 点击导航栏中的“歌手”一栏;
  13. 点击导航栏分项中的“T”、“欧美”、“女”标签;
  14. 点击分类结果中的歌手“唐伯虎”;
  15. 选择并查看排序第一的歌曲“最美酒城”;
  16. 补充测试:点击并查看首页中各分项模块的“更多”;
  17. 补充测试:点击并查看导航栏中的其余项目,分别点击“歌单”、“歌手”、“VIP”、“客户端”、“音乐人入驻”;
  18. 补充测试:个人信息修改,
    1. 点击右上角头像位置;
    2. 点击“编辑资料”;
    3. 点击“上传头像”,选择图片上传;
    4. 清空昵称栏,输入“Rql”;
    5. 清空简介栏,输入“这是rql的简介”;
    6. 点击“保存”;

19. 补充测试:个人收藏查看;

20. 测试录制结束,导出为Junit;

21. 将导出的Test1Test.java内容对应放入至eclipse文件结构中,在每一个操作后添加代码行“Thread.sleep(3000);”用来休眠线程,运行测试代码后提交。

4)预期结果

完成千千音乐测试功能需求。

项目名称

千千音乐功能测试

项目编号

模块名称

Web功能测试

模块编号

用例作者

rql

参考信息

Mooctest 测试需求文档

测试类型

功能测试

测试方法

Selenium 录制脚本并测试

测试人员

阮琼露

测试日期

2023年6月9日

测试对象

千千音乐网站:https://music.91q.com/

前置条件

  1. 在Chrome浏览器中安装Selenium IDE插件;
  2. 点击Selenium插件,在URL地址栏中输入https://music.91q.com/,打开千千音乐首页,在《Web功能测试—千千音乐》的基础上拓展录制相关操作并导出junit。
  3. 使用Chrome浏览器,在URL地址栏中输入https://music.91q.com/,进入千千音乐网页,事先注册好账号;
  4. 下载并配置chromedriver.exe,并其所在路径添加至环境变量;
  5. 下载并配置selenium-standalone.jar;


用例

编号

操作

Command

输入

数据

Value

Target

预期

结果

实际

结果

测试

状态(P/F)

1

open

https://music.91q.com/

进入首页

进入首页

P

2

set window size

1280x680

调整界面大小

调整界面大小

P

3

click

css=.login-no > span:nth-child(1)

登录

登录

P

4

click

css=.login-by-password

使用账户登录

使用账户登录

P

5

click

css=.is-error .el-input__inner

点击输入账号

点击输入账号

P

6

type

账号

css=.is-success .el-input__inner

输入账号

输入账号

P

7

click

css=.el-form-item:nth-child(2)

.el-input__inner

点击输入密码

点击输入密码

P

8

type

密码

css=.el-form-item:nth-child(2)

.el-input__inner

输入密码

输入密码

P

9

click

css=.el-button

立即登录

立即登录

P

10

click

linkText=歌单

点击歌单

点击歌单

P

11

click

css=.filter-group:nth-child(2). filter-data-box > li:nth-child(4) > .item

选择电子

选择电子

P

12

click

css=.tracklist-item:nth-child(2) > .name

选择第一行第二位的音乐

选择第一行第二位的音乐

P

13

click

css=.el-button--info:nth-child(2)

收藏音乐

收藏音乐

P

14

click

linkText=准明星

选择准明星

选择准明星

P

15

click

css=.el-input__inner

点击搜索栏

点击搜索栏

P

16

type

周杰伦

css=.el-input__inner

输入"周杰伦"

输入"周杰伦"

P

17

click

css=.el-input__icon

点击搜索

点击搜索

P

18

click

id=tab-3

点击专辑

点击专辑

P

19

click

css=.list-item:nth-child(2) .name

点击广西女孩

点击广西女孩

P

20

click

linkText=歌手

点导航栏歌手

点导航栏歌手

P

21

click

css=.fl:nth-child(21) > .item

选择T标签

选择T标签

P

22

click

css=.filter-group:nth-child(2) > .fl:nth-child(4) > .item

选择欧美标签

选择欧美标签

P

23

click

css=.filter-group:nth-child(3) > .fl:nth-child(3) > .item

选择女标签

选择女标签

P

24

click

css=.el-col:nth-child(12)

.el-image__inner

点击分类结果中的唐伯虎

点击分类结果中的唐伯虎

P

26

click

linkText=醉美酒城

点击醉美酒城

点击醉美酒城

P

27

click

linkText=首页

点击首页

点击首页

P

28

click

css=.songlist-box:nth-child(3) .more

点击秀动发行的更多

点击秀动发行的更多

P

29

click

css=.list-item:nth-child(2) .name

选择第二个歌

选择第二个歌

P

30

click

linkText=首页

点击首页

点击首页

P

31

click

css=.songlist-box:nth-child(4)

.more

点击热门歌单的更多

点击热门歌单的更多

P

32

click

linkText=首页

点击首页

点击首页

P

33

click

css=.shoufa-box-inside .more

点击新歌推荐的更多

点击新歌推荐的更多

P

34

click

css=.list-item:nth-child(5) .name

选择第五首歌

选择第五首歌

P

35

click

linkText=首页

点击首页

点击首页

P

36

click

css=.artist-box-inside .more

点击热门歌手的更多

点击热门歌手的更多

P

37

click

css=.el-col:nth-child(3) .name

选第三个歌手

选第三个歌手

P

38

click

linkText=首页

点击首页

点击首页

P

39

click

css=.mv-box .more

点击精选视频的更多

点击精选视频的更多

P

40

click

linkText=首页

点击首页

点击首页

P

41

click

linkText=歌单

点导航栏歌单

点导航栏歌单

P

42

click

linkText=歌手

点导航栏歌手

点导航栏歌手

P

43

click

linkText=VIP

点导航栏VIP

点导航栏VIP

P

44

click

linkText=客户端

点击

导航栏客户端

点击

导航栏客户端

P

45

click

linkText=音乐人入驻

点击导航栏音乐人入驻

点击导航栏音乐人入驻

P

46

click

css=.el-dropdown-selfdefine .el-image__inner

点击头像

点击头像

P

47

click

linkText=编辑资料

点击编辑资料

点击编辑资料

P

48

click

css=.el-button--default > span

点击上传头像

点击上传头像

P

49

click

css=.el-form-item__content > .el-input > .el-input__inner

点击昵称栏

点击昵称栏

P

50

type

RQL

css=.el-form-item__content > .el-input > .el-input__inner

修改昵称

修改昵称

P

51

click

css=html

点击简介栏

点击简介栏

P

52

type

这是rql的简介

css=.el-textarea__inner

修改简介

修改简介

P

53

click

css=.el-button--primary > span

点击保存

点击保存

P

54

click

id=tab-2

点击我的收藏的专辑

点击我的收藏的专辑

P

55

click

id=tab-3

点击我的收藏的歌单

点击我的收藏的歌单

P

56

click

id=tab-4

点击我的收藏的视频

点击我的收藏的视频

P

5)测试代码
import org.openqa.selenium.chrome.ChromeDriver;
        import org.openqa.selenium.interactions.Actions;
        import org.openqa.selenium.WebDriver;
        import org.openqa.selenium.WebElement;
        import org.openqa.selenium.By;
        import org.openqa.selenium.Dimension;

public class Example {
    public static void test(WebDriver driver) throws InterruptedException{
        // 打开千千音乐
        driver.get("https://music.91q.com/");
        driver.manage().window().setSize(new Dimension(1296, 680));
        Thread.sleep(3000);

        // 登录
        driver.findElement(By.cssSelector(".login-no > span:nth-child(1)")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".login-by-password")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".is-error .el-input__inner")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".is-error .el-input__inner")).sendKeys("账号");
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".el-form-item:nth-child(2) .el-input__inner")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".el-form-item:nth-child(2) .el-input__inner")).sendKeys("密码");
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".el-button")).click();
        Thread.sleep(10000);

        // 点击"歌单"
        driver.findElement(By.linkText("歌单")).click();
        Thread.sleep(3000);
        // 选择"电子"
        driver.findElement(By.cssSelector(".filter-group:nth-child(2) .filter-data-box > li:nth-child(4) > .item")).click();
        Thread.sleep(3000);
        // 选择并查看第一行第二位的音乐
        driver.findElement(By.cssSelector(".tracklist-item:nth-child(2) > .name")).click();
        Thread.sleep(3000);
        // 收藏音乐
       driver.findElement(By.cssSelector(".el-button--info:nth-child(2)")).click();
        Thread.sleep(5000);
        // 选择"准明星"歌曲
        driver.findElement(By.linkText("准明星")).click();
        Thread.sleep(3000);

        // 右上角搜索周杰伦
        driver.findElement(By.cssSelector(".el-input__inner")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".el-input__inner")).sendKeys("周杰伦");
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".el-input__icon")).click();
        Thread.sleep(3000);

        // 点击并查看"专辑"
        driver.findElement(By.id("tab-3")).click();
        Thread.sleep(3000);
        // 点击专辑中的"广西女孩"
        driver.findElement(By.cssSelector(".list-item:nth-child(2) .name")).click();
        Thread.sleep(3000);

        // 点击并查看"歌手"页面
        driver.findElement(By.linkText("歌手")).click();
        Thread.sleep(3000);
        // 点击导航栏分项中的T标签
        driver.findElement(By.cssSelector(".fl:nth-child(21)")).click();
        Thread.sleep(3000);
        // 点击导航栏分项中的欧美标签
        driver.findElement(By.cssSelector(".filter-group:nth-child(2) > .fl:nth-child(4) > .item")).click();
        Thread.sleep(3000);
        // 点击导航栏分项中的女标签
        driver.findElement(By.cssSelector(".filter-group:nth-child(3) > .fl:nth-child(3) > .item")).click();
        Thread.sleep(3000);

        // 点击分类结果中的歌手"唐伯虎"
        driver.findElement(By.cssSelector(".el-col:nth-child(12) .el-image__inner")).click();
        Thread.sleep(3000);
        // 点击音乐"醉美酒城"
        driver.findElement(By.linkText("醉美酒城")).click();
        Thread.sleep(3000);

        // 点击更多和分项
        driver.findElement(By.linkText("首页")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".songlist-box:nth-child(3) .more")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".list-item:nth-child(2) .name")).click();
        Thread.sleep(3000);
        driver.findElement(By.linkText("首页")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".songlist-box:nth-child(4) .more")).click();
        Thread.sleep(3000);
        driver.findElement(By.linkText("首页")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".shoufa-box-inside .more")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".list-item:nth-child(5) .name")).click();
        Thread.sleep(3000);
        driver.findElement(By.linkText("首页")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".shoufa-box-inside .more")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".list-item:nth-child(6) .name")).click();
        Thread.sleep(3000);
        driver.findElement(By.linkText("首页")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".artist-box-inside .more")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".el-col:nth-child(3) .name")).click();
        Thread.sleep(3000);
        driver.findElement(By.linkText("首页")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".mv-box .more")).click();
        Thread.sleep(3000);

        // 其余导航栏项目
        driver.findElement(By.linkText("首页")).click();
        Thread.sleep(3000);
        driver.findElement(By.linkText("歌单")).click();
        Thread.sleep(3000);
        {
            WebElement element = driver.findElement(By.linkText("歌单"));
            Actions builder = new Actions(driver);
            builder.moveToElement(element).perform();
        }
        driver.findElement(By.linkText("歌手")).click();
        Thread.sleep(3000);
        driver.findElement(By.linkText("VIP")).click();
        Thread.sleep(3000);
        driver.findElement(By.linkText("客户端")).click();
        Thread.sleep(3000);
        driver.findElement(By.linkText("音乐人入驻")).click();
        Thread.sleep(3000);

        // 个人信息修改
        driver.findElement(By.cssSelector(".el-dropdown-selfdefine .el-image__inner")).click();
        Thread.sleep(3000);
        driver.findElement(By.linkText("编辑资料")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".el-button--default > span")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".el-form-item__content > .el-input > .el-input__inner")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".el-form-item__content > .el-input > .el-input__inner")).clear();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".el-form-item__content > .el-input > .el-input__inner")).sendKeys("RQL");
        Thread.sleep(3000);
        driver.findElement(By.cssSelector("html")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".el-textarea__inner")).clear();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".el-textarea__inner")).sendKeys("这是rql的简介");
        Thread.sleep(3000);
        driver.findElement(By.cssSelector(".el-button--primary > span")).click();
        Thread.sleep(3000);

        // 个人收藏查看
        driver.findElement(By.id("tab-2")).click();
        Thread.sleep(3000);
        driver.findElement(By.id("tab-3")).click();
        Thread.sleep(3000);
        driver.findElement(By.id("tab-4")).click();
        Thread.sleep(3000);
    }

    public static void main(String[] args) {
        WebDriver driver = new ChromeDriver();
        try { test(driver); }
        catch(Exception e) { e.printStackTrace(); }
        finally { driver.quit(); }
    }
}

2.性能测试用例设计

1)用例名称

用例名称

千千音乐性能负载测试

功能

系统支持多个用户并发登录

目的

测试多用户登录时系统的处理能力

方法

模拟多个用户在不同客户端登录,然后并发进入系统,录制登录过程

2)前置条件

        安装BadBoy,并下载配置慕测Jmeter客户端。

3)测试步骤

1、打开BadBoy,在URL栏中输入https://music.91q.com/search,访问千千音乐搜索页面;

2、录制一次搜索流程;

3、点击BadBoy的File选项导出脚本为qianqian.jmx文件;

 4、启动Jmeter,导入qianqian.jmx文件;

5、修改线程组名为“qianqianmusic”; 

6、添加事务控制器“搜索事务”,并调整位置; 

 7、给搜索页面添加定时器Synchronizing Timer,模拟50个用户组;

 8、新建一个“searchTest.csv”文件,里面填写需要搜索的内容;

 9、给线程组添加CSV数据文件设置,并设置相关参数如下图所示;

 10、在搜索界面的HTTP请求中设置发送参数,把搜索内容的csv填充到word参数中;

11、修改线程组的线程数;

 12、为使负载压力测试结果更加直观,添加聚合报告、图形结果、结果树、用表格查看结果等监视器;

13、运行。

五、测试结果的分析

1.功能测试用例

1)慕测得分

2)结果分析

功能测试需求测试文档的基础上,补充了一些额外设计的测试用例,如:用户账号密码登录、首页中各分项模块的“更多”查看、导航栏其余项目查看、个人信息修改、我的收藏查看。一定基础上完善对整个千千音乐网站测试的用例设计,经测试,所有功能正常并且测试通过。

2.性能测试用例

1)结果截图

 

2)结果分析

性能测试最终按照性能测试文档完成,线程数50~100,启动时间在5~10秒内完成,控制了事务并发,在确保所有请求都成功的情况下,完成性能测试,性能良好。

六、测试文档的撰写

1.测试计划

此次测试的目的就是检查核心模块功能是否正常,验证系统性能是否满足应用需求。这次测试的具体内容如下:

(1)功能测试

在功能测试中,重点测试的是千千音乐的使用流程。在包含测试文档要求的功能基础上,额外测试了如下功能:用户账号密码登录、收藏音乐、首页中各分项模块的“更多”查看、导航栏其余项目查看、个人信息修改、我的收藏查看。

(2)性能测试

在性能测试中,需要测试不同负载下系统的表现,并获得系统的响应能力、负载能力、吞吐量和资源利用率等性能指标。

(3)测试工具

用途

工具

生产厂商

版本

功能测试

Selenium IDE 插件

ThoughtWorks

3.17.2

Eclipse

IBM

Oxygen.3a Release (4.7.3a)

Google Chrome

Google Inc.

114.0.5735.110

性能测试

BadBoy

Badboy Software

2.2.5

Jmeter

Apache

5.5

(4)测试策略

登录模块测试策略

测试策略项

登录模块测试

测试类型

功能测试

测试技术

Eclipse自动化测试

测试通过/失败标准

浏览器上正确显示操作步骤,实现功能

特殊考虑

测试用例执行时间;提前注册用户账号密码

歌单筛选模块测试策略

测试策略项

歌单筛选模块测试

测试类型

功能测试

测试技术

Eclipse自动化测试

测试通过/失败标准

浏览器上正确显示操作步骤,实现功能

特殊考虑

测试用例执行时间;登录后收藏歌单功能

搜索模块测试策略

测试策略项

搜索模块测试

测试类型

功能测试

测试技术

Eclipse自动化测试

测试通过/失败标准

浏览器上正确显示操作步骤,实现功能

特殊考虑

测试用例执行时间

歌手标签筛选模块测试策略

测试策略项

歌手标签筛选模块测试

测试类型

功能测试

测试技术

Eclipse自动化测试

测试通过/失败标准

浏览器上正确显示操作步骤,实现功能

特殊考虑

测试用例执行时间

更多分项模块测试策略

测试策略项

更多分项模块测试

测试类型

功能测试

测试技术

Eclipse自动化测试

测试通过/失败标准

浏览器上正确显示操作步骤,实现功能

特殊考虑

测试用例执行时间

导航栏模块测试策略

测试策略项

导航栏模块测试

测试类型

功能测试

测试技术

Eclipse自动化测试

测试通过/失败标准

浏览器上正确显示操作步骤,实现功能

特殊考虑

测试用例执行时间

个人信息模块测试策略

测试策略项

个人信息模块测试

测试类型

功能测试

测试技术

Eclipse自动化测试

测试通过/失败标准

浏览器上正确显示操作步骤,实现功能

特殊考虑

测试用例执行时间;个人信息修改时需对要修改的原有信息清空;我的收藏查看

查询模块并发性能测试

测试策略项

查询模块并发性能测试

测试类型

性能测试

测试技术

JMeter 压力测试

测试通过/失败标准

网络运行稳定,所有请求有回应,所有线程均正常运行

特殊考虑

系统的响应能力、负载能力、吞吐量和资源利用率

2. 测试分析

(1)功能测试

功能测试需求测试文档的基础上,补充了一些额外设计的测试用例,如:用户账号密码登录、首页中各分项模块的“更多”查看、导航栏其余项目查看、个人信息修改、我的收藏查看。一定基础上完善对整个千千音乐网站测试的用例设计,经测试,所有功能正常并且测试通过。

(2)性能测试

性能测试的主要关注点为:时间(系统处理用户请求的响应时间)和资源(系统运行过程中系统资源的消耗情况);目的为:评估当前系统能力;要求为:每次50人,准备时长10s,运行良好。

性能测试最终按照性能测试文档完成,线程数50~100,启动时间在5~10秒内完成,控制了事务并发,在确保所有请求都成功的情况下,完成性能测试,性能良好。

七、心得与体会

本次实验旨在对Web网站进行功能测试和性能测试。它将实验4和实验5测试localhost本机挂载服务,转移到了测试公网ip上的千千音乐网站,是对前两次实验的巩固和加强。

对于功能测试,实验4只是使用Selenium进行脚本录制并进行播放测试查看是否错误,而此次功能测试则更加侧重于录制完脚本后的系统自动化Eclipse测试,故需要将其转换为代码进行测试。按照需求文档,录制脚本后导出的测试代码只能达到Mooctest的28分,因此我又自己额外设计了一些功能测试用例,如:用户账号密码登录、首页中各分项模块的“更多”查看、导航栏其余项目查看、个人信息修改、我的收藏查看,将测试分数提升到52分。后续我也思考了是否可以通过增加断言、异常等插入进行测试,如Assert、Verify等,增强测试用例的健壮性。对于性能测试,实验5仅是Jmeter进行本地测试,而此次性能测试迁移到了公网后。此处利用创建.csv文件存储搜索内容,将文件中的数据作为搜索传入的参数。

整个实验完成下来,我巩固掌握了Selenium IDE自动化功能测试工具,了解了它的测试模式和过程、录制测试脚本、执行并分析测试脚本,学会如何使用Eclipse进行自动化脚本测试。另外熟悉巩固了使用BadBoy录制Jmeter的测试脚本,使用Jmeter 修改脚本、添加事务、集结点等,进行负载测试。

  • 25
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以为您提供关于软件测试和质量保障的一些知识。 首先,软件测试是评估软件产品是否符合预期要求的过程。它可以帮助发现软件中的缺陷并提高软件的质量。软件测试的目标是验证软件的正确性、完整性、可靠性、可用性、安全性和性能等方面。 软件测试的类型包括功能测试性能测试、安全测试、兼容性测试、用户界面测试等。其中,功能测试是最常见的一种测试类型,它主要关注软件是否按照需求规格说明书中的要求工作。 而质量保障则是指通过一系列质量控制手段和措施,保障软件生命周期中的每一个阶段都能够保持高质量水平。它涉及到整个软件开发过程中的质量管理、质量评估和质量改进等方面。 质量保障的核心在于预防,而不是仅仅依靠测试来发现和修复缺陷。它包括了质量规划、质量控制、质量评估和质量改进等一系列活动。其中,质量规划是制定质量保障计划和相关标准的过程。质量控制是监督和控制软件开发过程中的质量活动,以确保质量标准得到遵守。质量评估是评估软件产品是否符合质量标准的过程。而质量改进则是在软件开发过程中不断改进质量保障活动的过程。 总之,软件测试和质量保障都是软件开发过程中不可或缺的环节,它们可以帮助提高软件的质量和可靠性,从而提高用户的满意度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阮阮的阮阮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值