测试计划、过程和结果
后端单元测试
助教可以在这里查看测试代码。我们对所有接口设计了单元测试,结果:全部通过。
后端压力测试
测试结果
我们对每个接口进行了压力测试,助教可以在gitlab进行查看详细结果文件。这里展示出我们得到的平均数据。
测试所用时间: | 30 seconds |
完成请求量: | 1000 |
失败请求数目: | 0 |
成功请求数量: | 1000 |
总传输数量: | 425000 bytes |
吞吐率: | 29.50 |
传输速率: | 12.24 kb/s received |
连接时长 | 26 | 1832 | 5836 |
处理时长 | 500 | 1381 | 248 |
总时长 | 526 | 3213 | 6084 |
指标解释
- 吞吐率(Requests per second)
- 服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
- 计算公式:总请求数 / 处理完成这些请求数所花费的时间,即Request per second = Complete requests / Time taken for tests
- 并发连接数(The number of concurrent connections)
- 并发连接数指的是某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。
- 并发用户数(The number of concurrent users,Concurrency Level)
- 要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。在HTTP/1.1下,IE7支持两个并发连接,IE8支持6个并发连接,FireFox3支持4个并发连接,所以相应的,我们的并发用户数就得除以这个基数。
- 服务器平均请求等待时间(Time per request: across all concurrent requests)
- 计算公式:处理完成所有请求数所花费的时间 / 总请求数,即Time taken for / testsComplete requests是吞吐率的倒数。
前端测试
授权登录与权限检查
- 当且仅当用户同意授权登录我们的小程序时,才能使用我们的小程序。测试通过。
- alpha版中,我们只有游客这一种登录方式,暂时还没有北航学生身份认证和社团管理员角色,因此相当于只有一种用户。所有功能也都暂时没有权限限制,无需检查。
功能测试
对三个方面进行了测试:
- 页面内部功能测试,按照下表中的功能树进行检查。
- 页面之间互相影响的测试点,主要是社团和活动的关注状态,以及活动的总关注度。
- 页面跳转和页面栈。
授权登录 | 1.授权登录 | 1.用户第一次登录时,当且仅当用户点击了授权登录按钮并同意授权后,才可跳转至主页面 2.授权登录后可以获取用户的微信昵称和头像并录入数据库。 3.用户非第一次登录时,无需点击授权登录按钮便会立即重新登录。 |
新闻 | 1.轮播展示关注度前4的活动横版海报,点击能跳转活动详情 2.列表显示新闻,即接入本小程序的公众号的文章,点击新闻跳转详情。 3.新闻列表下拉能够刷新 4.按类别筛选新闻 5.点击新闻对应的社团跳转社团信息页。 | 1.滑块视图容器,装载4张热度最高的活动卡片。每隔2s自动切换活动卡片,向左/右滑动能切换卡片。 2.点击活动卡片,可以跳转至活动详情,返回正确 3.新闻仅显示接入(即关联)本小程序的公众号的文章 4.新闻时间显示分段:(1)当天的新闻显示“今天”。(2)昨天至7天前的新闻,显示“x天前”,x是1~7的整数。(3)其余时间的新闻,显示月份和日期。 5.新闻按“时间”从近到远排序。 6.新闻类别筛选正确,且能返回“全部类别”状态。类别筛选的标准除了6个社团类别,还包括“全部类别”、“我的关注”类别。 7.点击新闻能正确跳转公众号文章,显示成功,返回正确 8.点击社团能正确跳转至社团信息页面,返回正确 |
新闻详情 | 1.展示文章内容 2.能留言、“在看” | 1.展示文章内容正确,返回正确 2.能能留言、“在看”,能更新该文章的阅读量 |
活动 | 1.按热度非升序排列展示活动列表 2.点击跳转活动详情 3.关注和取消关注活动 | 1.按热度非升序排列展示活动列表 2.点击跳转活动详情,返回正确 3.关注和取消关注活动正确,并弹窗提示用户。 |
活动详情 | 1.展示活动详细信息 2.点击主办方跳转社团详情 3.关注和取消关注活动 | 1.正确展示活动详细信息,只展示尚未开始的活动。 2.点击主办方正确跳转社团详情,返回正确 3.关注和取消关注活动正确,并弹窗提示用户。 |
社团 | 1.能搜索社团 2.列表显示我关注的社团 3.分类显示社团 4.点击类别跳转至该类别的社团列表页 5.点击社团跳转详情 | 1.可以用关键字搜索社团,没有则提示“无”. 2.列表显示我关注的社团,若无则提示“您尚未关注任何社团”。 3.分类显示社团 4.点击类别正确跳转至该类别的社团列表页,返回正确 5.点击关注的社团正确跳转社团详情页,返回正确。 |
某类别社团 | 1.列表显示该类别下的社团 2.点击社团跳转详情 | 1.列表显示该类别下的社团 2.点击社团跳转详情,返回正确。 |
社团信息 | 1.展示社团信息 2.可以关注和取消关注社团 | 1.正确展示社团的信息,某一项没有的不显示。 2.可以一键复制手机号、公众号。 3.正确显示关注状态,可以改变关注状态 4.除了社团简介还包括社团新闻 和 社团活动,这两部分的要求与 新闻页、活动页一致。 |
我关注的社团 | 1.列表显示用户关注的社团,点击跳转详情 | 1.列表显示用户关注的社团,点击跳转详情 |
我关注的活动 | 1.列表显示用户关注的活动,点击跳转详情 2.可以取消关注活动 | 1.列表显示用户关注的活动,点击跳转详情 2.可以取消关注活动,取消关注后立即在本页消失并弹窗提示。 3.若没有关注任何活动,则显示“您尚未关注任何活动” |
兼容性测试
- 手机操作系统:对Android手机和IOS手机都进行了测试。
- 微信版本:对微信版本7.0/6.6/6.5进行了测试。
性能测试
性能测试不是测试小程序的重点,优先级较低。小程序的性能和WEB的性能测试非常类似,性能的常用指标也大致相同。包括页面的白屏时间,首屏时间,资源占用,页面渲染时间,帧率等等。
只需要小程序开发版中打开性能窗口即可看到各页面的性能数据,下表为一次测试时所有页面的性能数据:
新闻 | 0 | 293 | 580 | 1245 | 62 | 0.7 |
活动 | 0 | 365 | 194 | 1245 | 35 | 0.7 |
活动详情 | 0 | 363 | 106 | 1245 | 114 | 0.7 |
社团 | 0 | 404 | 201 | 1245 | 95 | 0.7 |
某类别社团 | 0 | 405 | 124 | 1245 | 49 | 0.7 |
某社团信息页 | 0 | 432 | 311 | 1245 | 166 | 0.7 |
新闻详情 | 0 | 459 | 135 | 1245 | 42 | 0.7 |
我的 | 0 | 433 | 159 | 1245 | 66 | 0.7 |
关注的社团页 | 0 | 453 | 158 | 1245 | 68 | 0.7 |
关注的活动 | 0 | 469 | 131 | 1245 | 47 | 0.7 |
关于我们 | 0 | 481 | 184 | 1245 | 81 | 0.7 |
下图为一个页面的性能数据截图:
回答课程组问题
测试中发现的bug
后端:
有些新闻详情页无法跳转 | 该新闻的公众号尚未关联小程序,应给每个社团加一个标识属性,标识是否关联了本小程序,并在接口代码中检查 | 是 |
筛选某类别的新闻,无法正确刷新 | 在筛选功能下,前端无法实现正确刷新,需要后端改接口 | 是 |
有个新闻无法跳转 | 数据录入时多加了一个空格 | 是 |
活动时间显示格式错误 | 前端不便于处理,交给后端处理,直接返回要显示的时间字符串 | 是 |
前端:
从社团信息页面关注某活动之后,返回到活动列表页,没有更新关注度 | 活动列表从后端获取信息的操作是在onload函数中,应放在onshow中 | 是 |
活动海报无法点击全屏放大显示 | 需要绑定使用wx.previewImage | 是,但是本地图片无法全屏预览,之后会将本地图片放到服务器上 |
真机上关闭调试之后无法登录 | 小程序代码中使用的服务器域名与微信平台上配置的服务器域名不同 | 是 |
活动默认图片显示错误 | 本地文件路径写错了 | 是 |
社联显示了星级 | 社联被纳入社团表格中。应由前端处理,判断是否为综合类别,是则不显示星级 | 是 |
场景测试
- 萌新:
姓名 | 萌新M |
用户身份 | 某学院大一新生 |
用户情况 | 刚入学,对于各个社团的情况不大了解 |
用户需求 | 希望能方便地查看各个社团的介绍和活动,同时有让自己加入感兴趣的社团的渠道。 |
用户痛点 | 目前找不到集北航社团咨询与一身的平台。社团的公众号太分散,一个个去关注和查看文章十分麻烦;社联推送的社团介绍也比较有限。 |
软件对应功能 | 按照社团类别归置社团,同时提供搜索功能,便于用户找到自己感兴趣的社团;每个社团都有简介、新闻和活动,便于用户浏览社团的信息和动态;多数社团提供微信公众号名称和QQ群号,用户可以复制后进行关注和加群。 |
预期使用场景 | 百团大战马上要来了,萌新M想率先了解各个社团的情况,于是打开了“北航社团帮”小程序,浏览了自己感兴趣的社团类别(比如体育类)。在浏览了A社团的介绍、新闻和活动后,他觉得A社团很符合自己的兴趣,于是他关注了该社团的公众号,同时加入了该社团的QQ群,感受着老社员们对萌新M的热烈欢迎。 |
- 二狗:
姓名 | 二狗G |
用户身份 | 某学院大二学生 |
用户情况 | 因为特别喜欢参加A社的社内活动,所以二狗G加入了A社团,积极参加A社举办的活动;同时对于其它社团有趣的活动也蛮有兴趣。 |
用户需求 | 希望能有一个平台将各个社团的活动集中展示,方便他获取社团活动的信息。 |
用户痛点 | 虽然只加入了A社,但是二狗G对于BCD社的活动也很有兴趣,但是这些活动只能通过刷朋友圈,或者主动查看公众号文章的方式来获取信息,十分不便。 |
软件对应功能 | 主页轮播关注度最高的4个活动的海报,吸引用户眼球;活动页按照关注度降序排列活动,用户可以方便地看到活动的简介,并点进去查看详情,查看活动的时间、介绍、报名方式等。 |
预期使用场景 | 二狗G觉得自己最近有点宅,想看看有没有什么活动可以参加,他打开“北航社团帮”小程序,哇塞,B社居然邀请到了知名相声演员郭德纲来讲相声,必须安排!得知报名方式后,他进行了报名,并在小本本上记录活动的时间,然后他心满意足地放下手机,吹起口哨继续debug。 |
测试矩阵
Android 9 | 7.0.3 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 一般 |
IOS 12.2 | 7.0.3 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 较慢 |
Android 8 | 7.0.3 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 较慢 |
IOS 12.1 | 7.0.3 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 一般 |
Android 9 | 7.0.4 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 较慢 |
IOS 12.2 | 7.0.4 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 较慢 |
出口条件
- 兼容性:对Android和IOS操作系统、不同版本的微信都兼容。
- 易用性:底部导航易用,功能入口明显,交互结果的弹窗提示等。
- 功能正确性:各功能正确,页面跳转正确。