团队作业3需求改进与系统设计

第一部分、需求与原型改进

1.1改进的原型

1.1.1改进的说明

        相较上一次的原型,这一次我们确定了主题颜色,并且使功能一眼就能看懂,让新用户能很快上手。

1.1.2高保真原型

 

1.1.3 高保真原型下载地址

         https://pan.baidu.com/s/1pp1-OdedHYaKU0Uof9lS7g

1.2改进的需求规格说明书

1.2.1改进说明

1、原版:

 

改进版:

 

理由:

       不把使用人群仅仅局限在在校学生中,可以将使用人群的范围扩大到学生辅导员上。我校现在多数为研究生毕业后留校当辅导员,所以我们的辅导员年龄跟我们大学生差不多大,并且也是刚刚结束学业走向工作岗位。因此,他们的经济实力也不高,也会有冲动消费的时候。由于辅导员与在校大学生的年纪相仿,我们购买东西的方向也许相似,因此我们的辅导员也可以加入此平台。

2、原版:

 

改进版:

 

理由:

       应用目标新增了人群——学生辅导员,因此用户角色分析表中也应该增加相应人群。

3、原版:

 

改进版:

 

理由:

       随着该APP的发展运营,用户的需求量会变得越来越多,我们的工作量也将会变得越来越大。而且现在很多人都对二手交易网站以及APP有着不同的想法,因此我们的软件也会有不断地创新以及提升。因此,我们小组以现有的人数一定是不足够的。所以,我们不仅要在技术上有所进步,以后在人数上也要有所扩展。

1.2.2需求规格说明书下载地址

        https://pan.baidu.com/s/1zzqwn7t_xECmPUfUYoW7bg

第二部分、系统设计

2.1系统架构设计

2.1.1设计摘要说明

我们架构层分为前端UI,展示层,业务层,数据层,数据库,运行环境。

部分架构层的说明:

前端UI

  由于我们开发的是一款微信小程序,所以在前端UI设计上,我们运用小程序支持的wxml,wxss进行开发,同时加入js实现动态交互。

 

展示层

  小程序基于vue.js,为了让程序具有可扩展性,我们将数据动态渲染进来,方便使用者进行修改,即模板渲染引擎。

同时在微信小程序中,前端页面运用ajax技术和后端进行交互,将数据异步刷新进来。这样在减少服务器刷新压力的同时,实现前后端分离。

 

业务层

  包含了系统所需要的所有功能上的算法和计算过程,并与数据访问层和表现层交互。我们的业务层主要服务于商品的查询,商品的管理,订单的查询,订单的管理,评论的管理。

 

数据层

  我们将采用MySQL关系数据库管理系统,进行数据库的设计。通过用户表,订单表等与业务层中的下单处理以及各种查询操作进行交互。

 

2.2.2数据库相关设计

 数据联系

 

数据库表结构设计以及E-R图

 

 

2.1.3平台架构设计

       我们选用的Web服务器是apache-tomcat-9.0.6。

  Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,而运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。我们平时也是采用的这样的服务器,熟悉操作便于项目进展。

 

功能基本描述

购物车业务设计

 

 

 

  1. 加入购物车: 加入购物车插入到库中一条购物记录,同时插入到缓存中,缓存的key是记录的id
    未登录状态: 用户未登录时点击加入购物车,将productId ,skuId,buyNum 转换成json存到cookie中(同一件商品不同的skuId视为两个商品,相同的skuId和productId视为相同商品数量累加),用户登录成功的时候接收用户的消息将cookie中的商品信息保存到数据库中,然后清空cookie数据(京东)不然会出现登录成功后删除购物车商品然后退出,购物车中显示问题 ;      登录状态: 点击加入购物车将long userId,long productId,long skuId,int count 存到库中,相同的productId和skuId 数量累加,不同的skuId新增一条 addToCart(long userId,long skuId,int count); //加入sku到购物车商品
  2. 修改商品数量:
    未登录状态:用户未登录时,点击加减数量,根据productId和skuId从cooike中将商品数量进行加减,注意校验cooike中的数量不能小于0,不能大于库存数量                             登录状态:用户登录状态时,点击加减数量productId和skuId,userId将用户购物车中某个sku的数量增加或减去differ值,注意校验库存数量 updateAmount(long userId,skuId,int differ,List selectedSkuIds); //将用户购物车中某个sku的数量增加或减去differ值。此方法更新商品后,会根据selectedSkuIds重新计算一遍购物车价格,返回满足条件的优惠券
  3. 删除购物车记录
未登录状态:用户未登录时,根据productId和skuId删除cookie中的记录 deleteCart(long userId,long skuId, List selectedSkuIds); //将某个sku从用户购物车移除。此接品,在清除后台会重复计算selectedSkuIds价格,并会返回选中的sku列表与未选中的sku列表集合。及相应优惠券。                                                                                登录状态:登录状态下,直接根据productId和skuId以及userId删除库中数据

  4.购物车列表展示

未登录状态:从cookie中取出productId以及skuId列表展示商品信息
登录状态:登录状态下根据用户id查询库中的记录数getCart(long userId,list selectedSkuIds); //查询用户购物车。此接口会重新计算selectedSkuIds,并返回选中与未选中sku列表集合,返回相应的满足条件的优惠券信息。

 

  5.订单提交成功后更新购物车数量以及修改购物车状态;订单提交成功后接收订单成功消息,更新购物车状态和数量删除缓存记录

  6.商品下架后,更新库存状态,显示失效;商品下架后接收消息修改购物车里的商品状态为失效

基本功能划分

 

2.2任务分解WBS

1、团队项目的WBS

 

2、团队成员估计各自任务所需时间

第三部分、测试计划

奶牛易物测试报告

一、概述

测试背景:

        我们小组已经完成了对该微信小程序的需求分析,采用多种方法进行了详实可靠的用户调研并从男女比例、省份比例、年及比例等各个方面进行了数据统计与分析,确保得到更加有说服力的结果;根据调研结果,我们进行了需求分析说明书的撰写,进一步分析了产品的开发目标、用户特点,并做出功能模块规定、细化的输入输出要求以及对该微信小程序的数据管理能力、故障处理能力、运行环境问题、接口问题做出规定与要求;规定功能模块后,小组人员又对该微信小程序进行了精心的原型设计。

       从功能模块上看,主要分为三大板块:首页(进行商品的浏览、搜索)、购物车(可将选择好想要购买的商品加入购物车)、我的易物(分为我的购买和我的出售)。

测试目的:

       在开发过程中,我们会对代码的每个具体方法、局部功能进行测试。除此之外,我们将会在每个模块完成以后进行模块化测试,对首页的测试目标是:在没有输入关键字进行搜索时,可以根据搜索量顺序罗列出物品。进行关键字搜索后,查找到相关物品;对购物车的测试目标是:浏览商品后选中,点击“加入购物车”,在购物车页面进行浏览,查看商品是否被加入,如果成功加入商品,则选中商品进行结算,查看结算效果是否正确;对我的易物的测试目标是:点击进入页面后,可以查看自己售卖的商品记录和购买的商品记录。

测试人员:

成员姓名 职务
赵莉 开发人员、营销人员、测试人员
王文雨 开发人员、测试人员、版本控制人员
李庭娟 开发人员、营销人员、测试人员
吴建瑜 开发人员、测试人员、版本控制人员
祁晨 开发人员、营销人员、测试人员

测试术语:

       Junit、单元测试、算法正确性测试、Alpha测试、Beta测试、兼容性测试、性能测试

二、测试环境

硬件环境:正常或更好配置的移动端(支持微信);

软件环境:微信5.3版以上、JProfiler测试软件、Junit、LoadRunner和Apache JMeter测试工具;我们小组计划使用微信WEB开发者工具进行开发,该工具上对于程序调试主要有三大功能区:模拟器、调试工具和小程序操作区,我们会使用该开发工具进行程序的测试;

测试环境需求:配套齐全的开发工具,包括jdk、Tomcat服务器、远程云服务器、MySQL数据库等。

三、测试人员

 

奶牛易物测试分工表:

测试员 测试员任务
王文雨 展示界面布局测试
吴建瑜 展示界面交互测试(超链接、表单等)
祁晨 首页功能测试
李庭娟 购物车算法测试
赵莉 我的易物管理测试

测试人员要求:

(1)熟悉业务,了解系统,能够对系统进行全面的测试

(2)用客观的思考方式站在用户的角度分析问题、需求

(3)多思考,不要拘束于惯性思维,能够考虑到极端情况

(4)不要闭门造车,充分利用各种学习资源进行充电

(5)善于对测试过程中出现的问题或者学到的知识感悟进行记录,以便与他人进行交流分享

四、测试安排

占用时间:

       在开发过程中,我们会对代码的每个具体方法、局部功能进行测试。除此之外,我们将会在每个模块完成以后进行模块化测试。最后,我们会对整体间的交互及所有的模块功能进行测试。可见,测试工作在整个代码开发过程中是时刻伴随的。

测试方法:

       自动化测试、手动测试;白盒测试、黑盒测试;中断测试、临界测试、压力测试等,对程序的覆盖有以下几个方面:数据覆盖、逻辑覆盖、语句覆盖、判定覆盖、条件覆盖等。可以划分等价类把所有可能的数据输入划分为若干部分,然后从每一部分选择少数具有代表性的数据作为测试用例。

(1)有效等价类合理,有意义的输入数据构成的集合,检验程序是否实现规格说明预先规定的功能和性能。

(2)无效等价类不合理,无意义的输入数据构成的集合,检验程序的容错能力。边界值分析大量的错误发生在输入或输出的边界上,而不是某个范围的内部。

对程序的覆盖如下:

(1)语句覆盖:设计若干个测试用例,运行所测程序,使得每一可执行语句至少执行一次,语句覆盖是最弱的逻辑覆盖准则。

(2)判定覆盖:设计若干测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假值都能满足If…else 语句。

(3)条件覆盖:设计若干测试用例,运行被测程序,要使判断中的每个条件的可能取值至少满足一次。如:if..else   For(..)  while()等语句。

(4)路径覆盖:覆盖所有可能的路径。

(5)判定-条件覆盖:使得每个条件的所有可能至少出现一次,并且至少每个判断本身的判断结果出现一次。

功能测试的常用方法如下:

(1)页面链接检查,每一个链接是否有对应的界面

(2)相关性检查,删除/增加一项会不会对其他项产生影响,如果产生影响,是否正确

(3)检查按钮功能是否正确

(4)字符串长度检查,输入超出需求所说明的字符串长度的内容,看系统是否检查,会不会出错。

(5)字符类型检查

(6)标点符号检查

(7)中文字符处理,乱码或出错

(8)检查带出信息的完整性,在查看信息和update信息时,查看所填写的信息是不是全部带出,带出信息和添加的是否一致等。

工具引用:

       功能模块测试采用Junit单元测试进行测试,性能测试引用JProfiler,压力测试工具引用LoadRunner和Apache JMeter测试工具。

五、测试总结

参考文献:

易物模型及其求解算法

http://kns.cnki.net/KCMS/detail/detail.aspx?dbcode=CJFQ&dbname=CJFD2010&filename=JLDX201004028&uid=WEEvREcwSlJHSldRa1FhcTdWajFtaXRldUNZU3lFZzlBaGE2OWpuOXhBUT0=$9A4hF_YAuvQ5obgVAqNKPCYcEjKensW4ggI8Fm4gTkoUKaID8j8gFw!!&v=MjczOTBoMVQzcVRyV00xRnJDVVJMS2ZZdVJuRmlEblVyM0pMeUhQZHJHNEg5SE1xNDlIYklSOGVYMUx1eFlTN0Q=

大学生校园以物易物平台的设计与实现

http://kns.cnki.net/KCMS/detail/detail.aspx?dbcode=CJFQ&dbname=CJFDLAST2015&filename=JGZK201503018&uid=WEEvREcwSlJHSldRa1FhcTdWajFtaXRldUNZU3lFZzlBaGE2OWpuOXhBUT0=$9A4hF_YAuvQ5obgVAqNKPCYcEjKensW4ggI8Fm4gTkoUKaID8j8gFw!!&v=MDg5MTJUM3FUcldNMUZyQ1VSTEtmWXVSbkZpRG5VTHpJTHlyUlpiRzRIOVRNckk5RWJJUjhlWDFMdXhZUzdEaDE=

校园易物网络平台建设的研究及实现路径

http://kns.cnki.net/KCMS/detail/detail.aspx?dbcode=CJFQ&dbname=CJFD2012&filename=BFJJ201224016&uid=WEEvREcwSlJHSldRa1FhcTdWajFtaXRldUNZU3lFZzlBaGE2OWpuOXhBUT0=$9A4hF_YAuvQ5obgVAqNKPCYcEjKensW4ggI8Fm4gTkoUKaID8j8gFw!!&v=MTQwMTZyV00xRnJDVVJMS2ZZdVJuRmlEblViN0xKeXZCWkxHNEg5UE9xNDlFWW9SOGVYMUx1eFlTN0RoMVQzcVQ=

测试资源:

       人力方面——目前我们小组成员5人,其中有4人来自校工作室,均有一定的代码能力,均承担过java web系统的开发工作,工作认真严谨,积极进取。但是对于测试工作,项目小组成员大多没有做过太多的训练,在对项目的测试工作方面还需进行进一步学习。

        时间方面——这次项目整体开发周期不长,也并不符合正规的开发周期,我们小组成员也非专业测试人员,因此要想将各个模块、各个开发时间段做到完善是存在较大难度的,因此在时间上相对来说是比较匆忙的,需要小组成员共同努力。

原文地址:https://www.cnblogs.com/Nenu-exchange/p/9107514.html