码迷,mamicode.com
首页 > 其他好文 > 详细

技术规格说明书

时间:2021-04-22 16:01:59      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:tor   数据库   条件   计划   sqli   工具   atp   服务   测试结果   

技术栈

前端

语言

HTML5CSS3ECMAScript 6

HTML是网页内容的载体,CSS用于以不同样式表示网页内容,ECMAScriptJavaScript)用于实现网页特殊效果

应用开发框架

Vue.js

Vue (读音 /vju?/,类似于 view) 是一套用于构建用户界面的渐进式框架

运行环境

Chrome 86及以上,Firefox 86及以上

后端

语言

Python 3

现代的深度学习基本都是基于Python及相关的机器学习库(如PytorchTensorflow)进行,相关数据集大多为PytorchTensorflow设计了Dataloader,因此我们选用Python可以更方便地进行数据集的解析。

应用开发框架

Django

Django 最初被设计用于具有快速开发需求的新闻类站点,目的是要实现简单快捷的网站开发。我们选用Django以快速实现一个 实现一个数据库驱动的 Web 应用。

mpld3

mpld3项目将Matplotlib(流行的基于Python的图形库)和D3js(流行的JavaScript库)结合在一起,用于为网页创建交互式数据可视化。

数据库

MySql

我们将在公开网站的服务端使用Mysql作为数据库。

SQLite

对于本地部署端需要用到数据库的场景,我们可能会使用更轻量的SQLite作为数据库。

运行环境

Ubuntu 18.04 LTS

总体架构

子系统

软件总体分为客户端、服务器端、数据集解析引擎和可视化系统四个子系统

  • 服务端
    • 接受客户端请求并解析;
    • 调用解析引擎相关功能得到选中的数据;
    • 调用可视化系统创建对应的可视化描述;
    • 将结果发送回客户端;
  • 客户端
    • 接受客户的操作,触发相关请求,将请求传递给服务端;
    • 根据服务端返回的可视化数据,向用户呈现可视化结果;
  • 数据集解析引擎
    • 读取数据集配置文件或调用数据集解析脚本,对数据集进行解析,得到规范的Key-Value对形式的数据单元;
  • 可视化系统
    • 对外部传入的规范数据单元,根据每个字段的数据类型逐字段进行可视化,组合后返回结果。

系统整体交互的UML顺序图如下:

技术图片

子系统内部

客户端内部概述

客户端内部分为主页模块,关于模块,设置模块,数据集管理模块,数据集内容浏览模块和数据详情模块。

  • 主页模块:用户主页,提供产品特性的简要介绍,并且作为导航引向各个模块;
  • 关于模块:开发团队信息和反馈渠道;
  • 设置模块:进行个性化的设置功能;
  • 数据集管理模块:对数据集进行添加,删除和查找;
  • 数据集内容浏览模块:以列表或图库形式显示数据集的内容;
  • 数据详情模块:详细查看数据集中某个数据的信息,并给出对应的格式解析

各模块之间的转移关系如下图:

技术图片

服务端内部概述

服务端主要分为参数解析及请求分发模块,数据集管理模块,数据集内容展示模块,用户管理模块和数据库模块。

  • 参数解析及请求分发模块:处理客户端系统发来的HTTP请求,解析参数,验证用户权限并分发给对应的模块处理;
  • 用户管理模块:负责用户登录、鉴权等相关内容;
  • 数据集管理模块:根据其他模块传来的参数,和数据库模块交互完成数据集信息的管理
  • 数据集内容展示模块:根据其他模块传来的参数,与数据集解析引擎和可视化系统交互,完成用户对数据集内容展示的请求;
  • 数据库模块:管理服务端系统的相关数据。

各模块在主要功能中交互的UML顺序图如下:

技术图片

数据集解析引擎内部简介

数据集解析引擎动态加载数据集描述文件,并根据数据集描述文件使用合适的解析方法从数据集中读取数据,整合成较统一的Key-Value对类型暴露给外部。

可视化系统内部简介

借助第三方库mpld3,可视化系统可以将matplotlib的绘图操作序列化后传输给客户端呈现。在可视化系统内部针对不同的数据类型有不同的可视化模块。将按类型调用不同可视化模块返回的数据进行组合,即可获得完整的数据可视化结果。

开发目标

代码编写

  1. 客户端:
    • 使用Vue.js框架,UI库则使用Ant Design;
    • Alpha阶段主要实现主页、仪表盘和详情页面,封装为对应模块,便于后续迭代。
  2. 服务端:分为API Server、数据集解析、可视化系统三部分:
    • API Server:客户端通过Axios与后端通信,API Server负责抽象出统一的接口;
    • 数据集解析:根据数据源信息,解析后返回Map对象;
    • 可视化系统:使用mpld3编写可视化部分代码。

单元测试

  1. 对于客户端而言,使用测试框架完成脱离场景模块化测试,包括模拟前端操作,模拟后端传输报文等;
  2. 对于服务端而言,使用pytestunitest等框架,并根据所有可能出现的情况划分等价类,构建单元测试样例。

尽可能做到代码全覆盖。

压力测试

采用压测工具模拟网站大量访问,对服务器进行施压,观察一些重点指标(TPS,响应时间,带宽流量,CPU,内存,DB);

对本地部署端,尝试多次上传大数据集、不支持的数据集,查看是否触发边界条件,有无出现相应提示。

真实测试

项目过程中,主要使用编写测试脚本模拟按钮点击的方式对前端各模块进行真实测试。具体而言,将功能规格说明书中的典型场景按照一定规则转化为对应的测试用例,执行脚本进行测试,若出现预期之外的结果则认为该测试用例未通过测试。此外,在 \(\alpha\)\(\beta\) 阶段发布前,我们将首先发布一个内部版本,并邀请数位用户进行体验和测试,收集其反馈并对较为严重的Bug进行修复。

我们要求软件在真实测试过程中不出现以下严重Bug,若不慎出现则以最高优先级进行定位和修复:

  • 频繁的或不知原因的崩溃(包括但不限于闪退、操作系统卡死等)
  • 有歧义的文字、图标、按钮、提示信息或乱码
  • 不正常加载的页面(包括但不限于CSS崩坏、缩放比例不正常等)
  • 错误显示的信息(与团队预期不符)
  • 无效或无响应的按钮、链接等

系统文档

项目开发计划:由PM编写,合理安排项目进度、各部分的负责人员、开发中的资源分配。由于本项目的开发阶段只有两周,因此项目开发计划应该精确到天。

功能规格说明书:需要说明产品的典型用户和场景、功能、界面设计、验收标准、概念定义等。

详细设计说明书:对软件的实现细节进行说明,描述每一模块是怎么设计的,对于复杂模块,应说明实现算法、逻辑流程等。包括但不限于前后端接口说明、输入输出设计、安全性设计。

测试文档:在测试前需要编写测试文档,在测试时需要在测试文档中记录测试情况。需要包含测试人员、测试进度、测试环境、测试情况大体描述、测试内容、测试结果等。

技术规格说明书

标签:tor   数据库   条件   计划   sqli   工具   atp   服务   测试结果   

原文地址:https://www.cnblogs.com/RiddleMan/p/14686419.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!