什么是软件工程(了解)

软件开发语言

机器码->汇编语言->c语言->高级语言(java)

定义

随着我们c语月的诞生,开发软件变得更加的团队化,因此暴露出一个巨大的问题,就是协作。
我们迫切需要一个方法和手段来约束我们的开发过程,指导我们更好地进行软件开发,所以聪明的人们借鉴了工程建筑的思想,通过不断的总结与归纳,形成软件工程


软件生命周期(了解)

定义:软件开始研制最终被废弃不用,所经历的各个阶段。


软件开发模型(了解)

软件开发模型是由开发决定的

软件的开发模型有哪些?

我们需要更好的开发,那么我们就得总结出一些模型,然后我们照着这些模型去开发软件。

瀑布模型

在这里插入图片描述
那请问这个模型有什么问题呢?
我们测试是在编码之后的,那如果在需求分析阶段就有bug的话,如果有需求和用户的需求违背,那么你的设计和编码都是会有问题的,而这个东西我们在测试阶段才发现那么其实我们的成本就会很高。而如果我们提前就进行测试,介入测试,那么我们的成本就会降低。

瀑布模型特点:信息结构有顺序
缺点:是测试人员在编码之后再进入测试,早期的错误到后期才被发现,极大地增加修复bug的成本。

v模型

在这里插入图片描述
V模型是在测试瀑布模型基础上的升级,更加细化我们的测试工作,把测试分为单元测试,集成测试、系统测试、验收测试,但是它还是存在和瀑布模型一样的缺点,就是编码之后再进入测试。

w模型

在这里插入图片描述
特点是它是V模型的升级,测试和开发同步进行,同时解决了瀑布模型和V模型存在的缺点。

h模型

在这里插入图片描述
H模型是与其他开发流程是完全独立的,他只有在什么时候会有去交涉,只有在进行测试的时候才会交涉。

x模型

在这里插入图片描述
他把整个程序切割成很多个程序片段,把项目区分成各种颗粒进行边开发边测试的状态,最终呢把所有的程序片段集.,做一点集成一点,做一点集成一点。

原型模型

在这里插入图片描述


现在常用的开发模型

敏捷开发模型

在这里插入图片描述
产品负责人认领了任务之后,把任务呢丢给对应的部门,然后我们的开发区认领任务,开发的主要去从产品功能列表中拿一部分先完成,接下来开发就开始进行设计编码,同样我们的测试需要同步进行测试设计进行测试,然后我们的第1个版本测完之后呢,我们测试在测试这个过程,开发就会去抽下一轮任务。然后等我们把测试任务测完之后呢,开发已经把第2个版本也开发完了,然后我们再继续接着测试,这样的循环,我们就不会等太久的时间。

我们主要是以人为中心,注重沟通,取代文档的输出。

W模型

前面已经提到

原型模型

前面已经提到

迭代开发模型

在这里插入图片描述
我们的项目比如有模块1,模块2,模块3,模块4,模块5,模块6。
那么我们的迭代式开发模型就是项目切割成多个版本进行迭代。
第一个版本:先开发好核心模块作为第1个版本(假设模块一和模块二是核心模块)。
迭代周期:15天到30天。
每一次版本迭代阶段:需求分析->计划->开发->测试->发布->回顾。
第2个版本:增加模块3模块4。
然后每次周期都是需求分析计划开发测试发布…
第3个版本:增加模块5
第4个版本:增加模块6

增量开发模型

精炼式开发是继续把项目切割成多个模块,是开发一个或多个模块,每次都不断的去递增模块进行开发。
比如项目中总共有6个功能模块
那第1次增量开发,我就开发模块1
增量式开发每个周期的阶段:需求分析->计划->开发->测试->发布
当第一个周期开发完之后,就进行第2次的增量开发:增加模块2
然后每次周期都是需求分析计划开发测试发布。


软件测试过程(重点掌握)

在这里插入图片描述

我们要进行软件测试,首先要进行一个需求分析,首先需求分析,产品整体出入的需求规格说明书。测试人员如何去测这个软具是否有问题?此时就根据需求规格说明书去衡量当前这个功能是否是对的,所以在做测试之前,需要详细的去理解这个需求规格说明书,同时理解完需求,还要进行一个需求评审。
那么什么是需求评审呢?评审参与的人员是谁,主要的目的是什么?我们从头开始来:
软件测试详细流程:
1、需求分析,重点:研读并理解需求规格说明书(SRS)。因为你必须知道当前你被测的软件有哪些需求,标准是什么?我们接下来以这个标准去判断它是问题还是不是问题,它的内部逻辑是什么?它的关联是什么?这些你都得通过需求分析去了解到。输出的文档:需求规格说明书
2、我们在进行需求分析的过程中,还要去参与需求评审。
**需求评审是做什么的?**需求评审他有一个需求评审会议:
那会议的参与人员是什么?主要目的是什么?
参与人员:产品经理,项目经理,开发,测试
主要目的:主要是进行项目业务的学习,方便我们更快的去了解这个需求。同时我们在看需求分析的时候,肯定是有一些不懂的,那么在这个阶段,我们就可以去学习,去发现需求的问题,有问题,我们就尽早的提出这个需求的问题,最终的确定内容写到需求规格说明书里面,此时就已经完全的确定了需求规格说明书。

然后接下来就是开发和测试同时根据需求规格说明书去开展后续的工作,他们是同时进行,就是开发做开发的计划,测试做测试的计划【同时进行】。

3、测试计划,输出的文档是测试计划文档
4、编写测试用例,编写完测试用例之后,我们还会进行用例评审,看一下你编写的这个测试用例覆盖率怎么样?对不对那些。与此同时,开发那边已经开发完了,我们就可以进行第5个步骤了。输出的文档是测试用例文档

5、部署测试环境,部署环境的人员可能是开发测试或者运维。没有对应文档
6、执行测试,我们先做冒烟测试,等冒烟测试通过才转正式测试。我们是根据测试用例去执行测试,然后在执行测试的过程中我们会发现bug,然后去提交bug,提交bug并不是不管了,而是去跟踪bug,目的是你提交的这个bug是否被修复好了,同时呢还要去验证与这个bug相关联的一些功能是否受影响。输出文的文档是bug的清单
7、编写测试报告:我们经过多轮的测试,去达到测试标准,然后在这个阶段,我们一般会输出一个测试报告输出的文档是测试报告
8、测试通过则发布上线


常见笔试面试题

笔试

软件的生命周期包括哪些阶段?你们的开发模型是什么?

  1. 需求分析:输出文档是需求规格说明书(SRS)参与人员是项目经理,产品,开发,测试。
  2. 设计:
    1)概要设计:针对软件的架构及模块以及这个模块业务关联与数据传递这一块的设计。输出文档时概要设计说明书参与人员是我们的开发人员
    2)详细设计:针对某个模块或某个功能的具体详细设计。输出文档,是详细设计说明书参与人员是开发人员
  3. 编码
  4. 测试:单元测试->集成测试->系统测试->验收测试
  5. 运行和维护

开发模型是敏捷开发模型还有迭代式开发模型

测试流程包含哪些阶段?

需求分析,需求评审,进行测试计划,然后用例的编写,然后用例的评审,然后执行测试,编写测试报告,然后再发布上线。


面试

你们公司的开发流程是怎样的?

需求分析,再做计划,然后再做设计,再编码。

你们公司的测试流程是怎样的?各个阶段的输出是什么?

需求分析输出的文档是需求规格说明书。
测试计划书的文档是测试计划文档。
编写测试用例输出的文档是测试用例文档。
部署测试环境没有对应的文档。
执行测试输出的文档是bug清单。
编写测试报告,输出的文档是测试报告,
测试通过发布上线没有对应文档。

开发环境,测试环境,生产环境是什么?你在测试环境后台添加的数据和信息,能够在生产环境看到吗?

三大环境:

开发环境

开发人员研发的环境。

测试环境

测试人员测试的环境,也可以理解为对应的由开发或者运维人员或者我们的测试人员拿到项目包部署到另外一台服务器对应的环境就是测试环境。

注意并不是开发开发出这个软件之后,我们是在开发那边去测试的,他们的环境不一样,我们是独立出来的。他开放完代码之后,他会把这个代码的包部署到测试环境上去,是另一台服务器。因为我们如果在开发那边的服务器去测试的话,那么开发那边进行下个任务的开发的时候,我们测试和开发是不能共用同一台服务器的,防止影响我们的互相工作。

生成环境

是产品真实用户的环境,比如我们现在访问www.baidu.com它就是一个生产环境。

你在测试环境后台添加的数据和信息,能够在生产环境看到吗?

不能。测试环境和生产环境是完全隔离的,你在测试后台添加的数据,生产环境看不到。


那本期我们说了测试的相关流程之后,我们后面就开始看这个流程里面的具体每一个阶段的任务。下期我们将从测试需求分析开始。最后如果这个总结对老铁们有用,别忘了点赞👍、关注、加收藏哦👋~

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐