软件研发概述
我们学习C++,不论我们之后都是去干什么,不论是去做开发还是做测试(小杨是做开发的)都需要了解一些除了C++相关知识,在这呀小杨给大家准备了一些通用的公共的研发基础,这些都是一些我们需要熟记于心的,以便各位小伙伴们了解公司架构,熟悉日后工作环境,小伙伴们在之后老师带着做项目的时候可以更了解整个项目的运作和分工,好了,仍是废话不多说,快来开始今天的学习吧.
一定要看到结尾哦,有惊喜给大家!!!
软件:
什么是软件:
- 软件是计算机程序以及其他相关文档,是交付给客户的一整套解决方案;
软件=程序+文档
文档包含那些?
- 文档一般包括需求文档、计划文档、设计文档、测试报告、用户手册等
文档的意义:
- 有了相关文档,可以使人们更加清晰的了解程序的结构和架构,更方便对程序进行使用和维护;
编码:
- 编码是将人脑的思路、方法使用程序设计语言编写为代码的过程,也就是程序员编写代码的过程;
开发:
软件开发不止是编码,它是包括从需求分析、计划、设计、编码、调试等一系列的过程;
研发:
- 软件研发不止是软件开发,它是包括从需求分析、开发计划、测试计划、设计、编码、测试、维护等一系列的过程;
软件研发=开发+测试
软件研发至少包括需求、设计、编码、测试;
软件设计:
-
概要设计:概要设计就是对程序的结构和框架进行设计,确定有哪些接口(功能)、确定有哪些类
-
详细设计:确定功能具体的实现、接口中方法、函数的确定;
程序设计语言:
调试:DEBUG
- 调试是指程序员编写完成代码后,使用专业调试工具对其代码进行调试并进行改正 的整个过程
环境:
-
开发环境是指程序员编写代码所使用的环境;
-
测试环境是测试人员为了对程序进行测试而部署的环境;
-
生产环境又被称为真实环境或线上环境,它是指程序真实上线后所使用的客户环境;
版本:
-
version:是指程序正式上线后使用的版本
-
build:是指内部使用的小版本,一般不对外发布
软件生命周期:
- 软件的生命周期是指从需求分析一直至软件消亡的整个过程,包括需求、计划、设计、编码、测试、上线、升级、维护、废弃等
软件公司人员架构:
-
PM:项目经理,主要负责项目整体的运作、资源的协调,人员的分工,项目风险的把控等;
-
BA:需求分析工程师,产品经理:主要负责和用户对接需求、确定需求以及需求优先级的确定
-
DEV:开发人员
-
前端开发主要负责前端页面的具体实现,web前端使用技术有html、css、js、vue、react(QT)等
-
后端开发主要负责业务的具体实现
-
-
TE:测试人员主要负责相关程序和文档的测试
-
UI:主要负责页面的美工工作,包括图片、字体、颜色等
-
运维:主要负责项目环境、服务的监控、正常运行;
需求:
什么是需求:
-
需求是由产品经理在和客户对接需求(原始需求)的过程中进行整理归纳形成的一份描述系统应该做什么的文档;
-
也被称为需求文档、软件需求规格说明书、srs;
需求分析:
-
需求分析其实就是学习需求的过程,一般在项目上以会议形式进行;通过需求串讲和反串讲,做到了需求对齐(需求理解一致)的工作
-
需求串讲:需求串讲是由产品经理向开发/测试人员讲解需求的过程;
-
需求反串讲:需求反串讲是由开发/测试人员向产品经理讲解需求的过程;
需求澄清:
- 需求澄清是指产品经理在与用户对接需求时,向用户提出问题的过程称为需求澄清;
- 广义上来讲,将需求分析会议上,开发、测试向产品经理提出问题的过程也成为需求澄清;
需求变更:
- 需求变更就是指对需求的更变活动;需求变更可以由PM、产品经理、DEV、用户进行变更;
- 需求变更需求进行需求变更仲裁会议(CCB):
- 参会人员:PM、产品经理、DEV、用户
需求评审:
- 在每一个迭代开始之前,一般由产品经理组织对需求进行需求以及优先级确定;
评审活动:review
需求评审:讲解同上
测试用例评审:
- 测试人员编写完成测试用例后,由测试人员自发组织开发、开发组长、测试组长、[产品经理]一起对测试用例进行评审,以去掉冗余用例和补充用例;
代码评审:
- 开发人员编写完成业务代码后,需要自发组织同组开发人员对齐代码进行评审;
- 评审时首先由开发人员进行业务和业务实现逻辑的讲解,然后由同组每一个开发对代码从规范、功能、性能、安全性、数据库等方面进行评审;开发人员当场记录问题并进行修改;
软件开发流程:
需求分析—>开发计划---->思维导图---->概要设计---->详细设计—>编码---->开发自测---->缺陷修复;
- 开发计划:
- 开发计划是对开发活动所作的计划;它包括项目背景、时间节点、人员分工、开发环境、开发技术、开发风险等;
- 开发计划一般是由DEV leader编写;
- 思维导图:
- 思维导图是将程序中的业务功能使用类XMIND软件整理成很有逻辑的导图形式;
- 开发自测:
- 开发人员编写完成代码后,需要对代码业务进行自测;一般情况开发人员进行的属于单元测试;
- 缺陷修复:
- 当测试人员提交缺陷后,由开发人员确认然后对其进行修复;
- 哪些情况属于缺陷?
- 不符合(满足)用户需求
- 超越用户需求
- 不符合用户的操作习惯
- 缺失的异常处理
- 缺陷包含的元素:
- 缺陷编号、缺陷名称、缺陷优先级、缺陷等级、重现步骤、期望结果、实际结果、附件等
- 缺陷优先级:
- 致命:(2~5)引起系统崩溃或者重要模块整个模块业务异常
- 严重:(10)引起重要模块功能异常或者一般模块整个模块业务异常
- 一般:(75)一般业务单个功能点异常
- 轻微 (10)轻微通常是显示方面的问题
- 附件:一般包括出错截图、环境信息、日志信息等
- 缺陷的处理流程:新建(测试或开发)----->确认(有些公司测试经理,有些是开发)---->修复(只能由开发人员)---->回归(只能测试人员进行)---->关闭(只能测试关闭)
软件测试流程
- 需求分析---->测试计划---->思维导图---->测试设计---->测试用例---->部署环境—>执行测试---->提交缺陷---->缺陷回归---->测试报告;
- 测试用例:测试用例是为了完成对程序的验证而编写的一份有输入输出的文档;
- 测试报告:测试报告是对测试活动所作的报告,主要包括项目背景、测试环境、测试用例执行情况、缺陷的分布情况、缺陷的处理情况、测试结论等
软件测试概述
什么是软件测试:
- 软件测试是对计算机程序以及相关文档进行的测试;软件测试更是软件研发过程中一系列质量活动的总称,包括质量鉴定和质量评定;
- 软件的对象:程序+文档
手工测试:
- 手工测试就是由人员一个个去执行测试的过程,以此发现程序中存在的问题
自动化测试:
- 自动化就是由机器代替人工去执行测试的过程,自动化测试要求测试人人员编写自动化脚本,一般使用python较多;
黑盒测试:
- 黑盒测试是不考虑程序内部实现逻辑(不看代码),仅从功能界面上对程序进行测试;
- 黑盒测试通常是由测试人员进行;
白盒测试:
- 白盒测试是考虑程序内部实现逻辑(查看代码),对所有的逻辑路径进行的覆盖测试;
- 白盒测试通常是由开发人员进行;
单元测试:
- 单元测试是最程序最基本的单元(最小可测单元)进行的测试,最小可测单元一般是人为规定的,当一般是一个函数或者一个方法;
- 单元测试是由程序员自己完成;
集成测试:
- 集成测试是在单元测试之后,将已经经过测试的两个单元进行组接,以测试他们直接接口的测试;
- 集成测试一般是由测试人员负责;
系统测试:
- 系统测试是在集成测试之后,它是对系统的功能和非功能进行全面的测试,包括功能、安全性、性能、易用性、美观性、兼容性等等
UAT测试:
也被称为用户验收测试或用户可接受性测试;UAT测试又分为正式验收测试和非正式验收测试
- 正式验收测试
- 正式验收测试是用户让第三方专业机构进行程序的验收工作;
- 非正式验收测试
- alpha测试:alpha测试是由一个或者多个用户在开发环境下进行的测试,一般开发人员在场,由开发人员当场记录问题,因此测试是可控的
- beta测试:beta测试是由一个或者多个用户生产环境下进行的测试,一般开发人员不在场,由用户记录问题并反馈,因此测试是不可控的;
小结
今天的内容有点多,这个虽然呀对于C++的干活没有之前多,但是呢毕竟磨刀不误砍柴工吗,这个知识可以在后期帮助同学们从整体框架上更好的理解一个项目的运作和分工,小伙伴们如果可以的话还是把上边提到的内容没事就翻一翻,混个眼熟,肯定是对自己有帮助的
- ⭐惊喜在这里⭐
好了,说些心里话吧,这些天收到了很多人的喜欢,我信心倍增,接下来还会持续向大家发光发热的.喜欢小杨这种博客学习的方式的给小杨点点赞和关注,小杨也会继续努力的,争取做到每周四~五更,让小伙伴们真正的从零学会C++.小杨也是刚毕业,有很多同学的技术都不是很好,看着他们的面试抓耳挠腮的,所以太懂这种啥也不会小伙伴们的困扰了,所以如果你想真正学会C++的话,认真跟着小杨一点点的学,肯定没问题的.