软件质量测试大作业示例

外卖订餐管理系统的质量保证与测试

学生姓名:                             

学    号:                                    

班    级:                                  

学年学期: 2021-2022学年第二学期

课程名称:   软件质量保证与测试  

目录

1   引言............................................................ 1

1.1  目的....................................................... 1

1.2  背景....................................................... 1

2   系统分析概述.................................................... 2

2.1  系统需求分析............................................... 2

2.2  系统功能分析............................................... 3

2.3  系统结构图................................................. 5

2.4  详细设计流程图............................................. 5

3   系统详细设计.................................................... 7

3.1  测试计划................................................... 8

3.2  测试用例设计.............................................. 10

4   测试执行....................................................... 17

5  缺陷报告....................................................... 20

  1. 引言

1.1 目的

本系统在上线前将在多种测试方法下,通过大量模拟数据来进行测试以保证软件质量的可靠性。

基于不同的立场,系统的软件测试目的不同,从用户角度出发,希望通过软件测试暴露软件中隐藏的错误和缺陷,避免在上线使用后对消费者和商家带来经济上的损失和生活上的不便。从软件开发者角度触发,则希望通过测试能够表面该产品不存在系统上的错误和缺陷,验证该产品已确实实现了用户的要求,确立用户对软件质量的信心,提高用户信誉。

1.2 背景

随着电子商务的普及,越来越多的人接受了电子商务这种便捷、快速的交易形式,网上订餐系统的顺势而出很快受到了大家的欢迎。互联网的应用已普及千家万户这为网络订餐提供了良好的发展空间。同时,网上订餐服务的直观、有效、便捷等优点是传统的电话订餐业务无法比拟的。调查数据显示,白领更乐于选择网上订餐服务,网上订餐将是白领一族捕获餐店信息、进行订餐的发展趋势,同时对于当下的年轻大学生,学生食堂的饭菜已经满足不了它们的胃口,通过网上订餐购买校外的美食也成为了一大趋势。网络订餐随着互联网的成长会逐渐被人们所喜爱,正如几年前手机移动的短信一样,为企业带来的几百个亿的业务收入。在互联网世界里面,谁早一步在应用上创新,谁就掌握了未来的方向。

  1. 系统分析概述

2.1 系统需求分析

本系统主要的针对的客户有2类:消费者和商家。

对于消费者,消费者可以通过本系统进行线上订餐、订餐配送情况查询、个人订单查询、个人信息管理比如电话和配送地址等。

对于商家,商家可以通过本系统进行线上售餐、查询历史订单、统计营业额等。

本系统为用户提供了外卖订餐平台,主要针对的消费者为寻求便利的年轻人和工作忙碌的打工人,主要针对的商家是各类餐饮企业或个体户。

2.2 系统功能分析

    商家功能分析:

    登录功能

    输入:账号、密码

    输出:账号密码验证结果

    性能:安全可靠性高,会对登录流程进行多重判断。

    添加员工

    输入:员工基本信息(姓名、电话、身份证号等)

    输出:新增结果

    性能:安全性高,对于插入数据会进行判断,防止有空缺字段。

    编辑员工信息

    输入:员工新信息

    输出:修改员工信息结果

    性能:安全性高,对于新数据会进行判断,防止有空缺字段和违规字段。

    禁用员工

    输入:员工id

    输出:修改结果

    性能:可靠性好,会对操作人和被操作人进行权限判断。

    添加菜品种类

    输入:新增种类信息(名称、评级)

    输出:新增结果

    性能:安全可靠性好,防止重复种类插入

    删除菜品种类

    输入:种类id

    输出:删除结果

    性能:安全可靠性好、会对删除菜品进行判断、防止删除种类里包含菜品。

    添加菜品

    输入:菜品基本信息(名称、口味、种类、价格等)

    输出:添加结果

    性能:安全可靠性好,防止新增重复菜品和检查菜品信息是否完整。

    编辑菜品

    输入:菜品新信息

    输出:编辑结果

    性能:安全可靠性好,检查菜品信息是否完整。

    禁售菜品

    输入:菜品Id

    输出:修改结果

    性能:安全可靠性好,会对操作人进行权限判断。

    删除菜品

    输入:菜品Id

    输出:删除结果

    性能:安全可靠性好、会对操作人进行权限判断,同时检查是否有套餐包含该菜品。

    新增套餐

    输入:套餐信息(名称、价格、包含菜品等)

    输出:新增结果

    性能:安全可靠性好,会检查套餐信息是否完整并且符合规范。

    编辑套餐

    输入:套餐新信息

    输出:修改结果

    性能:安全可靠性好,会检查修改信息是否符合规范。

    禁售套餐

    输入:套餐id

    输出:修改套餐状态结果

    性能:安全可靠性好,会对操作人进行权限判断。

    删除套餐

    输入:套餐id

    输出:删除结果

    性能:安全可靠性好,会对操作人进行权限判断。

    订单明细

    输入:订单id

    输出:订单信息

    性能:响应速度快,响应时间不会超过2秒。

    用户功能分析:

    登录注册功能

    输入:用户名、密码

    输出:验证结果

    性能:稳定性好、吞吐量大,能够支撑上千用户同时登录。

    添加购物车功能

    输入:菜品信息、套餐信息

    输出:添加结果

    性能:安全稳定性好,能准确记录用于选择菜品或套餐。

    下单支付功能

    输入:菜品信息、套餐信息、用户信息、金额时间等

    输出:下单支付结果

    性能:安全稳定性高,对于多表同时操作能保证一致性,同时能支持上万用户同时下单的并发量。

    个人信息管理功能

    输入:修改信息

    输出:修改结果

    性能:安全可靠性好,会检查修改信息是否符合规范。

    配送地址管理功能

    输入:修改地址信息

    输出:修改结果

    性能:安全可靠性好,会检查修改信息是否符合规范。

    个人订单查询

    输入:用户id

    输出:用户历史订单

    性能:响应速度快,不会超过2秒。

2.3 系统结构图

2.4 程序设计流程图

商家登录程序流程图

商家新增员工程序流程图

商家删除种类程序流程图

商家新增菜品程序流程图

订单查询程序流程图

用户登录程序流程图

用户订餐程序流程图

3. 系统测试设计

3.1 测试计划

测试目标:

(1)为测试各项活动制定一个现实可行的、综合的计划,包括每项测试活动的对象、范围、方法、进度和预期结果。

(2)为项目实施建立一个组织模型,并定义测试项目中每个角色的责任和工作内容。

(3)开发有效的测试模型,能正确地验证正在开发的软件系统。

(4)确定测试所需要的时间和资源,以保证其可获得性、有效性。

(5)确立每个测试阶段测试完成以及测试成功的标准、要实现的目标。

(6)识别出测试活动中各种风险,并消除可能存在的风险,降低由不可能消除的风险所带来的损失。

测试内容:测试软件系统的功能是否完整有效、性能是否达标。对于商家,要测试5个功能模块,1:员工管理模块,要测试管理员新增员工、编辑员工和删除员工功能是否有效;2:种类管理模块,要测试店员新增种类和删除种类功能是否有效,对于删除种类,要严格注意该种类下是否有菜品,如果有菜品,应该无法删除;3:菜品管理模块,要测试店员新增菜品、编辑菜品、禁售菜品和删除菜品功能是否有效;4:套餐管理模块,要测试店员新增套餐、编辑套餐、禁售套餐和删除套餐功能是否有效;5:订单明细模块,要测试商家查看订单,根据订单号、开始时间和结束时间查询订单功能是否准确。对于用户,要测试用户登录功能、修改个人信息、编辑收货地址和下单功能是否有效。其中下单功能要严格周密测试。

测试计划:

1、单元测试:对各个功能单元进行测试,采用和白盒测试方法,测试用例要涉及语句覆盖、判定覆盖、条件覆盖和判定-条件覆盖,由编码人员自行完成。

2、集成测试:对多个功能单元集成进行测试,采用黑盒测试方法,测试用例设计采用等价划分法和边界值法。

      3、系统测试:对整个软件系统进行功能、性能和安全测试。

3.2 测试用例设计

用户注册登录功能单元测试用例设计

采用白盒测试

根据用户登录流程图绘制控制流图

  1. 语句覆盖

输入数据(用户名、密码)

期望输出

实际输出

测试路径描述

user、123456

密码格式错误

登录成功

1 2 3 4 5 6 7

Null、123456

用户名不能为空

用户名不能为空

1 2 3 8 7

user、null

密码不能为空

密码不能为空

1 2 3 4 9 7

user、111

用户名或密码错误

用户名或密码错误

1 2 3 4 5 10 7

  1. 判定覆盖

输入数据(用户名、密码)

期望输出

实际输出

测试路径描述

user、123456Aa

登陆成功

登录成功

1 2 3 4 5 6 7

  1. 条件覆盖

输入数据(用户名、密码)

期望输出

实际输出

测试路径描述

user、123456Aa

登陆成功

登录成功

1 2 3 4 5 6 7

Null、123456

用户名不能为空

用户名不能为空

1 2 3 8 7

null、null

用户名不能为空

用户名不能为空

1 2 3 8 7

user、null

密码不能为空

密码不能为空

1 2 3 4 9 7

user、111

用户名或密码错误

用户名或密码错误

1 2 3 4 5 10 7

  1. 判定-条件覆盖

输入数据(用户名、密码)

期望输出

实际输出

测试路径描述

user、123456Aa

登录成功

登录成功

1 2 3 4 5 6 7

Null、123456

用户名不能为空

用户名不能为空

1 2 3 8 7

null、null

用户名不能为空

用户名不能为空

1 2 3 8 7

user、null

密码不能为空

密码不能为空

1 2 3 4 9 7

user、111

用户名或密码错误

用户名或密码错误

1 2 3 4 5 10 7

商家推出菜品功能测试用例设计

采用白盒测试

根据商家新增菜品流程图绘制控制流图

  1. 语句覆盖

输入数据(菜品名称、菜品价格、菜品种类、菜品口味选择)

期望输出

实际输出

测试路径描述

红烧肉、99.00、徽菜、null

添加成功

添加成功

1 2 3 4 5 6 7 8 9

null、99.00、徽菜、null

菜品名称不能为空

菜品名称不能为空

1 2 3 4 5 10 9

红烧肉、null、徽菜、null

菜品价格不能为空

菜品价格不能为空

1 2 3 4 5 6 11 9

锅包肉、99.00、徽菜、null

菜品名称重复

菜品名称重复

1 2 3 4 5 6 7 12

9

  1. 判定覆盖

输入数据(菜品名称、菜品价格、菜品种类、菜品口味选择)

期望输出

实际输出

测试路径描述

红烧肉、99.00、徽菜、null

添加成功

添加成功

1 2 3 4 5 6 7 8 9

  1. 条件覆盖

输入数据(菜品名称、菜品价格、菜品种类、菜品口味选择)

期望输出

实际输出

测试路径描述

红烧肉、99.00、徽菜、null

添加成功

添加成功

1 2 3 4 5 6 7 8 9

红烧肉、99.00、徽菜、(微辣、中辣、重辣)

添加成功

添加成功

1 2 3 4 5 6 7 8 9

红烧肉、99.00、null、null

添加成功

添加成功

1 2 3 4 5 6 7 8 9

null、99.00、徽菜、null

菜品名称不能为空

菜品名称不能为空

1 2 3 4 5 10 9

null、null、null、null

菜品名称不能为空

菜品名称不能为空

1 2 3 4 5 10 9

null、99.00、null、(微辣、中辣、重辣)

菜品名称不能为空

菜品名称不能为空

1 2 3 4 5 10 9

红烧肉、null、徽菜、null

菜品价格不能为空

菜品价格不能为空

1 2 3 4 5 6 11 9

红烧肉、null、null、null

菜品价格不能为空

菜品价格不能为空

1 2 3 4 5 6 11 9

红烧肉、null、徽菜、(微辣、中辣、重辣)

菜品价格不能为空

菜品价格不能为空

1 2 3 4 5 6 11 9

锅包肉、99.00、徽菜、null

菜品名称重复

菜品名称重复

1 2 3 4 5 6 7 12

9

锅包肉、99.00、徽菜、(微辣、中辣、重辣)

菜品名称重复

菜品名称重复

1 2 3 4 5 6 7 12

9

  1. 判定-条件覆盖

输入数据(菜品名称、菜品价格、菜品种类、菜品口味选择)

期望输出

实际输出

测试路径描述

红烧肉、99.00、徽菜、null

添加成功

添加成功

1 2 3 4 5 6 7 8 9

null、99.00、徽菜、null

菜品名称不能为空

菜品名称不能为空

1 2 3 4 5 10 9

红烧肉、null、徽菜、null

菜品价格不能为空

菜品价格不能为空

1 2 3 4 5 6 11 9

锅包肉、99.00、徽菜、null

菜品名称重复

菜品名称重复

1 2 3 4 5 6 7 12

9

用户下单功能集成测试用例设计

采用黑盒测试

  1. 等价类划分法

划分有效等价类和无效等价类

输入条件

有效等价类

无效等价类

下单信息是否完整(用户名、用户手机号、地址、菜品、备注)

user != null(1)

phone != null (2)

address != null(3)

dish != null (4)

mark != null(5)

user = null(6)

phone = null(7)

address = null(8)

dish = null (9)

mark = null(10)

  1. 设计有效等价类的测试用例

用例输入

期望输出

实际输出

覆盖等价类

user、13845678956、江汉区新城花园4栋301、单人套餐*1、微辣

下单成功

下单成功

1、2、3、4、5

  1. 设计无效等价类的测试用例

用例输入

期望输出

实际输出

覆盖等价类

user、13845678956、null、单人套餐*1、微辣

收货地址不能为空

收货地址不能为空

8

user、13845678956、null、null、null

收货地址不能为空

收货地址不能为空

8、9、10

user、13845678956、null、null、微辣

收货地址不能为空

收货地址不能为空

8、9

user、13845678956、null、单人套餐*1、null

收货地址不能为空

收货地址不能为空

8、10

user、13845678956、江汉区新城花园4栋301、null、微辣

菜品不能为空

菜品不能为空

9

user、13845678956、江汉区新城花园4栋301、null、null

菜品不能为空

菜品不能为空

9、10

  1. 边界值分析法

用例输入

期望输出

实际输出

覆盖等价类

user、13845678956、江汉区新城花园4栋301、单人套餐*1、null

下单成功

下单成功

1、2、3、4、5

user、13845678956、null、单人套餐*1、微辣

收货地址不能为空

收货地址不能为空

8

user、13845678956、null、null、null

收货地址不能为空

收货地址不能为空

8、9、10

user、13845678956、null、null、微辣

收货地址不能为空

收货地址不能为空

8、9

user、13845678956、null、单人套餐*1、null

收货地址不能为空

收货地址不能为空

8、10

user、13845678956、江汉区新城花园4栋301、null、微辣

菜品不能为空

菜品不能为空

9

user、13845678956、江汉区新城花园4栋301、null、null

菜品不能为空

菜品不能为空

9、10

4. 测试执行

  • 用户登录流程测试用例执行
  1. 测试结果
  1. 语句覆盖测试用例测试结果

  1. 判定覆盖测试用例测试结果

  1. 条件覆盖测试用例测试结果

  1. 判定-条件覆盖测试用例测试结果

  1. 测试代码

private String username;

    private String password;

    private String expected;

    private static UserService userService = new UserService();

    @Parameterized.Parameters

    public static Collection<?> prepareData(){

        Object [][] object = {

                {"user","123456","密码格式错误"},

                {"null","123456","用户名不能为空"},

                {"user","null","密码不能为空"},

                {"user","111","用户名或密码错误"}

        };

        return Arrays.asList(object);

    }

    public ceshi(String username, String password, String expected){

        this.username = username;

        this.password = password;

        this.expected = expected;

    }

    @Test

    public void testDate(){

        userService.login(username,password);

        Assert.assertEquals(expected, username.getReuslt());

}

  • 商家推出菜品测试用例执行
  1. 测试结果
  1. 语句覆盖测试用例测试结果

  1. 判定覆盖测试用例测试结果

  1. 条件覆盖测试用例测试结果

  1. 判定-条件覆盖测试用例测试结果

  1. 测试代码

private String dishName;

    private double price;

    private String category;

    private List<String> flavors;

    private String expected;

    private static DishService dishService = new DishService();

    @Parameterized.Parameters

    public static Collection<?> prepareData(){

        Object [][] object = {

                {"红烧肉",99.00,"徽菜",null,"添加成功"},

                {"红烧肉",99.00,"徽菜",{"微辣","中辣","重辣"},"添加成功"},

                {"红烧肉",99.00,null,null,"添加成功"},

                {null,99.00,"徽菜",null,"菜品名称不能为空"},

                {null,null,null,null,"菜品名称不能为空"},

                {null,99.00,null,{"微辣","中辣","重辣"},"菜品名称不能为空"},

                {"红烧肉",null,"徽菜",null,"菜品价格不能为空"},

                {"红烧肉",null,null,null,"菜品价格不能为空"},

                {"红烧肉",null,"徽菜",{"微辣","中辣","重辣"},"菜品价格不能为空"},

                {"锅包肉",99.00,"徽菜",null,"菜名名称重复"},

                {"锅包肉",99.00,"徽菜",{"微辣","中辣","重辣"},"菜品名称重复"}

        };

        return Arrays.asList(object);

    }

    public ceshi(String dishName, double price, String category, List<String> flavors, String expected){

        this.dishName = dishName;

        this.price = price;

        this.category = category;

        this.flavors = flavors;

        this.expected = expected;

    }

    @Test

    public void testDate(){

        dishService.addDish(dishName,price,category,flavors);

        Assert.assertEquals(expected, dishService.getReuslt());

}

  • 用户下单流程测试用例执行
  1. 测试结果
  1. 有效等价类测试结果

  1. 无效等价类测试结果

  1. 边界值分析法测试用例测试结果

  1. 测试代码

private String username;

    private String userphone;

    private String address;

    private String dishes;

    private String mark;

    private String expected;

    private static OrderService orderService = new OrderService();

    @Parameterized.Parameters

    public static Collection<?> prepareData(){

        Object [][] object = {

                {"user","13845678956","江汉区新城花园4栋301","单人套餐*1",null,"下单成功"},

                {"user","13845678956",null,"单人套餐*1","微辣","地址不能为空"},

                {"user","13845678956",null,null,null,"地址不能为空"},

                {"user","13845678956",null,null,"微辣","地址不能为空"},

                {"user","13845678956",null,"单人套餐*1",null,"地址不能为空"},

                {"user","13845678956","江汉区新城花园4栋301",null,"微辣","菜品不能为空"},

                {"user","13845678956","江汉区新城花园4栋301",null,null,"菜品不能为空"}

        };

        return Arrays.asList(object);

    }

    public ceshi(String username, String userphone, String address,String dishes, String mark, String expected){

        this.username = username;

        this.userphone = userphone;

        this.address = address;

        this.dishes = dishes;

        this.mark = mark;

        this.expected = expected;

    }

    @Test

    public void testDate(){

      orderService.makeOrder(username,userphone,address,dishes,mark);

        Assert.assertEquals(expected, orderService.getReuslt());

    }

5. 缺陷报告

模块名称

用户登录页面

版本号

V1.1

测试人

缺陷类型

功能错误

严重级别

B

可重复性

缺陷状态

New

测试平台

Win10

浏览器

Chrome

简述

系统规定密码必须大于8为数,且包含字符

操作步骤

1.进入外卖系统用户前台登录页面

2.输入用户名密码

3.点击同意协议按钮

4.点击登录

5.登录成功

实际结果

登录成功

预期结果

密码格式错误

注释

建议修改代码,在收到密码后先进性格式校验,再从数据库查询用户是否存在。

模块名称

用户下单页面

版本号

V1.1

测试人

缺陷类型

功能错误

严重级别

A

可重复性

缺陷状态

New

测试平台

Win10

浏览器

Chrome

简述

从实际生活上来说,用户下单并不是必须填写备注,而本系统不填写备注就无法下单。

操作步骤

1.进入外卖系统用户前台登录页面

2.输入用户名密码

3.点击同意协议按钮

4.点击登录

5.选择菜品添加至购物车

6.点击去下单

7.选择收货地址

8.点击下单

实际结果

显示服务端错误

预期结果

下单成功

注释

建议修改后端判定信息是否完整部分的代码,同时检查数据库表设计,备注项是否设置为非空,如果是非空,建议修改。

  • 24
    点赞
  • 288
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
此次实验我将以往的实验进行了分析和总结,理清了做医院管理系统这个项目时遇到的问题,把已完成的系统所具有的功能与最初的需求分析报告进行对比,发现有的功能并没有实现,这是因为自己水平不够也没有为此请教老师,查阅资料,导致最终的系统并没有满足需求,还有对该系统的测试过程中发现错误和缺陷没有及时跟踪,有的错误由于时间原因找不到了,对于测试过程中重复出现的错误和自己不清楚的错误应该及时记录并改正,以免导致更严重的错误。经过这么多次的实验,我深深地认识到测试对于系统开发的重要性,在每次测试中都会出现很多问题,如果不及时解决甚至导致项目无法继续进行,同时测试用例的设计也尤为重要,在编写测试用例时往往会考虑不周全,所以应该给出测试大纲,以保证测试用例的设计能够清晰、完整而不是顾此失彼。测试用例的设计在测试系统功能的同时,还要检查系统对输入数据的反应,要检查合法的操作和非法的操作,检查系统对条件组合的反应等,好的测试用例让其他人能够很好地执行测试,能够快速便利所测试的功能,能发现至今没有发现的错误,由于对系统的功能不是很熟悉,自己设计的测试用例显得很单薄,并不能测试出系统存在的所有问题,对于系统性能的测试就要搭建更真实的运行环境,另外还要在不同的操作系统下进行测试时,以及采用人工测试完成。
以下是一个软件质量保障与测试大作业示例: 主题:某软件的性能测试与优化 背景:某公司开发了一款新的电商平台,为了满足高并发、高可用等要求,需要对该平台进行性能测试与优化。 目标:通过性能测试与优化,达到以下目标: 1. 平台的响应时间不超过3秒; 2. 平台的吞吐量能够支持每秒1000个并发请求。 任务: 1. 对平台进行性能测试,包括负载测试、压力测试、稳定性测试等,收集测试数据并分析。 2. 根据测试结果,找出平台性能瓶颈,进行性能优化。 3. 对优化后的平台进行再次测试,验证优化效果是否达到预期目标。 4. 撰写测试报告,包括测试计划、测试用例测试结果、性能优化方案等。 技术要求: 1. 使用JMeter等性能测试工具进行测试; 2. 使用Python、Java等编程语言进行性能优化; 3. 使用Grafana等监控工具对平台进行实时监控。 时间安排: 1. 第1周:进行性能测试,收集测试数据。 2. 第2周:分析测试数据,找出性能瓶颈,进行性能优化。 3. 第3周:再次进行性能测试,验证优化效果。 4. 第4周:完成测试报告。 注意事项: 1. 测试过程要保证测试环境的准确性和稳定性。 2. 优化方案应该考虑平台的实际情况、用户需求等因素。 3. 测试报告应该清晰、详细、准确地反映测试过程和结果。 4. 测试过程中应该注意安全性、保密性等问题。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

.wei-upup

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

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

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

打赏作者

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

抵扣说明:

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

余额充值