202203-Typhoon-Team实验十 团队作业7:团队项目用户功能验收测试
项目 | 内容 |
---|---|
课程班级博客链接 | 2022年春软件工程课程班(2019级计算机科学与技术) |
团队名称 | Typhoon-Team |
团队成员分工描述 | 1. 张圆圆:负责软件的迭代,进一步修改完善软件功能,编写完善博客,用例测试部分,文档编写完善,文档视屏资源的整理上传 2. 孙得弘:博客编写以及编码环境准备,题库编写,录制安装配置视频,回归测试,用例测试和用户场景测试 3. 姜婷:PPT制作,编写软件测试方案 |
作业要求链接 | 实验十 团队作业7:团队项目用户功能验收测试 |
团队的课程学习目标 | 1. 掌握软件黑盒测试技术; 2.掌握软件项目功能验收测试内容,学会编制软件项目总结PPT。 |
这个作业在哪些方面帮助团队实现学习目标 | 1. 黑盒测试技术; 2.移动应用开发技术。 |
团队博客链接 | Typhoon-Team |
团队项目Github仓库地址链接 | Easscy |
任务1:学习《现代软件工程-构建之法》第13章相关内容掌握基础测试技术,编写用户功能测试方案并执行
《构建之法》第十三章 软件测试
基本名词解释及分类
团队统一思想要从基本名词解释开始。
-
Bug:软件的缺陷
-
Test Case:测试用例,测试用例描述了一个完整的测试过程,包括测试环境、输入、期望的结果等
-
Test Suite:测试用例集,即一组相关的测试用例
-
Bug可以分解为:症状(Symptom)、程序错误(Fault)、根本原因(Root Cause)。
- 症状:即从用户的角度看,软件出了什么问题。例如,输入(3211)时,程序出错退出。
- 程序错误:即从代码的角度看,代码的什么错误导致了软件的问题。例如,代码在输入为某种情况下访问了非法的内存地址——0X0000000C。
- 根本原因:错误根源,即导致代码错误的根本原因。例如,代码对于 id1==id2 的情况没有做正确判断,从而引用了未赋初值的变量,出现了以上的情况
按测试设计的方法分类
测试设计有两类方法:黑箱(Black Box)和白箱(White Box)。
这是每个接触过软件测试的人都会给出的答案,但这只是整个软件测试的入门知识。所谓黑箱/白箱,是指软件测试设计的方法,不是软件测试的方法!注意“设计”二字。
- 黑箱:指的是在设计测试的过程中,把软件系统当作一个“黑箱”,无法了解或使用系统的内部结构及知识。一个更准确的说法是行为测试设计(Be-havioral Test Design),即从软件的行为,而不是从内部结构出发来设计测试
- 白箱:指的是在设计测试的过程中,设计者可以“看到”软件系统的内部结构,并使用软件的内部结构和知识来选择测试数据及具体的测试方法。“白箱”并不是一个精确的说法,因为把箱子涂成白色,同样也看不见箱子里的东西。有人建议用“玻璃箱”来表示。
在实际工作中,我们不应画地为牢,严格只用某一种测试设计方法。我们对系统的了解当然是越多越好。所谓“灰箱”的提法,正反映了这一点。有些测试专家甚至希望我们忘记全部的“箱子”及其颜色。
进一步说,我们并不是要禁止懂得程序内部结构的人员来进行黑箱测试设计,只不过是在设计时有意不考虑软件的内部结构。例如,在测试程序内部基本模块时(单元测试),通常要求由对程序结构非常了解的程序员来设计,这是因为内部模块的“行为”和程序的外部功能并没有直接的关系,而且对内部基本模块的“行为”通常没有明确的定义。另一个例子是软件的“易用性测试”,在设计此类测试时,没必要纠缠于程序的内部结构,而是应着重于软件的界面和行为。但是软件易用性测试也需要很多专业知识。这也从一个侧面表明“黑箱”和“白箱”没有简单的难度高低之分。测试用例写出来之后,大家可以忘了它们是从哪种颜色的箱子里出来的,使用就行了。
按测试的目的分类
1.功能测试
所列的测试类别中,测试的范围由小到大,测试者也由内到外——从程序开发人员(单元测试)到测试人员,到一般用户(Alpha/Beta测试)。
测试名称 | 测试内容 |
---|---|
Unit Test | 单元测试-在最基本的功能/参数上验证程序的正确性 |
Functional Test | 功能测试-验证模块的功能 |
Integration Test | 集成测试--验证几个互相有依赖关系的模块的功能 |
Scenario Test | 场景测试验证几个模块能否完成一个用户场景 |
System Test | 系统测试一对于整个系统功能的测试 |
Alpha/Beta Test | 外部软件测试人员( Alpa/Beta测试员)在实际用户环境中对软件进行全面的测试 |
2.非功能测试
一个软件除了基本功能之外,还有很多功能之外的特性,这些叫非功能需求(Non-functional Re-quirement),或者服务质量需求(Quality of Ser-vice Requirement)。然而,若没有软件的基本功能,这些特性都将无从表现出来,因此,我们要在软件开发的适当阶段——基本功能完成后再来做这些非功能测试,如下表所示
测试名称 | 测试内容 |
---|---|
Stress/Load Test | 压力测试一测试软件在负载情况下能否正常工作 |
Performance Test | 效能测试测试软件的效能 |
Accessibility Test | 可访问性测试测试软件是 否向残疾用户提供了足够的辅助功能 |
Localization/Globalization Test | 本地化,全球化测试 |
Compatibility Test | 兼容性测试 |
Configuration Test | 配置测试测试软件在各种配置下能否正常工作 |
Usability Test | 易用性测试测试软件是否好用 |
Security Test | 软件安全性测试 |
按测试的时机和作用分类
在开发软件的过程中,不少测试起着“烽火台”的作用,它们告诉我们软件开发的流程是否顺畅,这些测试如下表所示。
测试名称 | 测试内容 |
---|---|
Smoke Test | 冒烟测试 一测试不通过, 则不能进行下一步工作 |
Build Verification Test | 验证构建是否通过基本测试 |
Acceptance Test | 验收测试一全面 考核某方面的功能/特性 |
另一些测试名称,则是说明不同的测试方法,如下表所示。
测试名称 | 测试内容 |
---|---|
Regression Test | “回归”测试一对一个 新的版木,重新运行以往的测试用例,确认新版本相比已知版本有无“退化”( Regression ) |
Ad hoc (Exploratory) Test | 随机进行的、探索性的测试 |
Bug Bash | Bug大扫荡 |
Buddy Test | 伙伴测试--开发人员 (伙伴)作为测试人员测试特定模块 |
回归测试(Regression Test)
在单元测试的基础上,我们就能够建立关于这一模块的回归测试(Regression Test)。Regress 的英语定义是:return to a worse or less developed state,是倒退、退化、退步的意思。在软件项目中,如果一个模块或功能以前是正常工作的,但是在一个新的构建中出了问题,那么这个模块就出现了一个“退步”(Regression),从正常工作的稳定状态退化到不正常工作的不稳定状态。在一个模块的功能逐步完成的同时,与此功能有关的测试用例也同样在完善中。一旦有关的测试用例通过,我们就得到了此模块的功能基准线(Baseline),一个模块的所有单元测试就是这个模块最初的Baseline。假如,在3.1.5版本,模块A的编号为125的测试用例是通过了的,但是在新的版本3.1.6上,这个测试用例却失败了,这就是一个“倒退”(Regres-sion)。工程师们应该在新版本上运行所有已通过的测试用例,以验证有没有“退化”情况发生,这个过程就是一个“Regression Test”。如果这样的“倒退”是由于模块的功能发生了正常变化引起的(例如,我们要修改模块,支持电子邮件地址以.name为最后的域名),那么测试用例的基准就要修改,以便和新的功能保持一致。针对一个Bug Fix,我们也要做Regression Test。目的是:
- 验证新的代码的确改正了缺陷
- 同时要验证新的代码有没有破坏模块的现有功能,有没有Regression
所以,对于“回归测试”中的“回归”,我们可以将其理解为“回归到以前不正常的状态”。回归测试最好要自动化,因为这样就可以对于每一个构建快速运行所有回归测试,以保证尽早发现问题。单元测试是回归测试的基础。在专注于模块基本功能的单元测试之外,还有功能测试—从用户的角度检查功能完成得怎么样。在微软的实践中,在一个项目的最后稳定阶段,所有人都要参加全面的测试工作,把所有以前发现并修复的Bug找出来,一个一个验证,以保证所有已经修复过的Bug的确得到了修复,并且没有在最后一个版本中“复发”,这是一个大规模的、全面的“回归测试”
1.1 编写软件的功能测试方案文档,上传项目Gitub仓库
- 安装测试
项目 | 内容 |
---|---|
安装方式 | 通过浏览器下载安装包进行安装包 通过手机端的应用商店进行安装 通过手机自带的应用商店进行安装 通过连接电脑进行安装(如91助手,手机管家等) 通过电脑传送到手机的安装包 通过手机之间的互传进行安装 扫码安装 |
安装步骤界面 | 安装页面语义无二意检查 安装过程中提示信息的正确性检查 安装是否可以随时退出操作界面检查 |
安装过程中的控制/异常情况 | 安装的空间本来足够,但在安装过程下载文件到手机,使空间不足同时运行两个相同的安装程序 同时运行两个不同的安装程序一个语记另一个其他的 在没有网的情况下能否安装 有网情况下能否安装 安装时网突然断了能否安装 安装时切换到其它应用,让安装程在后台运行安装 安装过程中接听电话 |
升级安装 | 在已经安装的情况下,卸载原软件,安装高版本,能否正确安装 在已经安装的情况下,卸载原软件,安装低版本,能否正确安装 在已经安装的情况下,不卸载原软件,直接安装高版本,能否正确安装 在已经安装的情况下,不卸载原软件,直接安装低版本,能否正确安装 软件不升级是否能正常运行 升级安装是否需要重启手机 升级安装后原来的数据是否仍在 |
安装环境(2022年) | 在Android6.0版本下安装app 在Android7.0版本下安装app 在Android8.0版本下安装app 在Android9.0版本下安装app 在ios6.0系统版本 在ios7.0 系统版本 在ios8.0 系统版本 在ios9.0系统版本 在ios10.0 系统版本 在ios11.0 系统版本 在ios12.0 系统版本 |
安装后检查 | 成功安装app后,是否有新图标,检查app功能是否正常 跨版本升级安装后,检查原有图标是否消失,新图标是否会出现 |
app更新提示检查 | 客户端有新版本,自动弹出提示更新 版本为非强制升级,取消后,app正常使用 版本为强制升级,取消后,退出app,再次打开app再次弹出升级提示。 |
-卸载测试
项目 | 内容 |
---|---|
卸载方式 | 软件自带卸载程序能否正确卸载 长按图标卸载 |
卸载状态 | 卸载正在运行的软件 没有网的情况下卸载 正在卸载中取消了能否正确卸载 卸载中途断网是否能正确卸载 卸载中途重启是否能正确卸载 卸载中途关机是否能正确卸载 卸载提示 卸载是否有相应的卸载提醒 卸载过程中进度条是否正确显示 卸载时否有拒绝卸载,狠心卸载,修复提示 卸载时是否显示相关信息 |
卸载环境 | 在Android6.0版本下卸载app 在Android7.0版本下卸载app 在Android8.0版本下卸载app 在Android9.0版本下卸载app 在ios6.0系统版本卸载app 在ios7.0 系统版本卸载app 在ios8.0 系统版本卸载app 在ios9.0系统版本卸载app 在ios10.0系统版本卸载app 在ios11.0系统版本卸载app 在ios12.0系统版本卸载app |
卸载后检查 | 卸载完成后,查看是否对其他软件有影响 卸载完成后,app桌面快捷方式是否已删除 将软件卸载后,观察app的安装路径是否有残留文件 卸载后原来安装的插件是否删除 |
- 登陆测试点
- 正常登录
项目 | 内容 |
---|---|
用户名登录 | 输入正确的用户名和密码,查看能否成功登陆 |
手机号码登录 | 输入正确的手机号码和验证码,查看能否成功登陆 |
第三方登录 | 查看此app支持的第三方登录方式(如:QQ,微信)能否登录成功,前置条件:用户已有账号并绑定了QQ和微信 |
- 异常登录
项目 | 内容 |
---|---|
用户名密码登录各种异常情况 | 用户名不输入,输入正确的密码,查看能否成功登录 输入正确的用户名,密码不输入,查看能否成功登陆 用户名和密码都不输入,查看能否成功登陆 输入含有非法字符的用户名如¥#@&,正确的密码,查看能否登录成功 输入的用户名是大写的(原来是小写的),正确的密码查看能否登录成功 输入的用户名含有空格(原来没有空格),正确的密码查看能否登录成功 输入错误的用户名,正确的密码,查看能否登录成功 用户名其他长度或组合规则限制异常 输入正确的用户名,密码含有空格(原来没有空格),查看能否成功登录 输入正确的用户名,密码大写(原来小写),查看能否成功登录 输入正确的用户名,错误的密码,查看能否成功登录 查看密码是否支持复制粘贴功能。 查看密码是否使用加密。 密码其他长度或组合规则限制异常 |
手机号码登录各种异常情况 | 获得验证码后手机号码不输入,输入正确的验证码,查看是否成功登录。 输入正确的手机号码,验证码不输入,查看能否登录成功。 手机号码和验证码都不输入,查看能否登录成功。 获得验证码后输入11位的手机号码含有空格,输入正确的验证码,查看是否成功登录。 获得验证码后手机号码输入11位中文,输入正确的验证码,查看是否成功登录。 获得验证码后手机号码输入11位字母,输入正确的验证码,查看是否成功登录。 获得验证码后手机号码输入11位特殊字符,输入正确的验证码,查看是否成功登录。 获得验证码后手机号码减少一位数字,输入正确的验证码,查看是否成功登录。 获得验证码后手机号码增加一位数字,输入正确的验证码,查看是否成功登录。 输入正确的手机号码,获取验证码(含有空格),查看是否成功登录。 输入正确的手机号码,获取验证码,输入错误的验证码,查看是否成功登录。 输入正确的手机号码,获取验证码,输入大小写不一致的验证码,查看是否成功登录。 输入正确的手机号码,获取验证码,5分钟后输入正确的验证码,查看是否成功登录。 输入正确的手机号码,获取两次验证码,输入第一次获取的验证码,查看是否成功登录。 |
第三方登录各种异常情况 | 在未安装QQ的手机,使用第三方QQ登录。 在已安装QQ但是未登录QQ的手机,使用第三方QQ登录。 用户从未注册,使用QQ第三方登录。 在未安装微信的手机,使用第三方微信登录。 在已安装微信但是未登录微信的手机,使用第三方微信登录。 用户从未注册,使用微信第三方登录。 |
密码错误超出次数账号锁定 | 输入正确的用户名,错误的密码(密码输错3次(5次)以下),查看能否成功登录 输入正确的用户名,错误的密码(密码输错3次(5次)以上),查看用户是否会被锁定 |
1.2录制视频演示软件系统安装配置过程
软件开发系统环境安装配置
软件项目安装配置过程
1.3博客中截图显示文档和视频上传结果
已成功上传至GitHub仓库
已成功上传至GitHub仓库
1.4博客中给出软件远程访问地址
- Knapsack社区软件远程访问地址
点击即可下载安装包 - Knapsack社区软件安装包已成功上传至GitHub仓库
已成功上传至GitHub仓库
1.5博客中列表统计测试用例及存在的Bug
- 登录模块
测试项目 | 用例标题 | 用例重要级别 | 预置条件 | 测试输入 | 执行步骤 | 预期结果 |
---|---|---|---|---|---|---|
注册功能 | 注册界面的正确性验证 | 低 | 注册界面正常显示 | 打开注册界面 | 打开注册界面 | 界面所有组件显示正常 |
注册功能 | 注册功能的正确性验证 | 重要 | 注册界面正常显示 | 注册界面的各项信息 | 将注册界面的各项信息填写完整并提交 | 弹出用户注册成功提示信息 |
登录功能 | 登录界面的正确性验证 | 低 | 登录界面正常显示 | 打开登录界面 | 打开登录界面 | 界面所有组件显示正常 |
登录功能 | 登录功能的正确性验证 | 重要 | 登录界面正常显示 | 登录界面的各项信息 | 将登录界面的各项信息填写完整并提交 | 页面跳转至登录界面 |
- 文章管理发布模块
测试项目 | 用例标题 | 用例重要级别 | 预置条件 | 测试输入 | 执行步骤 | 预期结果 |
---|---|---|---|---|---|---|
文章功能 | 文章界面的正确性验证 | 低 | 文章界面正常显示 | 打开文章界面 | 打开文章界面 | 界面所有组件显示正常 |
文章功能 | 查看文章功能的正确性验证 | 重要 | 文章界面正常显示 | 打开文章界面 | 打开文章详情界面 | 界面可正确显示文章详情内容 |
文章功能 | 发布文章功能的正确性验证 | 重要 | 发布文章界面正常显示 | 打开发布文章界面 | 在发布文章界面输入文章具体内容 | 界面可保存显示发布文章信息 |
- 论坛社区模块
测试项目 | 用例标题 | 用例重要级别 | 预置条件 | 测试输入 | 执行步骤 | 预期结果 |
---|---|---|---|---|---|---|
论坛社区功能 | 论坛社区界面的正确性验证 | 低 | 论坛社区界面正常显示 | 打开论坛社区界面 | 打开论坛社区界面 | 界面所有组件显示正常 |
论坛社区功能 | 查看论坛社区功能的正确性验证 | 重要 | 论坛社区界面正常显示 | 打开论坛社区界面 | 打开论坛社区详情界面 | 界面可以正常显示论坛具体信息 |
评论功能 | 评论功能的正确性验证 | 重要 | 论坛详情界面正常显示 | 打开文章界面 | 打开论坛界面并进行文章的评论的输入并点击提交按钮 | 论坛界面显示所提交的评论 |
- 资源管理上传模块
测试项目 | 用例标题 | 用例重要级别 | 预置条件 | 测试输入 | 执行步骤 | 预期结果 |
---|---|---|---|---|---|---|
资源功能 | 资源界面的正确性验证 | 低 | 资源界面正常显示 | 打开资源界面 | 打开资源界面 | 界面所有组件显示正常 |
资源功能 | 查看资源的正确性验证 | 重要 | 资源界面正常显示 | 打开资源界面 | 打开资源详情界面 | 界面可以正常显示资源具体信息 |
资源功能 | 资源上传功能正确性验证 | 重要 | 资源上传界面正常显示 | 打开资源上传界面 | 打开资源上传界面,选择自己要上传的资源 | 资源界面显示所上传的资源 |
- 习题练习模块
测试项目 | 用例标题 | 用例重要级别 | 预置条件 | 测试输入 | 执行步骤 | 预期结果 |
---|---|---|---|---|---|---|
习题功能 | 习题界面的正确性验证 | 低 | 习题界面的正常显示 | 打开习题界面 | 打开习题界面 | 界面所有组件显示正常 |
习题功能 | 习题界面完成测试题目的正确性验证 | 重要 | 习题测试界面的正常显示 | 打开习题测试界面 | 打开习题测试界面,根据题目完成相应测试,测试完成后显示相应的分数 | |
习题功能 | 习题添加界面的正确性验证 | 重要 | 习题添加界面的正常显示 | 打开习题添加界面 | 打开习题添加界面,输入表单所需要的信息,最后点击提交按钮,显示新添加的习题 |
- 个人信息管理模块
测试项目 | 用例标题 | 用例重要级别 | 预置条件 | 测试输入 | 执行步骤 | 预期结果 |
---|---|---|---|---|---|---|
个人信息管理 | 个人信息管理界面的正确性验证 | 低 | 个人信息管理界面的正常显示 | 打开个人信息管理界面 | 打开个人信息管理界面 | 界面所有组件显示正常 |
个人信息管理 | 个人信息编辑功能的正确性验证 | 重要 | 个人信息管理界面的正常显示 | 打开个人信息管理界面 | 打开个人信息管理界面,对个人信息进行修改,最后点击提交 | 返回个人信息界面,显示已修改的信息 |
-
存在的bug
- 文章发布后页面跳转出错
在发布文章后点击查看文章会出现直接返回初始界面的bug
如图点击文章会直接跳转的下面的界面
- 习题界面完成测试后成绩统计出错
在选中某一章节的习题后,完成其内置的测试题后,在统计考试成绩时,出现成绩为0(成绩计算错误)的问题,如下图所示:
- 文章发布后页面跳转出错
1.6博客中总结任务1执行用户场景测试的情况
1.7博客中举例说明任务1执行回归测试的情况
本次app开发一共更迭了4个版本,由我们组员进行回归测试查看是否新代码与旧代码存在不兼容的情况
最初版
第一次回归测试
第二次回归测试
第三次回归测试
1.8 概述项目测试的平台、硬件配置等
软件环境
- 操作系统:Windows 10
- JDK版本:JDK 1.8
- Android开发工具:Android Studio 2020.3.1
- 数据库:SQLite
硬件配置
本次项目是在Android平台上进行测试,硬件配置如图所示
任务2:完善与整理团队项目资料、编制团队项目总结陈述PPT、录制视频演示软件功能
录制视频演示软件功能
编制团队项目总结陈述PPT
- 项目总结综述PPT下载地址
已成功上传至GitHub仓库
已成功上传至GitHub仓库
任务3:实验总结
记录完成《实验九 团队作业6:团队项目编码》各项任务实际花费的时间和分工
任务内容 | 计划共完成的时间(min) | 实际完成时间(min) |
---|---|---|
任务一 | 420 | 432 |
任务二 | 130 | 140 |
任务三 | 240 | 278 |
成员结合任务分工总结本次实验心得,最后由项目组长进行总结陈述
团队成员实验心得
团队成员 | 本次作业的心得体会 |
---|---|
张圆圆 | 在本次项目开发过程中,进一步修改完善了软件程序,并且完成了软件功能模块的测试,通过此次项目开发,学习到了很多东西,通过团队成员的分工合作完成了此次项目开发,在项目开发过程中,意识到了测试对于软件开发的重要性,对软件测试有了深刻的认识,在遇到具体难题时,与团队成员一起讨论解决,提高了问题的处理效率,使得此次实验顺利完成。 |
姜婷 | 通过本次式样再次对系统设计做出改经对之前没有代码开发时所注意到的细节重新规划,对习题作答部分的内容做出详细设计,对用户类、博客类、问答类各种属性做出详细设计,对数据库内个属性字节也有详细的在规划。通过团队内协商合计出代码规划,在之后的代码合并中虽然仍有不同的格式但是为之后的代码开发做出准备。 |
孙得弘 | 本次软件工程项目的设计与开发,学习到了很多技术和知识。首先是对工程项目思维的训练,从刚开始的项目推进中我发现盲目进行代码堆砌对项目的开发没有太大的帮助,反而会在后期造成很多困扰,所以要及时与团队成员进行沟通,完善设计框架和目标,其次就是作为团队的一员,一定要按时完成任务,不拖团队后腿。从团队角度来看,合理的分工、合适的项目组织与流程规划都是成功项目的关键,一个项目的开发不是靠单纯的个人能力就能够驾驭的,根据不同的项目类型进行合理的开发过程规划是非常关键的,在开发的过程中,小组的团队配合要好,项目进度和质量也会比较好的。同时学到了很多软件工程开发的实质性知识,而且对于以前不敢面对的编程也慢慢入手去做,学到了很多相关领域的知识,提高了自己的整体水平。 |
组长总结陈述:
通过完成本次实验项目,让团队成员之间有了更加深入的了解,对真正的团队项目开发过程有了更加深入的体会,在开发过程中遇到难题时,与团队成员积极的沟通交流,一起解决所遇到的难题,在这个过程中,作为团队成员的我们收获到了很多,也让我们知道了在项目开发的过程中团队协作的重要性。通过项目前期的需求调研和系统功能分析设计,再加上次实验的项目具体编码过程,初步完成了软件开发设计,通过此次实验的软件迭代,通过学习有关测试的相关知识,完成了对软件程序的测试,对软件开发有了一个更深入的学习了解,作为团队成员的我们,相信都有了不同的收获,并且通过团队之间的协作,我们也深刻意思到团队的重要性,通过这次项目开发经历,我们在各个方面都有了很大的提升,虽然过程中有很多难题困扰着我们,但通过团队成员的努力,问题都一一得到了解决,顺利完成了此次实验。
本学期课程学习总结
团队成员 | 课程总结 |
---|---|
张圆圆 | 经过这一整个学期的软件工程课程,我也是有所收获。在整个软件开发的过程中,学到了软件的需求分析,设计、测试等方面的知识,同时对自己的编程能力有了一个更高的提升,在软件工程的课堂上,我深刻的认识到要成为一名优秀的软件开发人员不是一件容易的事情,不仅要有足够的干劲和热情,还要有扎实的编写代码基础,必须要有事先对文档进行可靠性报告,功能说明书,详细设计说明书等的编写和一些风险评估的编写的能力。通过这一学期的软件工程的课程,我也获益良多,加深了对软件开发学习的兴趣,衷心地感谢在软件开发过程中给予了我们很多指导和帮助的老师和团队成员 。 |
姜婷 | 在课程学习的过程中我不断地学习新的知识,学习了markdown的使用,绘制了各种UML的图去明确系统结构。也利用不同的方法实现了需求分析,去切实的理解项目可行性。通过结对编程高效地实现项目构建。还学习TSP流程对项目时间做出不断调整,还学习了墨刀的使用去设计项目原型。且在团队伙伴的帮助下更是提升了团队协作能力,完成一次次满意的实验结果。不断的学习新知识,不断的提升个人能力。 |
孙得弘 | 学习了这门课程, 还有理论课与实习课,不但让我从理论上掌握软件工程,还有从不同的实例,让理论和实践得到了很好的结合。整一个学期下来,总的来说还是学到了很多东西的,有很多地方是值得肯定的,其实在我看来,软件工程与其说是一门课程,不如说是一门思想。是一个如何去分析和处理问题的过程,应该说其范畴已经远远不止局限于该门课程,成为了一个综合的一个能够解决问题的思想集合。 |
回顾《实验一:软件工程准备》提出的3个问题并尝试总结答案
- 张圆圆
问题描述 | 问题解答 |
---|---|
问题1:软件工程包括了开发、运营、维护软件的过程中的很多技术、做法、习惯和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”,软件开发流程的目的是为了提高软件开发、运营、维护的效率,以及提升用户满意度、软件的可靠性和可维护性。从上述这段话中所提到的软件工程所包含的这几个方面,从而提出这样一个问题:若要作为一个软件工程师,从一个合格的软件工程师的角度出发,对于软件项目来说,最重要的什么?如何考虑关于软件项目多个方面之间的关系? | 软件工程的核心我认为是如何把软件开发当做一项工程来组织、计划和实施。作为软件工程师,必须具有大局观,不能仅限于代码的实现,应该关注整个软件生命周期过程。而软件过程通过研究如何将人员,技术和工具等组织起来,形成一种有效的管理手段,从而提高软件生产的效率,保证软件产品的质量。所以每一个合格的软件工程师都应加强软件过程管理,如规范过程、风险评估等;提高个体软件过程能力,如个体时间管理、阶段性工作计划等,只有将过程管理的思想运用在实际中,才能真正的提高自身效率,保证软件质量。 |
问题2:在软件工程项目的开发过程中,软件工程师无疑是编程的主力人员,每个人所负责的功能模块不同,其具体工作各有不同,但软件项目是一个团队工作,对于自己负责的功能模块,没有其他人会比代码作者本人更熟悉,从而我提出这样一个问题:不同的软件工程师在软件工程项目中处于一个什么样的位置,其对软件开发过程起到什么重要作用及影响? | 技术总监:对系统方向和团队中一些决策性的事进行管理,包括日常事务,虽然他不需要编码,但能担任技术总监,肯定是经历了设计开发,产品的实施,并系统的战略性发展都有相当的见解,对整个系统的所有流程都面面具道,不单单局限于技术层面,因为他需要主导整个团队运作。 项目经理:项目经理负责人员安排和项目分工,保证按期完成任务,对项目的各个阶段进行验收,对项目参与人员的工作进行考核,管理项目开发过程中的各种文档,直接对公司领导层负责,他既能处理好与客户之间的关系,又能协调好项目小组成员之间的关系。 产品经理:企业中专门负责产品管理的职位,产品经理负责市场调查并根据产品、市场及用户等的需求,确定开发何种产品,选择何种业务模式、商业模式等。并推动相应产品的开发组织,他还要根据产品的生命周期,协调研发、营销、运营等,确定和组织实施相应的产品策略,以及其他一系列相关的产品管理活动。 项目助理:对会议、文档、日常事务的跟踪进行管理,别以为这个只是助理一职,这个职务在整个项目中,启着至关重要的位置,她贯穿于团队中每个职务之中,其它职务是针,她就是一根线,她可以对项目中每个人的工作进行监控、总结和传达任务。 Leader:管理项目组成员、技术难点分析,编写详细设计文档,技能特色很突出,有创新能力,不是什么都是从网上拿下来一改就用的,其它方面都可以讲出一二,对行业内的动态都很关注,有一定的交际能力。 测试经理: 是测试活动的领导者,是公司内部认定的产品质量责任人(项目经理是对外的软件质量责任人)。测试经理的责任是计划和组织测试人员对目标产品进行测试,发现 bug 、跟踪 bug 直到解决 bug ;计划和组织用户培训工作。 |
问题3:在学习计算机相关课程的这三年中,我们也有不少的编程作业和一些简易系统的开发,但这比起做一个真正的软件工程项目,差距还很大,作为学生,通过软件工程科目的学习,如何做一个真正实用的软件项目? | 做一个实用的软件设计通常有两个步骤:一是做好需求管理,二是做好原型设计。1.需求管理需求管理有需求分析和需求分级。需求分析需要根据软件的核心逻辑,来明确设计目的,从而整理出核心需求是什么。这里可以使用流程图或思维导图来将业务逻辑和功能模块来梳理清楚,方便后续制作原型图的时候“不忘初心”。2.原型设计在互联网中,开发一个产品,都需要先做出一个简单的原型。这个原型通常称为“最小化可行产品——MVP”。在进行原型的绘制时可以使用墨刀这款原型工具,来达到快速输出高保真原型的需求。墨刀提供海量的素材库,在素材库搜索想要的图标、原型、组件等等都能够找到相应的模板,一键引用后可以在原型图中直接编辑与修改。如果想要自定义,通过封装好的交互组件,也能轻松实现动态交互设计。并且所有的组件都能够复用,减少繁琐的操作。遵循标准化的设计规范,通过组件库的功能和页面功能,将每个基础组件、交互细化完毕,就可以输出一个原型设计了。 |
- 姜婷
问题描述 | 问题解答 |
---|---|
什么是软件工程? | 软件开发过程中从调研、可行性分析、需求分析、总体设计、详细设计、编码和测试,这里每一个阶段的工作都要做足而且还要结合一定的开发模型或方法才能最大程度的保证软件产品的开发进度、产品质量。如果违反这些客观规律都会可能导致最终的失败。 |
团队合作会给软件质量带来怎样的影响和作用? | 一个软件的开发离不开团队的合作,并且通过这次的团队合作之后,明白了,如果团队合作不愉快或者是完成度不高,那么将会影响软件的完成不了或者是质量不过关。有效的团队合作可以带来有效的且较好的软件产品。 |
软件测试的步骤是什么?测试的方法有哪些? | 测试的步骤是编写测试计划、编写测试用例、搭建测试环境、执行测试、进行BUG验证 、编写测试报告和对测试结果分析。测试方法有单元测试、集成测试、系统测试、验收测试、黑盒测试、白盒测试等。 |
- 孙得弘
问题描述 | 问题解答 |
---|---|
什么是软件工程? | 软件开发过程中从调研、可行性分析、需求分析、总体设计、详细设计、编码和测试,这里每一个阶段的工作都要做足而且还要结合一定的开发模型或方法才能最大程度的保证软件产品的开发进度、产品质量。如果违反这些客观规律都会可能导致最终的失败。 |
团队合作会给软件质量带来怎样的影响和作用? | 一个软件的开发离不开团队的合作,并且通过这次的团队合作之后,明白了,如果团队合作不愉快或者是完成度不高,那么将会影响软件的完成不了或者是质量不过关。有效的团队合作可以带来有效的且较好的软件产品。 |
软件测试的步骤是什么?测试的方法有哪些? | 测试的步骤是编写测试计划、编写测试用例、搭建测试环境、执行测试、进行BUG验证 、编写测试报告和对测试结果分析。测试方法有单元测试、集成测试、系统测试、验收测试、黑盒测试、白盒测试等。 |