题目要求

选择一个测试要素,以你做过的一个软件作品为例,分别讨论该要素在软件生命周期的需求,设计,编程,测试,安装和维护各阶段的测试目标和内容。

回答

以我上学期做过的区块链DAPP课程项目 MyTrello (基于以太坊的去中心化日程管理 Web 应用)为例(主要涉及了两大核心的功能:团队人员管理和任务驱动协作), 我选择 正确性测试要素进行讨论。该要素在软件生命周期的各个阶段的测试目标和内容总结如下。

需求阶段

事件:定义产品的功能规格说明。

目标:

保证需求分析的正确性以及充分性。具体来讲其目标是保证需求正确反应用户的需要,需求被定义和文档化。

内容:

  1. 检查需求分析所定义的功能是否反映用户需求。即认真审视以团队为单元,以任务流为驱动,以以太坊智能合约技术为基础的去中心化 web app 的正确性。
  2. 测试需求是否已经被明确定义,以及输出合理规范的需求文档。 即是否产出作为一个团队日程管理所具备的核心功能的需求规格说明书。
  3. 检测产品需求功能是否满足课程要求。

设计阶段

事件:设计符合需求。

目标: 对设计阶段产出的文档和架构说明进行评审;当需求分析发生改变时,测试要对修改的部分进行检查,确保设计与需求保持一致。

内容:

  1. 评估技术选型和架构是否有满足需求。分析选用 solidity 语言编写智能合约是否可靠,使用 solc 编译合约是否合理,使用web.js 来部署调用合约是否妥当,使用react作为前端框架是否足够高效等等。
  2. 评审设计阶段产出的文档,在功能设计上是否符合需求规格。即对比需求文档,从本项目中的团队管理和任务流驱动的两个核心功能出发,检查设计的接口是否符合需求,评审设计文档中是否存在着对需求遗漏缺失,理解认知错误的地方,有则修正设计文档。

编程阶段

事件:程序符合设计。

目标: 检测编码是否与设计一致,是否正确地实现系统功能需求,编码是否正确地按照既有的标准进行。

内容

  1. 测试编码是否与设计文档定义一致,包括模块化,接口定义,界面设计。即检查智能合约中的接口功能是否与设计文档保持一致,编译、部署、调用合约是否按照设计文档中的规范进行。若未一致,则结合设计文档对现有代码进行修正。
  2. 测试程序的能否正确运行。使用黑盒、白盒测试对本日程管理应用的每个单元模块进行测试。

测试阶段

事件: 功能测试。

目标:进行第三方的正式确认测试,检验所开发的系统是否按照用户提出的要求运行。

内容:

在一个新的应用系统来进行测试,运行部分或全部系统,确认用户需求被满足。按照用户规定的需求来测试应用功能,检查应用是否能正常连接以太坊公有测试网络,是否能正常完成团队管理和任务管理这两大功能,确认产品功能是否正确满足了用户的需求。若未能正确满足,则重新检查修改,以匹配需求。

安装阶段

事件:正确的程序和数据防入产品。

目标: 保证被测试系统不存在问题,注重对程序安装的正确性和完整性进行核对。

内容:

对程序安装的正确性进行核对。按照系统安装说明手册的步骤进行,确定好测试环境(win10 nodejs metamask ),借助npm 包管理器安装好软件相应的包和环境依赖。使用命令运行项目,在浏览器查看项目的安装情况。若失败,则要寻求相应的解决方案。

维护阶段

事件:修改需求

目标:根据软件实际运行情况以及用户的反馈对软件功能或需求进行适当的修正。

内容

经过多次的使用,对项目一些细节有了新的需求。比如在本日程管理项目中增加事件通知,任务历史记录功能,赋予更加简洁灵活的任务交互操作,修改冗余的功能。