编号 |
功能名称 |
功能描述 |
输入/需要 |
输出/结果 |
发现问题 |
测试结果 |
测试人 |
1 |
注册 |
输入注册要求填写信息,注册一个账号,将信息正确填入数据库 |
username√用户名;tel电话号码;email√; password√;code√ |
token |
访问接口,没有response |
不通过 |
sun |
2 |
登录 |
按要求填写账户信息,如果正确,登录;不正确,不登陆并给出相应提示 |
- |
- |
- |
通过 |
sun |
3 |
登出 |
登出 |
token |
是否成功登出的信息 |
不管token有效无效,都返回了200未登录 |
不通过 |
sun |
4 |
用户信息 |
在登录状态下,得到某用户的公开基本信息 |
- |
- |
- |
通过 |
sun |
5 |
修改用户名 |
在登录状态下,修改自己的用户名,合乎规则且不与已存在的用户名重复 |
- |
- |
- |
不通过 |
sun |
6 |
修改密码 |
在登录状态下,在符合条件下,修改自己的密码 |
- |
- |
- |
- |
sun |
7 |
修改手机号 |
在登录状态下,在符合条件下,修改自己的手机号 |
|
|
|
|
|
8 |
修改邮箱 |
在登录状态下,在符合条件下,修改自己的邮箱,并且需要再次通过验证 |
|
|
|
|
|
9 |
发布公告 |
在登录状态下,发布公告 |
- |
- |
- |
不通过 |
sun |
10 |
公告详情 |
查看某一id的公告的完整内容 |
- |
- |
超时,Unhandled promise rejection |
不通过 |
sun |
11 |
最新公告 |
|
|
|
|
|
|
12 |
分类公告 |
|
|
|
|
|
|
13 |
用户公告 |
|
|
|
|
|
|
14 |
关注人的公告 |
|
|
|
|
|
|
15 |
实验室信息 |
登录状态下,获取id对应的实验室信息 |
|
|
|
|
|
16 |
编辑实验室信息 |
在登录状态下,身份认证为导师,编写实验室信息 |
- |
- |
这个接口缺失 |
不通过 |
|
17 |
添加评价 |
其他用户对某身份为导师的用户的评价 |
|
|
|
|
|
18 |
评价 |
在登录状态下,对某一身份为导师的用户进行评价 |
|
|
|
|
|
19 |
关注 |
在登录状态下,关注某一id的用户 |
- |
- |
- |
不通过 |
sun |
20 |
取消关注 |
在登录状态下,取消一个已关注用户的关注 |
- |
- |
- |
不通过 |
sun |
21 |
我的关注 |
在登录状态下,得到我关注的人的列表 |
|
|
|
|
|
22 |
收藏 |
在登录状态下,收藏一篇公告 |
- |
- |
- |
不通过 |
sun |
23 |
取消收藏 |
在登录状态下,取消一篇已收藏公告的收藏 |
- |
- |
- |
不通过 |
sun |
24 |
我的收藏 |
在登录状态下,得到我收藏的公告的列表 |
|
|
|
|
|
25 |
搜索用户 |
|
|
|
|
|
|
26 |
搜索学校 |
|
|
|
|
|
|
27 |
搜索院系 |
|
|
|
|
|
|
28 |
显示公告分类 |
|
|
|
|
|
|
以下API 的BASEURL为 http://serveip:serverport/api/wx,使用都需要将下面的相对路径加上该前缀作为访问接口
返回JSON 格式为{meta:{code:, message}, data:} code为0说明正常返回结果,data为返回的数据
token 是指header上设定 Authorization 为认证时返回的 token
输入条件 |
有效等价类 |
无效等价类 |
code |
有效 |
过期或者无法识别 |
username |
符合规则且不在数据库中 |
不符合规则或与数据库中已有的用户名重复 |
password |
符合规则 |
不符合规则 |
tel |
符合规则或为空 |
不符合规则 |
email |
符合规则 |
不符合规则 |
编号 |
输入/需要 |
预期结果 |
实验结果 |
测试结果 |
测试人 |
1.1 |
{code:获取的code,username:未注册的符合规则的用户名,password:非空的符合规则的用户名,tel:符合规则的电话号码,email:符合规则的邮箱} |
注册成功,返回token |
Could not get any response |
不通过 |
sun |
1.2 |
{code:空,username:未注册的符合规则的用户名,password:非空的符合规则的用户名,tel:符合规则的电话号码,email:符合规则的邮箱} |
注册失败,返回错误信息 |
Could not get any response |
不通过 |
sun |
1.3 |
{code:使用过的code,username:未注册的符合规则的用户名,password:非空的符合规则的用户名,tel:符合规则的电话号码,email:符合规则的邮箱} |
注册失败,返回错误信息 |
Could not get any response |
不通过 |
sun |
1.4 |
{code:随机字符串,username:未注册的符合规则的用户名,password:非空的符合规则的用户名,tel:符合规则的电话号码,email:符合规则的邮箱} |
注册失败,返回错误信息 |
Could not get any response |
不通过 |
sun |
1.5 |
{code:获取的code,username:已注册的符合规则的用户名,password:非空的符合规则的用户名,tel:符合规则的电话号码,email:符合规则的邮箱} |
注册失败,返回错误信息 |
Could not get any response |
不通过 |
sun |
1.6 |
{code:获取的code,username:空,password:非空的符合规则的用户名,tel:符合规则的电话号码,email:符合规则的邮箱} |
|
|
|
|
1.7 |
{code:获取的code,username:长度为5的用户名,password:非空的符合规则的用户名,tel:符合规则的电话号码,email:符合规则的邮箱} |
|
|
|
|
1.8 |
{code:获取的code,username:已注册的符合规则的用户名,password:非空的符合规则的用户名,tel:符合规则的电话号码,email:符合规则的邮箱} |
|
|
|
|
1.9|
1.10|
1.11|
输入条件 |
有效等价类 |
无效等价类 |
code |
有效刚生成 |
过期的无效的 |
username |
在数据库中 |
不在数据库中 |
password |
与数据库中对应的密码一致 |
不一致 |
编号 |
输入/需要 |
预期结果 |
实验结果 |
测试结果 |
测试人 |
2.1 |
{code:从小程序开发上获取一个code,username:已注册用户名,password:对应的密码} |
登录成功并返回token |
登录成功并返回token |
通过 |
sun |
2.2 |
{code:空,username:已注册用户名,password:对应的密码} |
登录失败,返回错误信息 |
"code": 1,"message": "invalid code, hints: [ req_id: CFnmta04032279 ]",登录失败 |
通过 |
sun |
2.2 |
{code:随机字符串,username:已注册用户名,password:对应的密码} |
登录失败,返回错误信息 |
"code": 1,"message": "invalid code, hints: [ req_id: jJh5Ua05022277 ]",登录失败 |
通过 |
sun |
2.3 |
{code:已使用过的code,username:已注册用户名,password:对应的密码} |
登录失败返回错误信息 |
"code": 1, "message": "code been used, hints: [ req_id: aXLvuA05912165 ]" |
通过 |
sun |
2.4 |
{code:从小程序开发上获取一个code,username:未注册用户名,password:随机密码} |
登录失败,返回错误信息 |
"code": 1, "message": "用户名或密码不正确" |
通过 |
sun |
2.5 |
{code:从小程序开发上获取一个code,username:已注册用户名,password:错误的密码} |
登录失败,返回错误信息 |
"code": 1,"message": "用户名或密码不正确" |
通过 |
sun |
输入条件 |
有效等价类 |
无效等价类 |
token |
未过期的能在redis中找到的token |
不能在redis中查询到的token |
编号 |
输入/需要 |
预期结果 |
实验结果 |
测试结果 |
测试人 |
3.1 |
有效的token |
登出成功,返回成功信息 |
"code": 1,"message": "您没有登陆!" |
不通过 |
sun |
3.2 |
token:空 |
登出失败,返回:未登录 |
{"code": 1,"message": "您没有登陆!"} |
通过 |
sun |
3.3 |
过期的token |
登出失败,返回:未登录或登录状态过期 |
{ "code": 1,"message": "您没有登陆!"} |
通过 |
sun |
127.0.0.1:3000/api/wx/users/me/info
127.0.0.1:3000/api/wx/users/id/info
{
"meta": {
"code": 0,
"message": "返回用户信息5c23372c3297c54a2c9a19cd"
},
"data": {
"username": "sun",
"email": "[email protected]",
"avatarUrl": "/public/imgs/avatar.jpg",
"bgUrl": "/public/imgs/bg.jpg",
"tel": "17600973501",
"motto": "黄河之水天上来",
"isadmin": true,
"verified": true,
"status": "1",
"weiXin": {
"unionId": "",
"_id": "5c2378113297c54a2c9a1a42",
"openId": "owQR45J4HGU8ts7wq_n_GcYNGoYU"
},
"userInfo": {
"role": "Visitor",
"gender": "undefined",
"description": "",
"school": "",
"department": "",
"institute": null,
"_id": "5c23372c3297c54a2c9a19ce",
"__v": 0,
"userId": "5c23372c3297c54a2c9a19cd"
},
"messages": [],
"comment": [],
"__v": 0
}
}
输入条件 |
有效等价类 |
无效等价类 |
id |
存在于数据库中的id或者me |
空或不在数据库中的id |
token |
有效的token |
无效的token或空 |
编号 |
输入/需要 |
预期结果 |
实验结果 |
测试结果 |
测试人 |
4.1 |
token:当前用户有效的token,id:me |
返回当前用户(我)的信息 |
正确返回了“我”用户信息 |
通过 |
sun |
4.2 |
token:当前用户有效的token,id:另一个用户的id |
返回该id用户的信息 |
正确返回了id用户的信息 |
通过 |
sun |
4.3 |
token:当前用户有效的token,id:当前用户的token |
返回当前用户(我)的信息 |
正确返回了“我”用户信息 |
通过 |
sun |
4.4 |
token:空,id:me |
401 Unauthorized |
401 Unauthorized |
通过 |
sun |
4.5 |
token:无效的token,id:一个用户的id |
401 Unauthorized |
401 Unauthorized |
通过 |
sun |
4.6 |
token:当前用户有效的token,id:不存在的id |
404 没有找到这个用户 |
404 "code": 2,"message": "没有该用户!" |
通过 |
sun |
PUT 127.0.0.1:3000/api/wx/users/me/name?name=<修改的用户名>
{
"meta": {
"code": 0,
"message": "sucess"
},
"data": {
"user": {
"username": "sun",
"password": "123456",=======>不应该出现
"email": "[email protected]",
"avatarUrl": "/public/imgs/avatar.jpg",
"bgUrl": "/public/imgs/bg.jpg",
"tel": "17600973501",
"motto": "黄河之水天上来",
"isadmin": true,
"verified": true,
"status": "1",
"weiXin": {
"unionId": "",
"_id": "5c2378113297c54a2c9a1a42",
"openId": "owQR45J4HGU8ts7wq_n_GcYNGoYU"
},
"userInfo": "5c23372c3297c54a2c9a19ce",
==================================================>下面的都不应该出现
"messages": [],
"comment": [],
"_id": "5c23372c3297c54a2c9a19cd",
"salt": "626e11889f684b9a07a65daf3589248a",
"hash": "ebc68cbf41ff05ab56ea45ac37ab590e1baeced21d526c0e7a75daecde24af3cc8912661a4a35421f75a661f146358063389ba39d69db8f6ca44eb260a17708fecc60cbc30fe45c989398fc36c683a6f06bc1b7349f0f7e845ba915c5babf9558b93a6cb88338f2b0f435d93be2df1b78e20cedcffc28c9b4ed6882ec2b94176db31237470c5b5e2e875f0595ff0e10d43d0f369d34791c2c6fc804799f929e16a8831940b05da7914ee77e79128b31eecb087d3cad64fd6ed1de502c3143179f32c5abb44f4a72e552e85cff9843c44366196251a4ad27101ade6b20c004f2a8e309f6bb913c23b448a347acadb2c4cd487046844c0266140356e360fcea1ca570190021e695a4110f669072507ee29146d609bd51775f2f45f31395c5bbd722aa1a6fc31b242241684407d5964074699a6a9e7d7b8e2109f7e3ac4901860beab1a1e063f1790ab2837882014d65b7382f4ede78711a61b27ba365cccc7fb252974aaa27cb7900177cbcc4ad64f01c60584a0bca7dd52b7ba26a547772ff6866023f84cb10049b598943b287792aee4d24d9bf5d9ae8cc6dd04bbb7d47ab7953f2c577527052c778dcb50a266e4d477ff74eace1d39bb26b148cb7ee2311d88fed351c04fee84c9538f991b2b4caa5098d7b026bc0668959ab1859e89ac2a24024e930744838d6e148a693c0f9a542cc343aec018fc8bb8a7d508f04f66d49b",
"__v": 0
}
}
}
输入条件 |
有效等价类 |
无效等价类 |
token |
有效token |
无效或空的token |
name |
符合规则的username,且不与数据库中的除自己以外的用户名重复 |
不符合规则的username,或与其他用户的用户名重复 |
编号 |
输入/需要 |
预期结果 |
实验结果 |
测试结果 |
测试人 |
5.1 |
token:有效,name:原先的用户名(即未修改) |
修改成功,返回信息以及更新后的用户简要信息 |
"code": 2,"message": "该用户名已经被占用!" |
不通过 |
sun |
5.2 |
token:有效,name:新的不重复的符合规则的用户名 |
修改成功,返回信息以及更新后的用户简要信息 |
200,显示修改成功,实际上没有正确修改 |
不通过 |
sun |
5.3 |
token:有效,name:空 |
修改失败,返回错误信息 |
200,修改成功,实际上没有任何修改 |
不通过 |
sun |
5.4 |
token:有效,name:与其他用户重复的用户名 |
修改失败,返回错误信息:用户名已经占用 |
400, "code": 2,"message": "该用户名已经被占用!" |
通过 |
sun |
5.5 |
token:有效,name:新的不重复的但是不符合规则的用户名 |
修改失败,返回错误信息:用户名不合规则 |
200,修改成功,但是实际上数据库中数据没有任何修改 |
不通过 |
sun |
5.6 |
token:空,name:新的不重复的符合规则的用户名 |
401,Unauthorized |
401,Unauthorized |
通过 |
sun |
5.7 |
token:无效,name:新的不重复的符合规则的用户名 |
401,Unauthorized |
401,Unauthorized |
通过 |
sun |
编号 |
输入/需要 |
预期结果 |
实验结果 |
测试结果 |
测试人 |
编号 |
输入/需要 |
预期结果 |
实验结果 |
测试结果 |
测试人 |
编号 |
输入/需要 |
预期结果 |
实验结果 |
测试结果 |
测试人 |
POST 127.0.0.1:3000/api/wx/content/post
输入条件 |
有效等价类 |
无效等价类 |
token |
有效 |
空或无效 |
title |
非空限定字数以内的字符串 |
空或超过字数的字符串 |
category |
已定义的类别的id |
空或非已定义类别的id |
description |
限定字数以内的字符串,或者空 |
超过字数的字符串 |
content |
非空限定字数以内的字符串 |
空或超过字数的字符串 |
编号 |
输入/需要 |
预期结果 |
实验结果 |
测试结果 |
测试人 |
9.1 |
token:空,title:"title1",category:"5c238c91aa73e50ff06d115a",description:"i am description",content:"一二三四五" |
401,Unauthorized |
401,Unauthorized |
通过 |
sun |
9.2 |
token:无效,title:"title1",category:"5c238c91aa73e50ff06d115a",description:"i am description",content:"一二三四五" |
401,Unauthorized |
401,Unauthorized |
通过 |
sun |
9.3 |
token:有效,title:"",category:"5c238c91aa73e50ff06d115a",description:"i am description",content:"一二三四五" |
发布失败,未输入标题 |
200, "code": 1,"message": "提交成功!",并且存入数据库 |
不通过 |
sun |
9.4 |
token:有效,title:刚超过字数的标题,category:"5c238c91aa73e50ff06d115a",description:"i am description",content:"一二三四五" |
发布失败,标题不合规则 |
|
|
|
9.5 |
token:有效,title:"title2",category:"",description:"i am description",content:"一二三四五" |
发布失败,未选定分类 |
"code": 1, "message": "提交成功!" |
不通过 |
sun |
9.6 |
token:有效,title:"title2",category:"sere2swq54t"(无效的id),description:"i am description",content:"一二三四五" |
发布失败,没有找到这个分类 |
"code": 1,"message": "提交成功!" |
不通过 |
sun |
9。7 |
token:有效,title:"title2",category:"5c238c91aa73e50ff06d115a"(有效的category 的id),description:"i am description",content:"一二三四五" |
发布成功,且能正确地存进数据库 |
发布成功,且能正确地存进数据库 |
通过 |
sun |
9.8 |
token:有效,title:"title2",category:"5c238c91aa73e50ff06d115a"(有效的category 的id),description:"",content:"一二三四五" |
发布成功,且能正确地存进数据库 |
"code": 1,"message": "提交成功!" |
不通过 |
sun |
9.9 |
token:有效,title:"title2",category:"5c238c91aa73e50ff06d115a"(有效的category 的id),description:超出字数的字符串,content:"一二三四五" |
发布失败,description字数超限 |
|
|
|
9.10 |
token:有效,title:"title2",category:"5c238c91aa73e50ff06d115a"(有效的category 的id),description:"dex",content:"" |
发布失败,content不能为空 |
"code": 1,"message": "提交成功!" |
不通过 |
sun |
127.0.0.1:3000/api/wx/views?contentid=
输入条件 |
有效等价类 |
无效等价类 |
notice的id |
非空,存在 |
空,不存在 |
编号 |
输入/需要 |
预期结果 |
实验结果 |
测试结果 |
测试人 |
10.1 |
id:空 |
404 |
超时,后台显示(node:20052) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): ReferenceError: marked is not defined |
不通过 |
sun |
10.2 |
id:不存在 |
404 |
超时,后台显示(node:20052) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): ReferenceError: marked is not defined |
不通过 |
sun |
10.3 |
id:有效 |
返回该公告的详细信息,包括作者的基本资料,notice的title,description,content,category |
超时,后台显示(node:20052) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): ReferenceError: marked is not defined |
不通过 |
sun |
127.0.0.1:3000/api/wx/labs/【id/me】/info
输入条件 |
有效等价类 |
无效等价类 |
token |
有效 |
空,无效 |
id |
存在的用户id |
空或不存在的用户id |
编号 |
输入/需要 |
预期结果 |
实验结果 |
测试结果 |
测试人 |
15.1 |
token:空,id:me |
401,Unauthorized |
401,Unauthorized |
通过 |
sun |
15.2 |
token:无效,id:me |
401,Unauthorized |
401,Unauthorized |
通过 |
sun |
15.3 |
token:有效,id:me |
|
|
|
|
15.4 |
token:有效,id:当前用户(我)的用户id |
|
|
|
|
15.5 |
token:有效,id:另一个用户的用户id |
|
|
|
|
15.6 |
token:有效,id:不存在的用户id |
404,没有该用户 |
404,"message": "Cast to ObjectId failed for value "45678fghhiuoi86y" at path "_id" for model "user"", |
不通过 |
sun |
--