array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 Alpha冲刺——测试 - 爱码网
这个作业属于哪个课程 <2020 春 W 班 (福州大学)>
这个作业要求在哪里 <作业要求>
团队名称 <旗山的骄傲>
这个作业的目标 <Alpha 冲刺>
作业正文 <作业正文>
其他参考文献 <《构建之法》>

前端

  • web 前台

    • 测试内容
    • 单元测试:使用 chorme 的插件 Frames per second、Component render 对内部 js 方法单元测试
    • 性能测试:使用 Vue.js Devtools v5.0 模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试
    • 测试人员
    • 221701418_王肃南
  • web 后台

    • 测试内容
    • 单元测试:使用 Jtest 对内部 js 方法单元测试
    • 性能测试:使用百度云第三方性能测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试,生成性能模拟报告
    • 测试人员
    • 221701420_程伟行
  • Android

    • 测试内容
    • 单元测试:使用 Espresso、Junit 对内部对应方法进行单元测试
    • 内存测试:使用 LeakCanary 分析内存泄漏
    • 测试人员
    • 221701414_黎家泽

后端

  • 后端 API 测试

    • 测试内容
    • API 测试:通过 Postman 对后端编写的所有 http(GET\POST)接口模块进行测试
    • 测试人员
    • 221701412_陈浩男、221701429 黄晓东、221701432 郑斯彬
  • 后端单元测试

    • 测试内容
    • API 测试:通过 Junit 对后端工具类对应方法进行测试
    • 测试人员
    • 221701432 郑斯彬
  • 后端框架(spring boot)单元测试

    • 测试内容
    • API 测试:通过 spring boot 的测试模块(spring-boot-starter-test 基于 junit)对后端框架(spring boot)的服务层进行单元测试
    • 测试人员
    • 221701412_陈浩男、221701432 郑斯彬
  • 后端性能测试

    • 测试内容
    • API 测试:使用 JProfiler 模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试
    • 测试人员
    • 221701429 黄晓东

part.02 测试工具选择和运用

前端

  • 测试工具选择

    • web 前台:chorme 的插件 Frames per second、Component render、Vue.js Devtools v5.0
    • web 后台:Jtest、百度云第三方性能测试工具
    • Android:Espresso、Junit、LeakCanary
  • 测试工具介绍

    • web 前台

      • chorme 的插件 Frames per second、Component render:chorme 的插件,可对 web 前端 js 代码进行单元测试,生成报告与可视化图标
      • Vue.js Devtools v5.0:vue 官方性能分析用的插件,可以模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试
    • web 后台

      • Jtest:jest 是 facebook 推出的一款测试框架,集成了 Mocha,chai,jsdom,sinon 等功能。
      • 百度云第三方性能测试工具:百度云提供的第三方服务,可对程序进行效能分析生成性能分析报告
    • Android

      • Espresso:Espresso 是谷歌大力推荐的一套测试框架,从 Android studio2.2 版本开始,google 就开始支持在 as 上 espresso 自动生成单元测试代码,Espresso 测试运行速度很快,它允许你在应用程序处于静止时操作和断言等,Espresso 面向那些认为自动化测试是开发声明周期的一部分的开发人员,并且虽然它可以被用作黑盒测试,但是熟悉代码库的人可以解锁 Espresso 的全部功能
      • Junit:JUnit 是一个 Java 语言的单元测试框架。它由 Kent Beck 和 Erich Gamma 建立,逐渐成为源于 Kent Beck 的 sUnit 的 xUnit 家族中最为成功的一个。 JUnit 有它自己的 JUnit 扩展生态圈。多数 Java 的开发环境都已经集成了 JUnit 作为单元测试的工具
      • LeakCanary:使用 MAT 来分析内存问题,有一些门槛,会有一些难度,并且效率也不是很高,对于一个内存泄漏问题,可能要进行多次排查和对比才能找到问题原因,为了能够简单迅速的发现内存泄漏,Square 公司基于 MAT 开源了 LeakCanary
  • 测试工具运用

    • web 前台

      • chorme 的插件 Frames per second、Component render:使用 chorme 的插件 Frames per second、Component render 对内部 js 方法单元测试
      • Vue.js Devtools v5.0:使用 Vue.js Devtools v5.0 模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试
    • web 后台

      • Jtest:使用 Jtest 对内部 js 方法单元测试
      • 百度云第三方性能测试工具:使用百度云第三方性能测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试,生成性能模拟报告
    • Android

      • Espresso:使用 Espresso 对内部对应方法进行单元测试
      • Junit:使用 Junit 对内部对应方法进行单元测试
      • LeakCanary:使用 LeakCanary 分析内存泄漏

后端

  • 测试工具选择

    • 后端 API 测试:Postman
    • 后端单元测试:Junit
    • 后端框架(spring boot)单元测试:spring-boot-starter-test
    • 后端性能测试:JProfiler
  • 测试工具介绍

    • 后端 API 测试

      • Postman:Postman 是一款功能强大的发送 HTTP 请求的 工具 ,常用于 web 开发、接口测试,使用非常方便
    • 后端单元测试

      • Junit:JUnit 是一个 Java 语言的单元测试框架。它由 Kent Beck 和 Erich Gamma 建立,逐渐成为源于 Kent Beck 的 sUnit 的 xUnit 家族中最为成功的一个。 JUnit 有它自己的 JUnit 扩展生态圈。多数 Java 的开发环境都已经集成了 JUnit 作为单元测试的工具
    • 后端框架(spring boot)单元测试

      • spring-boot-starter-test:Spring Boot 集成的 pring-boot-starter-test 是基于 JUnit 的单元测试工具。
    • 后端性能测试

      • JProfiler:JProfiler 是一个商业授权的 Java 剖析工具,由 EJ 技术有限公司,针对的 Java EE 和 Java SE 应用程序开发的,可模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试
  • 测试工具运用

    • 后端 API 测试

      • Postman:通过 Postman 对后端编写的所有 http(GET\POST)接口模块进行测试
    • 后端单元测试

      • Junit:通过 Junit 对后端工具类对应方法进行测试
    • 后端框架(spring boot)单元测试

      • spring-boot-starter-test:通过 spring boot 的测试模块(spring-boot-starter-test 基于 junit)对后端框架(spring boot)的服务层进行单元测试
    • 后端性能测试

      • JProfiler:使用 JProfiler 模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试

part.03 测试用例文档

  • 点击下载>

  • 点击下载>


part.04 测试体会

  • 后端的一些体会:

    • ① 性能测试其实挺深奥,涉及很多 jvm 的知识,很考验基础,但是我了解不多,所以测试起来一知半解,很费劲,花了很长时间搜集有关资料,难度有些大。经此后我要多学习底层知识,不能只做会框架的码农。
    • ② 代码的临界问题是经常容易出错的地方,出现空指针是一件让人头痛的事情。
    • ③ 在下一个阶段我们一定要做好测试的相关工作,不然前端又来找我背锅了。
    • ④ 我一直认为软件测试占据着软件开发中的一个重要的位置,软件的好坏,我私认为一在想法是否实用,能否贴切实际提升甚至改变使用者的生活习惯;二在软件可靠性保证,没有可以稳定使用的软件不会受到大众的喜爱。但在测试的过程中发现了自己在这方面的不足,有时候无法编写出可靠性很高的测试函数或数据,这可能导致一些可能的问题没有发现。在这次开发之后需要学习一些新的方面的知识,以让自己能够更好的了解程序,编写可靠的程序。
  • 前端的一些体会:

    • ① 以前从来没有进行过测试,这次进行了项目的测试后,学习到了很多,包括性能的测试,单元测试,等等比较深奥的东西。
    • ② 测试这方面还有很大的学习和进步空间,学会测试编写代码会事半功倍!高级的程序员一定是一个测试高手,我要做高级程序员。
    • ③ 测试的过程中遇上许多困难但是还是勉勉强强完成了,毕竟是第一次做测试,希望下次可以做的更好。

part.05 项目测试评述

测试是代码中重要的一部分,但是又是容易被忽视的一环。以前的测试主要是为了发现问题,总觉得打印一个日志出来也可以达到目的,甚至还更简单。
在这次 Alpha 过程中,开始发现,测试不仅可以用于发现问题,规范的测试还可以保证重构的代码可以正确的执行,避免做重复的工作,甚至由于测试用例能很好的反应代码的临界等问题,使得不同的开发人员都可以迅速深入了解到代码的业务逻辑,增加代码的可读性、可维护性。
在这次的 Alpha 冲刺过程中,一开始我们的团队和往常一样并没有重视规范测试,到后面接口越来越多、前后端的交互越来越密切的时候,代码的问题开始不断的出现,严重影响到了代码的编写。在问题越来越严重的时候,我们在站立式会议中提出,我们目前的测试非常的糟糕,如果还打算继续把项目做下去,必须按照规范的测试要求,对每个接口、关键的方法做全面的测试。
我们当然希望能把项目继续做下去,但是现实是 Alpha 冲刺时间紧、任务重,后端在后面几天完成了接口编写后进行了较为完善的测试;但前端在一人负责一个端的情况下确实来不及照顾到每一个需要测试的方法。经过讨论前端成员决定,Alpha 阶段先学会使用各种测试工具,到了下一个阶段,我们将使用这些工具来进行规范的测试用例编写。

相关文章: