测试目的,缺陷产生及软件开发过程模型

本文深入探讨了软件的多层次分类,如系统软件和应用软件,开源与闭源的区别,以及软件测试的全方位理解。从缺陷来源、定义到测试目的,涵盖了瀑布模型、螺旋模型和增量模型等开发过程模型。同时,剖析了软件危机、软件工程及生命周期管理,揭示了软件测试在提升产品质量的关键作用。
摘要由CSDN通过智能技术生成

软件与软件的分类

软件=程序+数据+文档 (掌握)

解释:软件不仅仅是应用程序,还应该包含和这个程序相关的数据和文档

软件测试:测试的对象有应用程序,数据,文档。

软件分类:

按照层次划分:系统软件,应用软件

按照组织划分:开源软件,闭源软件

按照结构划分:单机软件,分布式软件(bs架构软件(浏览器/服务器)依托体是浏览器,cs架构软件(客户端/服务器)下载客户端,依托体是服务器)

缺陷的由来

default缺陷

bug

缺陷:软件操作的实际结果和预期结果不一致(结果)。

产品说明书;说明了一个软件应该包含哪些功能,以及不能出现的功能

缺陷的定义:

a.软件未实现产品说明书应该包含的功能,

b.软件出现了 产品说明书不该出现的功能。

c.软件出现了软件说明书未提到的功能

d.软件未实现产品说明说虽然没明确提及但应该实现的目标

e.软件难以理解,不易使用,运行缓慢或者最终用户会认为不好。

不满足需求,超出或者低于需求的就是缺陷

软件测试的定义

正向思维:使自己信产品是能正常工作的,来评价一个程序或者系统的特性和功能,并确定它是否能够达到预期结果,软件测试就是以此为目的的、

*反向思维:测试是为了发现错误而执行 一个程序或者系统的过程,测试为了证明程序有错,一个成功的测试在于发现了以前未发现的错误。

*IEEE(电气电子工程师学会)定义的测试:在规定条件(测试环境)下运行系统或者构件(程序)的过程:观察和纪录结果,并对系统或者构件某些方面给出评价。(实际结果和预期结果的对比)

*广义的软件测试:来源于测试工作经验的总结(是对软件产品在形成过程中所包含的所有工作产品(程序。数据,文档)进行测试,不仅仅对程序)

软件测试贯穿始终整个软件生命周期,整个过程就是对软件产品的验证(verification)和确认(validation)

确认:通过提供相关的证据来证实软件需求中的功能是否都已实现

验证:通过提供相关的证据来证实功能的合法性或者正确性

确认就是确保你做了对的事情,验证就是确保你把事情做对了

软件测试的目的(*)

a。以最少的人力,物力,时间的投入,尽可能早的发现软件的各种错误和缺陷,并保证这些错误和缺陷得以修复,避免因产品上线后由于潜藏的错误而带来的商业风险。

b。利用测试过程中产出的测试信息和测试数据结果,作为后续项目再进行开发和测试过程中很重要的参考数据,不免再发生同样的问题。(软件的更新迭代问题)

总结:软件测试的目的,尽可能早的和不断地发现软件中潜藏的错误和缺陷,并保证得以修复。

软件测试的展开能保障软件产品的质量,而提高产品的质量还得看代码。

测试与调试的区别

软件研发过程中,调试和测试的区别点

1:调试debug,针对开发而言,一般指的是调试代码(目标:无错误)

2:测试test,针对整个项目研发过程而言的,测试工作包括全过程的。测试对象所有的软件相关的产品(程序,数据,文档)。(目标:零缺陷,虽然有缺陷,但是不影响用户体验)。

软件生命周期:从无到有,再到最终淘汰。

软件研发过程:产品经理和客户沟通,确定需求---------》沟通完成,确定需求-------》开发人员:提取开发需求编写代码,测试人员:提取测试需求设计测试用例

按照软件开发阶段划分软件测试工作:

单元测试:是针对软件中每个功能模块进行测试的

集成测试:对集成在一起的模块进行测试

确认测试:检测和验证集成后的软件是否满足需求说明书的要求。

系统测试:把被测软件放在真是的测试环境中进行测试工作的展开

验收测试:第三方或者客户来进行软件的验收,按照之前的协议条款,来决定是接收还是拒收。

软件危机(*

计算机软件在开发和维护过程中所遇到的一系列问题

具体表现在:

a 软件开发成本成本难以估算,无法制定出合理的开发计划

b 用户需求无法确切表达

c 软件质量存在问题

d 软件可维护性查

e 缺乏文档资料

软件工程(*)

软件危机的存在,阻碍了计算机软件的发展,为了解决软件危机产生的一系列问题,提出“软件工程”的概念

软件工程包含的俩个层面:

1.软件开发技术:包含了软件开发的方法学,软件工具,软件工程环境

2.软件项目管理:保障和提高软件质量,项目估算,人员配置,进度控制,配置管理,项目计划。

引起软件危机的主要原因是软件质量问题,而软件工程的提出就是为了解决产品的质量,对于软件测试来说,是软件管理体系中一个很重要的手段

软件生命周期

概述:软件的生命周期指的是从软件产品设想开始,到软件不在使用而结束的事件过程。

软件的生命周期过程:项目立项--》需求分析---》设计,编码,测试---》运行维护-----》淘汰

项目立项:确定要做什么类型的软件商品

需求分析:对软件中包含的需求点进行可行性分析,最终确定软件中要包含的功能点

设计编码:就是开发

发布:产品上线,用户使用

软件的生命周期是人们为了开发更好的软件,而总结归纳的软件生命周期实践参考。

软件开发过程模型

概述:软件开发过程模型体现的是一个软件开发的全过程,一个软件从无到有的过程。

瀑布模型(*):

|----------------------------定义阶段-----------------------------------------------------| |------------------------------开发阶段-----------------------------------

|计划(产出物:项目计划)<------>需求分析(产出物:需求说明书)|<------>| 设计(产出物:概要设计,详细设计)<------> 编码<-------

----------------------------------------------------|

测试------>运行维护<---___----运行维护|

优点:a,为项目提供了按阶段划分的检查点,每个阶段的工作都需要进行评审(查漏补缺),评审通过的情况下才能进行下阶段工作,

b,当前阶段完成,只需要关注后期阶段工作推进即可。

缺点:a,各阶段划分完全固定,每个阶段都会产生大量文档,增加工作量;

b,直到最后末期才能看到软件产品,极大增加开发风险

适用项目:适用于需求明确且变更较少的项目

螺旋模型:

制定计划 | 风险分析

                                                |   

                                          *    |          * 

                             *                |                        *

-------#----- ---¥--------------|---------------------*------------------

  •        *                                |                        *

                          *                    |         *

                                               |

客户评价 | 实施工程

概述:螺旋模型是一种渐进式的开发模型,一产品原型作为旋转点,每旋转一周都会经过计划,风险分析,实施工程,客户评估四个环节,经过若干次螺旋得到最终版本。

四个环节:

制定计划:确定软件目标,选定实施方案,确实项目开发的限制条件

风险分析:分析评估所选方案,考虑如何识别消除风险

实施工程:实施软件开发和测试

客户评价:评价开发的工作是否按照之前的计划来进行,提出修正意见,制定下一步计划。

适用项目:对于新进开发的,需求不明确的情况下可以考虑,便于进行风险分析和把控

缺点:因为有风险分析的过程,所以会投入大量的成本进行风险分析讨论,甚至因为风险更大,导致项目没办法推进。

增量模型(*)

^

| 增量1 分析------>设计------->编码------>测试

| 增量2 分析------>设计------->编码------>测试

| 增量3 分析------>设计------->编码------>测试

| 增量4 分析------>设计------->编码------>测试

|______________________________________________________________》

概述:增量模型是吧待开发的软件进行模块化的操作,每个模块作为一个增量组件,从而分批次的进行分析,设计,编码,测试,知道融合在项目中。

优点:a,增量模型,开发不需要一次性的吧整个项目交付,可进行分批次开发

b,抢占市场先机

缺点:a,要求待开发软件是能够进行模块化开发

b,要求项目管理人员的把握全局能力较高

适用项目:需求经常改变的项目研发

迭代模型(理解)

概述:项目的每一次迭代更新都是一个完整的软件开发过程:需求分析,设计,编码,测试,评估等完整的工作流程。一次迭代的过程就会产生一个可发布的产品,该产品为最终产品的子集

适用项目:事先不能完整地定义软件对应的所有需求,计划多期开发的项目。

敏捷开发模型

概述:是一种轻量,高效,低分险,更强调团队协作和沟通的开发方式,适合中小型开发团队,客户需求模糊或者多变,可以指导的迭代的以人为中心的软件开发模式

开发过程:强化:人与人之间的沟通,工作软件的应用,客户需要全程参与,需求多变,弱化:流程和工具,详尽的文档,合同谈判,遵循计划。

思想:产品拿到需求后,召开会议,把已确定的需求提交给研发团队;研发团队拿到需求后,就进行任务分配,确定短期的开发目标;任务分配完成后,进入开发周期,每日都会举行站立会议,汇报每天任务推进工作,经过1到4周后,软件研发完毕,举行演示会议,通过后,进入回顾会议,所有人员都参与提供可交付的产品,进行复盘总结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值