团队作业(二)
团队成员:尤游,牟羽。
1 概述
1.1 开发背景
随着科学技术的不断提高,计算机科学日渐成熟,随着社会信息量的与日俱增,手机作为交流的工具,在数量、规模比以往任何时候都要大得多。但是,随着手机的普及,人与人之间的交流越来越少,这个软件旨在通过手机技术的普及及成熟,帮助人们找到自己想做的事的同伴,从而拉近人与人之间的关系,使人们关系不像以前那样冰冷。
1.2 开发目标
“一起来”软件主要致力于寻找到“你想要做什么事,但是一个人却不想做的“的一款app”。比如你想要 打篮球/打羽毛球/打乒乓球/游泳/<网费,洗澡费>拼单/自习/大环跑步/图书馆研修室预约/一起吃饭/游戏开黑等一系列活动,你可以自由创建活动,并在基于你的地理位置上只能寻找和你志同道合的人来一起完成你的活动,甚至我们可以与接入打车软件的API,来“一键打车”,从此你不在孤单。
1.3 参考资料
Google Java编程风格指南 http://www.hawstein.com/posts/google-java-style.html
Java代码规范 http://blog.csdn.net/huaishu/article/details/26725539
Spring实战(第四版)Craig Walls
1.4 设计原则
(1) 实用性
由于本系统是以实际项目为背景,所以它必须建立在实用的基础之上,系统必须根据客户的实际需求完成软件的设计和最终的实现。
(2) 可扩展性
可扩展性对于一个软件是必须的,一个软件的使用是有生命周期的,当更好的技术出现的时候就必须对软件加以升级。为使系统能有良好的兼容性和可扩展性,本系统在设计时充分考虑了系统数据库设计容量与处理能力等方面的扩充与升级的可能,不仅充分保护了原有投资,还保证了以后系统功能升级的方便。
(3) 可维护性
维护占软件生命周期70%的工作量,它主要涉及软件功能的可添加和改变,并且在日常的使用中功能的易用性。
(4) 完整性
由于操作人员的普遍性,要求有良好的人机界面,高效的信息处理,安全可靠的数据管理等都是完整性的良好体现,其中最为关键的就是数据的完整性,它是各个方面得以安全、完整实现的基础。
2 需求分析
2.1 需求陈述
“一起来”软件,开始时,会有向导,之后用户可以注册,之后可以登录,登录之后,首先确定你的地理位置,然后你可以自由发布活动,等待别人响应,你可以是设置活动等待时间,等到时间设置完成的时候,活动自动失效,并且每人可以发布5个项目,之后就不可以发布,以保证活动质量。同时,你可以录入自己的兴趣爱好,保存在个人资料里,并且你可以自由修改它。用户同时还可以自由应邀别的用户创建的活动,并且在活动那个应邀后未参加时,活动那个创建者可以举报不守信用的用户,信用值降低。用户不注册时,向他展示他附近的活动,但是不具有创建活动的权限。
2.2 操作用例
“登录”用例文档
用例名称 |
登录 |
简要描述 |
用户利用该用例登录系统,通过身份认证后获得相应的操作权限 |
参与者 |
App使用者 |
涉众 |
用户:通过身份验证,并获得相应的权限 |
相关用例 |
无 |
前置条件 |
已经看完或跳过向导 |
后置条件 |
如果登录成功,则显示相应权限的操作界面 |
基本时间流
(1) 用例起始于用户需要登录到该系统
(2) 系统显示向导界面,并要求用户输入用户名和密码
(3) 用户输入用户名和密码
(4) 系统验证用户名和密码,允许用户登录系统(A-1)
(5) 系统根据用户类型启动不同的主操作界面
备选事件流
A-1用户名错误或密码错误
(1)系统显示用户名错误或密码错误的提示信息,并进入第(2)步
(2)用户可以重新输入用户名和密码(B-1),也可以选择结束该用例
补充约束-业务规则
B-1系统允许用户重试三次登录操作,超过三次后系统自动结束,不允许用户重试
补充约束-非功能需求
安全性:密码应该采用加密的方式存储,有关密码的算法待定
待解决问题
关于用户名和密码的管理和维护功能还需要进一步明确
2.3 功能分析划分
2.3.1 用户注册登录
用户在开始跳过向导时便有注册或登录界面,提供昵称,手机号,年龄,邮箱注册,后期可以加入验证码验证。
2.3.2 用户管理
网站后台管理,能够让注册用户显示,对用户进行添加,删除,修改,查询操作。
2.3.3 发布活动
用户点击发布活动后,可以弹出一个框,包含发布活动的名称,时间,地点。
2.3.4 修改活动
用户可以在状态看到自己发布的活动的状态,后面会有删除和修改的按钮,点击删除会弹出确认对话框,并且活动时间的前20分钟不能删除
2.3.5 查询活动
用户可以点击搜索框搜索现有的活动,并且决定是否应答。
2.3.6 删除活动
点击修改按钮,用户可以活动名称,时间,地点。同样的,活动开始的前20分钟不可删除。
2.3.7 应答活动
用户可以在活动广场看到基于地理位置的活动分布,点击活动,可以选择应答。应答后,在个人信息界面可以看到已应答的活动。可以在活动开始前40分钟取消应答。
2.5 运行环境
采用html5页面显示,可以很方便的扩展到android和ios。所以运行环境为:
一个电脑或手机;
电脑上的浏览器为chrome,火狐或者IE版大于9;
3 总体设计
3.1 系统建模
3.1.1 层次方框图
3.1.2 ER图(实体-联系图)
3.1.3 类图设计
3.2 接口设计
3.2.1 内部接口设计
接口主要存在数据库操作方面,因为不同企业不同时间采用的数据库不同,所以数据库操作做成接口方便以后的更改和维护。
3.2.2 登录界面设计
3.2.4 注册界面设计
3.2.4 主页面设计
3.3 数据库结构设计
3.3.1 数据库E-R图
同上ER图
3.3.2 数据库逻辑设计
User数据库设计
序号 |
字段名 |
类型 |
长度 |
默认值 |
允许空 |
主键 |
备注 |
1 |
name |
string |
20 |
null |
不允许 |
是 |
|
2 |
age |
int |
4 |
null |
允许 |
否 |
|
3 |
Phone |
int |
15 |
null |
不允许 |
否 |
|
4 |
|
string |
20 |
null |
不允许 |
否 |
|
5 |
credit |
int |
20 |
null |
允许 |
否 |
|
Activity数据库设计、
序号 |
字段名 |
类型 |
长度 |
默认值 |
允许空 |
主键 |
备注 |
1 |
name |
varchar |
20 |
null |
不允许 |
是 |
|
2 |
time |
varchar |
20 |
null |
不允许 |
否 |
|
3 |
loc |
varchar |
20 |
null |
不允许 |
否 |
|
4 |
creator |
varchar |
20 |
null |
不允许 |
否 |
|
2.5 出错处理
调试错误:如果出错呢,首先查阅日志,之后根据日志解决相应问题,如果没有日志,则需要自己对网站后台进行调试。
用户访问错误:用户访问错误的话,会跳转到error.jsp页面,显示响应错误代码。如404,500等等。引导用户检查错误。
2.6 安全保密设计
数据库的安全保密暂时不了解具体的工作原理,有待进一步学习。
4 实现
4.1 编码
4.1.1 代码约定
1. 文件编码 源文件编码格式为UTF-8。
2. 包名使用小写字母
3. import不要使用通配符即,不要出现类似这样的import语句import Java.util.*;
4. 列长限制 一个项目可以选择一行80个字符或100个字符的列限制,超出列长限制时换行,换行时缩进至少4个空格,缩进不要用tab。
5. 注释 注释应少而精,代码的关键处应该有注释, 注释不能误导读者。
6. 变量声明每次只声明一个变量,不要使用组合声明,比如int a, b;
需要变量时才声明,并尽快进行初始化。
7. 命名约定 命名应该:见名知意、简洁,避免拼音与英文混用。命名风格:
类名以UpperCamelCase风格编写,非常量字段名、方法名、参数名、局部变量名以lowerCamelCase风格编写,常量名以CONSTANT_CASE风格编写
8. 类成员顺序
每个类应该以某种逻辑去排序它的成员,维护者应该要能解释这种排序逻辑。比如,新的方法不能总是习惯性地添加到类的结尾。
5.1.2 代码编写原则
1, 慎用System.out.println(),使用log而不是System.out.println()
2, 使用大括号(即使是可选的) 大括号与if, else, for, do, while语句一起使用,即使只有一条语句(或是空),也应该把大括号写上。
3, 减少代码嵌套 代码嵌套层次达3层以上时,一般人理解起来都会困难。
减少嵌套的方法有很多:(1)合并条件;(2)利用return以省略后面的else;(3)使用子方法
4, 异常处理 捕获的异常不能忽视,典型的响应方式是打印日志
4.2 测试要点
4.2.1 登录测试要点
登录测试要点主要分以下13点:
1 什么都不输入,点击提交按钮,看提示信息。
2输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。
3 输入错误的用户名或者密码,
4 验证登录会失败,并且提示相应的错误信息。
5 登录成功后能否能否跳转到正确的页面
6 用户名和密码,如果太短或者太长,应该怎么处理
7 用户名和密码中有特殊字符(比如空格),和其他非英文的情况
记住用户名的功能
8 登录失败后,不能记录密码的功能
9 用户名和密码前后有空格的处理
10 密码是否加密显示(星号圆点等)
11 牵扯到验证码的,还要考虑文字是否扭曲过度导致辨认难度大,考虑颜色(色盲使用者),刷新或换一个按钮是否好用
12 登录页面中的注册、忘记密码,登出用另一帐号登录等链接是否正确
13 输入密码的时候,大写键盘开启的时候要有提示信息。
4.2.2 主界面测试要点
一、输入框
1、字符型输入框:
(1)字符型输入框:英文全角、英文半角、数字、空或者空格、特殊字符“~!@# ¥%……&*?[]{}”特别要注意单引号和&符号。禁止直接输入特殊字符时,使用“粘贴、拷贝”功能尝试输入。
(2)长度检查:最小长度、最大长度、最小长度-1、最大长度+1、输入超工字符比如把整个文章拷贝过去。 (3)空格检查:输入的字符间有空格、字符前有空格、字符后有空格、字符前后有空格。
(4)多行文本框输入:允许回车换行、保存后再显示能够保存输入的格式、仅输入回车换行,检查能否正确保存(若能,检查保存结果,若不能,查看是否有正常 提示)
(5)安全性检查:输入特殊字符串 (null,NULL,,JavaScript,<script>,</script>,<title>,<html>,<td>)、 输入脚本函数(<script>alert("abc")</script>)、 doucment.write("abc")、<b>hello</b>)
2、数值型输入框:
(1)边界值:最大值、最小值、最大值+1、最小值-1
(2)位数:最小位数、最大位数、最小位数-1最大位数+1、输入超长值、输入整数
(3)异常值、特殊字符:输入空白(NULL)、空格或"~!@#$%^&*()_+{}|[]\:"<>?;',./?;:'-= 等可能导致系统错误的字符、禁止直接输入特殊字符时,尝试使用粘贴拷贝查看是否能正常提交、word中的特殊功能,通过剪贴板拷贝到输入框,分页符,分节 符类似公式的上下标等、数值的特殊符号如∑,㏒,㏑,∏,+,-等、
输入负整数、负小数、分数、输入字母或汉字、小数(小数前0点舍去的情况,多个小数点的情况)、首位为0的数字如01、02、科学计数法是否支持1.0E2、全角数字与半角数字、数字与字母混合、16进制,8进制数值、货币型输入(允许小数点后面几位)、
(4)安全性检查:不能直接输入就copy
3、日期型输入框:
(1)合法性检查:(输入0日、1日、32日)、月输入[1、3、5、7、8、10、12]、日输入[31]、月输入[4、6、9、11]、日输入[30][31]、输入非闰年,月输入[2],日期输入[28、29]、输入闰年,月输入[2]、日期输入[29、30]、月输入[0、1、12、13]
(2)异常值、特殊字符:输入空白或NULL、输入~!@#¥%……&*(){}[]等可能导致系统错误的字符
(3)安全性检查:不能直接输入,就copy
二、搜索功能
若查询条件为输入框,则参考输入框对应类型的测试方法
1、功能实现:
(1)如果支持模糊查询,搜索名称中任意一个字符是否能搜索到
(2)比较长的名称是否能查到
(3)输入系统中不存在的与之匹配的条件
(4)用户进行查询操作时,一般情况是不进行查询条件的清空,除非需求特殊说明。
2、组合测试:
(1)不同查询条件之间来回选择,是否出现页面错误(单选框和多选框最容易出错)
(2)测试多个查询条件时,要注意查询条件的组合测试,可能不同组合的测试会报错。
三、添加、修改功能
1、特殊键:
(1)是否支持Tab键
(2)是否支持回车键
2、提示信息:
(1)不符合要求的地方是否有错误提示
3、唯一性:
(1)字段唯一的,是否可以重复添加,添加后是否能修改为已存在的字段(字段包括区分大小写以及在输入的内容前后输入空格,保存后,数据是否真的插入到数据库中,注意保存后数据的正确性)
4、数据 正确性:
(1)对编辑页的每个编辑项进行修改,点击保存,是否可以保存成功,检查想关联的数据是否得到更新。(2)进行必填项检查(即是否给出提示以及提 示后是否依然把数据存到数据库中;是否提示后出现页码错乱等)
(3)是否能够连续添加(针对特殊情况)
(4)在编辑的时候,注意编辑项的长度限制,有时在 添加的时候有,在编辑的时候却没有(注意要添加和修改规则是否一致)
(5)对于有图片上传功能的编辑框,若不上传图片,查看编辑页面时是否显示有默认的图 片,若上传图片,查看是否显示为上传图片
(6)修改后增加数据后,特别要注意查询页面的数据是否及时更新,特别是在首页时要注意数据的更新。 (7)提交数据时,连续多次点击,查看系统会不会连续增加几条相同的数据或报错。
(8)若结果列表中没有记录或者没选择某条记录,点击修改按钮,系统会抛 异常。
四、删除功能
1、特殊键:
(1)是否支持Tab键
(2)是否支持回车键
2、提示信息:
(1)不选择任何信息,直接点击删除按钮,是否有提示
(2)删除某条信息时,应该有确认提示
3、数据 实现:
(1)是否能连续删除多个产品
(2)当只有一条数据时,是否可以删除成功
(3)删除一条数据后,是否可以添加相同的数据
(4)如系统支持批量删除,注意删除的信息是否正确
(5)如有全选,注意是否把所有的数据删除
(6)删除数据时,要注意相应查询页面的数据是否及时更新
(7)如删除的数据与其他业务数据关联,要注意其关联性(如删除部门信息时,部门下游员工,则应该给出提示)
(8)如果结果列表中没有记录或没有选择任何一条记录,点击删除按钮系统会报错。
五、注册、登陆模块
1、注册功能:
(1)注册时,设置密码为特殊版本号,检查登录时是否会报错
(2)注册成功后,页面应该以登陆状态跳转到首页或指定页面
(3)在注册信息中删除已输入的信息,检查是否可以注册成功。
2、登陆 功能:
(1)输入正确的用户名和正确的密码
(2)输入正确的用户名和错误的密码
(3)输入错误的用户名和正确的密码
(4)输入错误的用户名和错误的密码
(5)不输入用户名和密码(均为空格)
(6)只输入用户名,密码为空
(7)用户名为空,只输入密码
(8)输入正确的用户名和密码,但是不区分大小写
(8)用户名和密码包括特殊字符
(9)用户名和密码输入超长值
(10)已删除的用户名和密码
(11)登录时,当页面刷新或重新输入数据时,验证码是否更新
六、上传图片测试
1、功能 实现:
(1)文件类型正确、大小合适
(2)文件类型正确,大小不合适
(3)文件类型错误,大小合适
(4)文件类型和大小都合适,上传一个正在使用中的图片
(5)文件类型大小都合适,手动输入存在的图片地址来上传
(6)文件类型和大小都合适,输入不存在的图片地址来上传
(7)文件类型和大小都合适,输入图片名称来上传
(8)不选择文件直接点击上传,查看是否给出提示
(9)连续多次选择不同的文件,查看是否上传最后一次选择的文件
七、查询结果列表
1、功能 实现:
(1)列表、列宽是否合理
(2)列表数据太宽有没有提供横向滚动
(3)列表的列名有没有与内容对应
(4)列表的每列的列名是否描述的清晰
(5)列表是否把不必要的列都显示出来
(6)点击某列进行排序,是否会报错(点击查看每一页的排序是否正确)
(7)双击或单击某列信息,是否会报错
八、返回键检查
1、一条已经成功提交的记录,返回后再提交,是否做了处理
2、检查多次使用返回键的情况,在有返回键的地方,返回到原来的页面多次,查看是否会出错
九、回车键检查
1、在输入结果后,直接按回车键,看系统如何处理,是否会报错
十、刷新键检查
1、在Web系统中,使用刷新键,看系统如何处理,是否会报错
十一、直接URL链接检查
1、在Web系统中,在地址栏直接输入各个功能页面的URL地址,看系统如何处理
十二、其他
1、在测试时,与网络有关的步骤必须考虑到断网的情况
2、每个页面都有相应的Title
3、在测试的时候要考虑到页面出现滚动条时,滚动条上下滚动时,页面是否正常
4、URL不区分大小写
5、某个字段是唯一的,当多个用户并发点击产生该字段时,检查系统怎么处理
6、对于电子商务网站,当用户并发购买数量大于库存的数量时,系统如何处理
7、测试数据避免单纯输入“123”、“abc“之类的,让测试数据尽量接近实际
8、进行测试时,尽量不要用超级管理员进行测试,用新建的用户进行测试。测试人员尽量不要使用同一个用户进行测试
9、做功能测试的时候,也要注意系统的性能(如操作的响应时间、内存使用情况)
十三、界面和易用性测试
1、风格、样式、颜色是否协调
2、界面布局是否整齐、协调(保证全部显示出来的,尽量不要使用滚动条
3、界面操作、标题描述是否恰当(描述有歧义、注意是否有错别字)
4、操作是否符合人们的常规习惯(有没有把相似的功能的控件放在一起,方便操作)
5、提示界面是否符合规范(不应该显示英文的cancel、ok,应该显示中文的确定等)
6、界面中各个控件是否对齐
7、日期控件是否可编辑
8、日期控件的长度是否合理,以修改时可以把时间全部显示出来为准
9、查询结果列表列宽是否合理、标签描述是否合理
10、查询结果列表太宽没有横向滚动提示
11、对于信息比较长的文本,文本框有没有提供自动竖直滚动条
12、数据录入控件是否方便
13、有没有支持Tab键,键的顺序要有条理,不乱跳
14、有没有提供相关的热键
15、控件的提示语描述是否正确
16、模块调用是否统一,相同的模块是否调用同一个界面
17、用滚动条移动页面时,页面的控件是否显示正常
18、日期的正确格式应该是XXXX-XX-XX或XXXX-XX-XXXX:XX:XX
19、页面是否有多余按钮或标签
20、窗口标题或图标是否与菜单栏的统一
21、窗口的最大化、最小化是否能正确切换
22、对于正常的功能,用户可以不必阅读用户手册就能使用
23、执行风险操作时,有确认、删除等提示吗
24、操作顺序是否合理
十四、兼容性测试
兼容性测试不只是指界面在不同操作系统或浏览器下的兼容,有些功能方面的测试,也要考虑到兼容性,比如涉及到ajax、jQuery、javascript等技术的,都要考虑到不同浏览器下的兼容性问题。
十五、链接测试
主要是保证链接的可用性和正确性,它也是网站测试中比较重要的一个方面。
十六、业务流程测试
业务流程,一般会涉及到多个模块的数据,所以在对业务流程测试时,首先要保证单个模块功能的正确性,其次就要对各个模块间传递的数据进行测试,这往往是容易出现问题的地方,测试时一定要设计不同的数据进行测试。
十七、安全性测试
(1)SQL注入(登陆页面)
(2)XSS跨网站脚本攻击:程序或数据库没有对一些特殊字符进行过滤或处理,导致用户所输入的一些破坏性的脚本语句能够直接写进数据库中,浏览器会直接执行这些脚本语句,破坏网站的正常显示,或网站用户的信息被盗,构造脚本语句时,要保证脚本的完整性。
document.write("abc")
<script>alter("abc")</script>
(3)URL地址后面随便输入一些符号
4.3 测试结果和总结
5 维护
5.1 维护方法
一、入侵检测和数据备份
(一)入侵检测工作
作为服务器的日常管理,入侵检测是一项非常重要的工作,在平常的检测过程中,主要包含日常的服务器安全例行检查和遭到入侵时的入侵检查,也就是分为在入侵进行时的安全检查和在入侵前后的安全检查。系统的安全性遵循木桶原理,木桶原理指的是:一个木桶由许多块木板组成,如果组成木桶的这些木板长短不一,那么这个木桶的最大容量不取决于长的木板,而取决于最短的那块木板。应用到安全方面也就是说系统的安全性取决于系统中最脆弱的地方,这些地方是日常的安全检测的重点所在。
(二)数据备份和数据恢复
数据备份工作大致如下: 1、每月备份一次系统数据。
2、备份系统后的两周单独备份一次应用程序数据,主要包括IIS、serv-u、数据库等数据。
3、确保备份数据的安全,并分类放置这些数据备份。因基本上采用的都是全备份方法,对于数据的保留周期可以只保留该次备份和上次备份数据两份即可。
数据恢复工作:
1、系统崩溃或遇到其他不可恢复系统正常状态情况时,先对上次系统备份后发生的一些更改事件如应用程序、安全策略等的设置做好备份,恢复完系统后再恢复这些更改。
2、应用程序等出错采用最近一次的备份数据恢复相关内容。
5.2 维护文档
1 维护政策简介
2 维护内容
2.1 网站数据备份
2.2 网站杀毒
2.3 垃圾碎片清理
2.4 网站攻击抵御
2.5 网站灾难恢复
2.6 对使用者与管理员进行培训
2.7 维护日志的定制
2.8 服务器系统优化
2.9 网站优化
2.10 网站内容及文字修改
2.11 图片、flash 等修改与设计
2.12 网站页面及模块位置调整
2.13 网站功能模块修改与新功能开发
2.14 网页防篡改
2.15 Web 应用防火墙
2.16 网站流量报告
2.17 网站关键字分析与管理
2.18 Seo 推广
2.19 网站运行托管管理
2.20 域名与服务器空间监控
3 服务方式
3.1 电话支持服务
3.2 远程支持服务
3.3 现场支持服务
3.4 定期/非定期报告服务
4 维护报告
4.1 例行维护工作报告
4.2 BUG 及问题解决报告
4.3 网站流量统计报告
4.4 Seo 推广报告
4.5 网站运营管理报告
4.6 月度/季度/半年/年度维护报告
4.7 其他客户需要提供的报告
5 符合性声明
5.3 功能拓展方法
功能拓展直接添加相应功能的页面或者绑定js触发事件。整体系统应用架构事springMVC架构,整体web应用耦合度较低,功能拓展相对简单。