软件质量保证答案(共8篇)
1.软件质量保证答案 篇一
一、判断题:
1、发现错误多的模块,残留在模块中的错误也多。( √ ) (初级)
2、测试人员在测试过程中发现一处问题,如果问题影响不大,而自己又可以修改,应立即将此问题正确修改,以加快、提高开发的进程。( × )(初级)
3、单元测试通常应该先进行“人工走查”,再以白盒法为主,辅以黑盒法进行动态测试。( √ )(中级)
4、功能测试是系统测试的主要内容,检查系统的功能、性能是否与需求规格说明相同。( √ )(中级)
5、软件质量管理即QM由QA和QC构成,软件测试属于QC的核心工作内容。(√)7、软件测试只能发现错误,但不能保证测试后的软件没有错误。(√)
6、软件就是程序。(X)
7、测试只要做到语句覆盖和分支覆盖,就可以发现程序中的所有错误。(X)
8、I18N测试是指对产品做出具有国际性的规划,而L10N测试则是指对软件做出符合本地需求更改工作。(√)【高级】
二、选择题 (每题2分 20 )
1、进行软件质量管理的重要性有:(ABCD)【中级】
A、维护降低成本 B、法律上的要求 C、市场竞争的需要
D、质量标准化的趋势 E、软件工程的需要 F、CMM过程的一部分
G、方便与客户进一步沟通为后期的实施打好基础
2、以测试的形态分测试可以分为:(ABC)【中级】
1、进行软件质量管理的重要性有:(ABCD)【中级】
A、维护降低成本 B、法律上的要求 C、市场竞争的需要
D、质量标准化的趋势 E、软件工程的需要 F、CMM过程的一部分
G、方便与客户进一步沟通为后期的实施打好基础
2、以测试的形态分测试可以分为:(ABC)【中级】
1、进行软件质量管理的重要性有:(ABCD)【中级】
A、维护降低成本 B、法律上的要求 C、市场竞争的需要
D、质量标准化的趋势 E、软件工程的需要 F、CMM过程的一部分
G、方便与客户进一步沟通为后期的实施打好基础
2、以测试的形态分测试可以分为:(ABC)【中级】
1、进行软件质量管理的重要性有:(ABCD)【中级】
A、维护降低成本 B、法律上的要求 C、市场竞争的需要
D、质量标准化的趋势 E、软件工程的需要 F、CMM过程的一部分
G、方便与客户进一步沟通为后期的实施打好基础
2、以测试的形态分测试可以分为:(ABC)【中级】
1、进行软件质量管理的重要性有:(ABCD)【中级】
A、维护降低成本 B、法律上的要求 C、市场竞争的需要
D、质量标准化的趋势 E、软件工程的需要 F、CMM过程的一部分
G、方便与客户进一步沟通为后期的实施打好基础
2、以测试的形态分测试可以分为:(ABC)【中级】
A、建构性测试 B、系统测试 C、专项测试
D、单元测试 E、组件测试 F、集成测试
3、选出属于黑盒测试方法的选项(ABC)【初级】
A、测试用例覆盖 B、输入覆盖 C、输出覆盖
D、分支覆盖 E、语句覆盖 F、条件覆盖
4、编写测试计划的目的是:(ABC)【中级】
A、使测试工作顺利进行 B、使项目参与人员沟通更舒畅 C、使测试工作更加系统化
D、软件工程以及软件过程的需要 E、软件过程规范化的要求F、控制软件质量
5、依存关系有4种分别是:(ABCD)【高级】
A、开始-结束 B、开始-开始 C、结束-开始
D、结束-结束 E、开始-实施-结束 F、结束-审核-开始
6、软件质量管理(QM)应有质量保证(QA)和质量控制(QC)组成,下面的选项属于QC得是:(ABC)【高级】
A、测试 B、跟踪 C、监督D、制定计划 E、需求审查 F、程序代码审查
7、实施缺陷跟踪的目的是:(ABCD)【中级】
A、软件质量无法控制 B、问题无法量化 C、重复问题接连产生 D、解决问题的知识无法保留 E、确保缺陷得到解决 F、使问题形成完整的闭环处理
8、使用软件测试工具的目的:(ABC)【中级】
A、帮助测试寻找问题 B、协助问题的诊断 C、节省测试时间
D、提高Bug的发现率 E、更好的控制缺陷提高软件质 F、更好的协助开发人员
9、典型的瀑布模型的四个阶段是:(ABCD)【高级】
A、分析 B、设计 C、编码D、测试 E、需求调研 F、实施
10、PSP是指个人软件过程 ,是一种可用于( A )、( B )和( C )个人软件工作方式的自我改善过程。【高级】
A、控制 B、管理 C、改进D、高效 E、充分 F、适宜
三、问答题
1、测试人员在软件开发过程中的任务是什么?(初级)(5分) 答:1、寻找Bug;
2、避免软件开发过程中的缺陷;3、衡量软件的品质;4、关注用户的需求。
总的目标是:确保软件的质量。
2、在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?(初级)(6分)
答:一条Bug记录最基本应包含:编号、Bug所属模块、Bug描述、Bug级别、发现日期、发现人、修改日期、修改人、修改方法、回归结果等等;要有效的发现Bug需参考需求以及详细设计等前期文档设计出高效的测试用例,然后严格执行测试用例,对发现的问题要充分确认肯定,然后再向外发布如此才能提高提交Bug的质量。
3、界面测试题及设计题。请找出下面界面中所存在的问题并分别列出;用黑盒测试的任何一种方法设计出此登陆窗体的测试用例。(中级)(6分)
答:1、窗体的标题栏中为空,没有给出标题。 2、用户名和密码控件的字体不一致并且没有对齐3、文本框的大小不一致没有对其。4、确定和取消按钮控件的大小不一致。
4、黑盒测试和白盒测试是软件测试的两种基本方法,请分别说明各自的优点和缺点!(中级)(5分)
答:黑盒测试的优点有:
1)比较简单,不需要了解程序内部的代码及实现;
2)与软件的内部实现无关;
3)从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;
4)基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;
5)在做软件自动化测试时较为方便。
黑盒测试的缺点有:
1)不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的30%;
2)自动化测试的复用性较低。
白盒测试的优点有:
帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题。
白盒测试的缺点有:
1)程序运行会有很多不同的路径,不可能测试所有的运行路径;
2)测试基于代码,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;
3)系统庞大时,测试开销会非常大。
5、根据自己的理解回答什么是软件测试,软件测试分为哪几个阶段。(初级)(5分)
答:软件测试是一个为了寻找软件中的错误而运行软件的过程,一个成功的测试是指找到了迄今为止尚未发现的错误的测试。
软件测试一般分为单元测试、集成测试和系统测试。
6、根据自己的理解什么是测试用例和测试规程,设计一个测试用例应当从哪几方面考虑?(中级)(10分)
答:狭义的讲,一个测试用例就是测试人员用以测试被测软件的某个特性或特性组合的一组数据。这组数据可能是从用户处得来的实际的一组数据,也可能是测试人员专门设计出来的测试软件某些功能的一组数据。
测试规程就是详细的对测试用例设计方法、测试方法、测试工具、测试环境和测试数据进行描述的文档,还可以包括能把某个或某一组测试用例应用到被测软件上完成某项测试的一系列的操作步骤。
设计测试用例应当从以下几方面考虑:边界值,等价类划分,有效/无效值等
1 . 软件测试 的目的是尽可能多的找出软件的缺陷。( Y)
2 .Beta 测试是验收测试的一种。( Y)
Acceptance testing
验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。
3 .验收测试是由最终用户来实施的。( N )
是由测试人员来实施的
4 .项目立项前测试人员不需要提交任何工件。( Y ) 工件:加工过程中生产对象
5 .单元测试能发现约80% 的软件缺陷。( Y )
6 .代码评审是检查源代码是否达到模块设计的要求。( N )
代码评审也称代码复查,是指通过阅读代码来检查源代码与编码标准的符合性以及代码质量的活动。
7 .自底向上集成需要测试员编写驱动程序。( Y )
自顶向下综合测试的具体步骤为:
1 以主控模块作为测试驱动模块,把对主控模块进行单元测试时引入的所有桩模块用实际模块替代;
2 依据所选的集成策略(深度优先或广度优先),每次只替代一个桩模块;
3 每集成一个模块立即测试一遍;
4 只有每组测试完成后,才着手替换下一个桩模块;
5 为避免引入新错误,须不断地进行回归测试(即全部或部分地重复已做过的测试)。
自底向上综合测试的步骤分为:
1 把低层模块组织成实现某个子功能的模块群(cluster);
2 开发一个测试驱动模块,控制测试数据的输入和测试结果的输出;
3 对每个模块群进行测试;
4 删除测试使用的驱动模块,用较高层模块把模块群组织成为完成更大功能的新模块群。
8 .负载测试是验证要检验的系统的能力最高能达到什么程度。( N )
负载测试(Load testing),通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征。例如,响应时间、事务处理速率和其他与时间相关的方面。
9 .测试人员要坚持原则,缺陷未修复完坚决不予通过。( N )
10 .代码评审员一般由测试员担任。( N )
11 .我们可以人为的使得软件不存在配置问题。( N )
是一种标识、组织和控制修改的技术。软件配置管理应用于整个软件工程过程。我们知道,在软件建立时变更是不可避免的,而变更加剧了项目中软件开发者之间的混乱。
12 .集成测试计划在需求分析阶段末提交。( N )
执行阶段
1)时间安排 单元测试已经完成后就可以开始执行集成测试了
2)输入 需求规格说明书 概要设计 集成测试计划 集成高度设计 集成测试例 集成测试规程 集成测试代码(如果有)集成测试脚本 集成测试工具 详细设计 代码 单元测试报告
3)入口条件 单元测试阶段已经通过基线化评审
4)活动步 骤 执行集成测试用例 回归集成测试用例 撰写集成测试报告
5)输出 集成测试报告
6)出口条件 集成测试报告通过集成测试阶段基线评审
选择题
1 .软件验收测试的合格通过准则是:(ABCD)
A . 软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。
B . 所有测试项没有残余一级、二级和三级错误。
C . 立项审批表、需求分析文档、设计文档和编码实现一致。
D . 验收测试工件齐全。
2 .软件测试计划评审会需要哪些人员参加?( ABCD )
A .项目经理
B .SQA 负责人
软件质量保证(SQA)是建立一套有计划
目标 1: 软件质量保证工作是有计划进行的。
目标 2: 客观地验证软件项目产品和工作是否遵循恰当的标准、步骤和需求。
目标 3: 将软件质量保证工作及结果通知给相关组别和个人。
目标 4: 高级管理层接触到在项目内部不能解决的不符合类问题。
C .配置负责人
D .测试组
3 .下列关于alpha 测试的描述中正确的是:( AD )
A .alpha 测试需要用户代表参加
B .alpha 测试不需要用户代表参加
C .alpha 测试是系统测试的一种
D .alpha 测试是验收测试的一种
4 .测试设计员的职责有:( BC )
A .制定测试计划
B .设计测试用例
C .设计测试过程、脚本
D .评估测试活动
5 .软件实施活动的进入准则是:( ABC )
A .需求工件已经被基线化
工件加工过程中的生产对象。
基线化 一个文档如果经过讨论被通过了,被固定了,就可以说这个文档被“基线化”了,然后所有人就可以在这个“基线”的基础上工作。
B .详细设计工件已经被基线化
C .构架工件已经被基线化
D .项目阶段成果已经被基线化
1. 软件验收测试包括:_正式验收测试,alpha测试,beta测试。
2. 系统测试的策略有:功能测试,性能测试,可靠性测试,负载测试,易用性测试,强度测试,安全测试,配置测试,安装测试,卸载测试,文挡测试,故障恢复测试,界面测试,容量测试,兼容性测试,分布测试,可用性测试
(有的可以合在一起,分开写只要写出15 就满分哦)
3. 设计系统测试计划需要参考的项目文挡有:_软件测试计划,软件需求工件和迭代计划。
4. 对面向过程的系统采用的集成策略有:自顶向下,自底向上两种。
5. 通过画因果图来写测试用例的步骤为:
(1)根据程序规格说明书描述,分析并确定因(输入条件)和果(输出结果或程序状态的改变),画出因果图。
(2)将得到的因果图转换为判定表。
(3)为判定表中每一列所表示的情况设计一个测试用例。
四、简答
1. 区别阶段评审的与同行评审
答:
同行评审目的:发现小规模工作产品的错误,只要是找错误;
阶段评审目的:评审模块 阶段作品的正确性 可行性 及完整性
同行评审人数:3-7人 人员必须经过同行评审会议的培训,由SQA指导
阶段评审人数:5人左右 评审人必须是专家 具有系统评审资格
同行评审内容:内容小 一般文档 40页, 代码 500行
阶段评审内容: 内容多,主要看重点
同行评审时间:一小部分工作产品完成
阶段评审时间: 通常是设置在关键路径的时间点上!
2. 什么是软件测试
答:测试是为发现错误而执行程序的过程
软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。
3 简述集成测试的过程
答:系统集成测试主要包括以下过程:
1. 构建的确认过程。
2. 补丁的确认过程。
3. 系统集成测试测试组提交过程。
4. 测试用例设计过程。
5. 测试代码编写过程。
6. Bug的报告过程。
7. 每周/每两周的构建过程。
8. 点对点的测试过程。
9. 组内培训过程。
5 白盒测试有几种方法
答:总体上分为静态方法和动态方法两大类。
静态:关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。
动态:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
6 系统测试计划是否需要同行审批,为什么
答:需要,系统测试计划属于项目阶段性关键文档,因此需要评审。
7Alpha 测试与beta 的区别
Alpha测试(α测试)是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成。Alpha测试发现的错误,可以在测试现场立刻反馈给开发人员,由开发人员及时分析和处理。目的是评价软件产品的功能、可使用性、可靠性、性能和支持。尤其注重产品的界面和特色。Alpha测试可以从软件产品编码结束之后开始,或在模块(子系统)测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。有关的手册(草稿)等应该在Alpha测试前准备好。
Beta测试(β测试)是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。因而,Beta测试是在开发者无法控制的环境下进行的软件现场应用。在Beta测试中,由用户记下遇到的所有问题,包括真实的以及主管认定的,定期向开发者报告,开发者在综合用户的报告后,做出修改,最后将软件产品交付给全体用户使用。Beta测试着重于产品的支持性,包括文档、客户培训和支持产品的生产能力。只有当Alpha测试达到一定的可靠程度后,才能开始Beta测试。由于Beta测试的主要目标是测试可支持性,所以Beta测试应该尽可能由主持产品发行的人员来管理。
答:Alpha 测试 在系统开发接近完成时对应用系统的测试;测试后仍然会有少量的设计变更。这种测试一般由最终用户或其它人员完成,不能由程序或测试员完成。
Beta 测试 当开发和测试根本完成时所做的测试,最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成。
8 比较负载测试,容量测试和强度测试的区别
答:负载测试:在一定的工作负荷下,系统的负荷及响应时间。
强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。
容量测试:容量测试目的是通过测试预先分 析出反映软件 系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。容量测试是面向数据 的,并且它的目的是显示系统可以处理目标内确定的数据容量。
9 测试结束的标准是什么?
答:用例全部测试。覆盖率达到标准。缺陷率达到标准。其他指标达到质量标准。
10 描述软件测试活动的生命周期?
测试周期分为计划、设计、实现、执行、总结。其中:
计划:对整个测试周期中所有活动进行规划,估计工作量、风险,安排人力物力资源,安排进度等;
设计:完成测试方案,从技术层面上对测试进行规划;实现:进行测试用例和测试规程设计;执行:根据前期完成的计划、方案、用例、规程等文档,执行测试用例。总结:记录测试结果,进行测试分析,完成测试报告。
11 软件的缺陷等级应如何划分?
A 类 严重错误,包括以下各种错误:
1 . 由于程序所引起的死机, 非法退出
2 . 死循环3 . 数据库发生死锁 4 . 因错误操作导致的程序中断
5 . 功能错误6 . 与数据库连接错误 7 . 数据通讯错误
B 类 较严重错误,包括以下各种错误:
1 . 程序错误 2 . 程序接口错误
3 . 数据库的表、业务规则、缺省值未加完整性等约束条件
C 类 一般性错误,包括以下各种错误:
1 . 操作界面错误(包括数据窗口内列名定义、含义是否一致)
2 . 打印内容、格式错误 3 . 简单的输入限制未放在前台进行控制
4 . 删除操作未给出提示 5 . 数据库表中有过多的空字段
D 类 较小错误,包括以下各种错误:
1 . 界面不规范 2 . 辅助说明描述不清楚
3 . 输入输出不规范4 . 长操作未给用户提示5 . 提示窗口文字未采用行业术语6 . 可输入区域和只读区域没有明显的区分标志
E 类 测试建议
4 怎么做好文档测试
仔细阅读,跟随每个步骤,检查每个图形,尝试每个示例。
检查文档的编写是否满足文档编写的目的
内容是否齐全,正确
内容是否完善
标记是否正确
2.软件质量保证答案 篇二
1 软件质量的概念
现阶段,我国以及国际范围内对软件质量的内涵尚未进行明确的定义,人们对其理解也各有其侧重面。克劳士比定义了狭义意义上的质量,他认为质量就是达到人们预先设定的要求,能够符合人们的基本期望。因此,在对产品质量进行判断以及对需求能否适用于产品进行确定时,该定义却忽略了产品质量之间的固有性差异。而朱兰则以适用性来定义质量,然而当两个产品都具有适用性时,该定义却无法通过有效的机制对产品的优劣进行准确的判断。ISO规定质量即固有特性满足要求的程度,该定义认为,质量应对顾客及有关方面存在的一系列要求进行满足;存在质量要求的包括产品、体系以及过程等;质量的定义不是一成不变的僵化的设定,而是不断发展的、具有开放性特征的概念;只有顾客以及其他方面能够对质量的高低、好坏及其对比性进行最终的判定;经济学定义了质量的本质,认为质量的目的主要在于通过付出最低的成本以取得最大的利益。而信息技术标准规定,软件质量的特性包括功能性、可靠性、应用性、效率、维护性以及可移植性六种性质,在对软件产品质量进行判断以及评定时可以以这几个特性为参考依据。
2 软件质量保证存在的问题
2.1软件质量管理理念薄弱
在软件外包企业进行软件开发的过程中,很多设计人员十分的重视技术,认为技术能够从根本上对软件质量上存在的一系列问题进行合理有效的解决,因此对质量管理工作没有投入足够的力度,导致质量管理以及控制缺乏严格性以及规范性,给软件质量造成了极大的威胁,除此以外,大量的有关实践证明,在软件开放过程以及维护过程中,部分问题的解决并不能仅仅只是依赖于技术提升。一旦缺乏质量管理理念而忽视了软件质量保证工作,就有很大的可能导致软件设计及开发质量很难得到全面切实的提升。
2.2软件开发过程规范性差
部分软件开发人员在进行软件开发工作时,过于依赖自身以往在工作中积累的经验以及日常工作中形成的习惯,导致工作规范性较低,甚至存在很大的任意性,给软件质量造成了很大的影响,除此以外,人员分配责任的交叉、开发计划的混乱以及文档编写的不明确也是不容忽视的几个弊端。开发软件时,发现问题后存在的这些不规范行为会对软件开发项目整体进度、时间以及问题的及时解决造成恶劣的负面影响,还会使开发效率大大降低,无形之中增加了人员成本支出以及开发成本的浪费。因此,开发过程要以明确、科学以及合理制定的软件质量保证规范体系为依据,另外,还要确保规范工作的贯彻落实,从而真正意义上实现软件开发工作的规范化,切实增强软件开发过程中软件质量控制与管理力度,促进软件质量的提升。
2.3软件企业组织结构不合理
在部分软件外包企业中,建立的人员组织结构合理性较为缺乏,制度也存在较大的疏漏,一旦发现问题而难以同直接负责人取得联系时,责任的确定就比较模糊。比如在没有设立组长的软件开发组中,组员对自身的责任认识不到位甚至存在误区,那么当发现问题时,就会导致责任的承担人不明确,问题也难以得到合理有效的解决,最终导致开发混乱局面的形成。
对于软件企业而言,软件质量是一个不容忽视的重要问题。一旦无法保证软件质量,软件企业将很难实现长足稳定的发展,进而导致其综合实力的削弱,将难以在激烈的市场环境中占据一席之地。因此,软件企业应该对软件产品质量进行确定,软件质量保证方法的优劣同软件产品的质量高低息息相关。质量方法作为质量保证的重要前提,其立足于不同企业的背景,充分考虑了软件产品的特性,有机的结合质量标准,所以这种研究方法能够在软件开发期间项目组成员顺利展开质量保证工作的过程中发挥重要的作用。软件质量保证方法同软件开发项目的各个环节均有着紧密的联系,软件开发活动应该严格遵循软件质量保证方法,以提高软件开发管理工作的规范性,为项目质量以及计划的和谐统一性提供全面的保障。
3 软件外包的软件质量保证过程
软件质量保证作为一项基础活动,其贯穿于软件项目的整个过程,一般情况下,它涉及了质量管理方法以及软件工程的工具以及技术,另外,正式技术评审也是这个过程必不可少的重要内容,其采用的测试策略具有层次性以及多样性特征,除此以外,其不仅控制着文档的以及文档的修改,还严格监控软件的开发,以确保与软件开发规程的和谐统一性,报告机制以及度量机制也是软件质量保证必不可少的重要内容。软件质量保证充分全面的考虑了用户的多元化需求,并且能够以此为依据为用户的各种活动提供优质的服务,在软件开发过程中,这些活动同各个环节有着紧密的联系,在一定程度上,评估活动能力水平与产品要求水平的差异由软件质量度量来实现。软件质量保证的过程一般包括软件项目启动、软件质量保证计划的制定及其监控以及评审、问题的上报等。
3.1制定软件质量保证计划
软件质量保证计划的制定应该以项目计划为依据在启动软件项目后完成,这个过程包括了对不同阶段的检查重点进行明确的定义,对监控对象进行全面的标识,对产品质量保证不同阶段的输出产品进行记录。
3.2监控以及评审软件质量保证计划
软件质量保证计划编写完成后,应该开展软件质量保证计划的评审以及监控程序,然后根据评审报告结果对受影响的组进行通知。在监控阶段产品的过程中,应该严格遵循计划对阶段产品的完整输出进行严格的检查,以确保企业内部规程规章的和谐统一。软件质量保证检查阶段产品内容时,一般无法确保其正确性,因此这个过程应该由项目评审负责。软件质量保证评审有利于提高评审的有效性,因此,应对评审人的资格、对象的完整性以及验证报告结论的明确性进行确认。
3.3解决问题
软件质量保证应该对项目各个阶段和过程中存在的问题进行跟踪,并确保问题得到合理有效的解决。在审查过程中,一旦发现设计规格存在瑕疵时,项目负责人应该及时的更新设计规格,同时软件质量保证应该在这个过程中实行严密即时的跟踪和监控,以更好地解决设计规格中不断出现的新的瑕疵。当问题能够在项目组内得到有效的解决时,应该在本组内解决,当项目负责人没有能力或者权限使问题得到良好的解决时,应该及时的向高层主管进行汇报。
4 软件外包的软件质量保证方法
软件质量保证是以服务于管理者、为其提供软件项目以及产品可视性为主要目的。一般情况下,软件质量保证方法有以下两种:首先,重视预防,具体可以利用过程管理以及标准化管理等方式对软件质量进行严格的控制,其可谓是一种事前控制手段;其次是事后控制,产品质量缺陷一般是通过技术评审、调试以及测试等方式发现。相比于事前控制而言,事后控制存在更大的局限性,对软件质量问题的解决更加被动,因此,事前控制可以说是软件质量保证优先选择的重要方法。就技术层面而言,软件质量保证方法涵盖了技术级、方法级以及框架级,其中,技术级侧重于存在问题的具体解决方法,可以根据情况选择白盒测试或者黑盒测试,方法级是技术级以及框架级的桥梁,对于保障软件质量有着重要的意义,而框架级可以对行为以及这种行为产生的结果进行明确的指导。
软件质量保证应该立足于用户满意度,其构建的质量保证体系应该能够对未出现的问题进行全面有效的预防。软件质量的影响因素包括人为、过程以及技术因素,在测试软件时,可以利用经过精心设计而成的软件测试为软件质量保证提供全面保障。
软件质量保证应该充分考虑并立足于客户实际的多元化的质量需求,并以此为基础在软件开发期间进行质量目标的确定;接下来要对软件质量度量进行明确的定义,以对项目活动结果进行评价,判定质量目标达成与否;另外,要对有助于质量目标实现的活动进行确定,同时将其应用于软件生命周期模型的构建;最终应对经过评审鉴定合格的质量活动进行确认,对质量目标完成与否展开系统客观的评价,当软件质量没有达到质量目标时,应及时的通过合理有效的修正行动改善软件质量,以确保软件质量保证的顺利实现。
5 结束语
总而言之,软件质量保证方法不仅对于软件质量的提高有着重要的意义,还有利于减少软件产品交付后形成的软件质量问题,切实地改善了顾客以及软件企业之间的关系,对于软件企业的长远发展有着重要的积极作用。软件质量保证涉及了不同的活动和构成活动的不同过程,因此,对软件项目过程的分析、控制以及改进有利于控制对软件质量造成影响的各种因素,最终为软件质量的保证提供全面切实的保障。
参考文献
[1]吴平平.软件外包公司的软件质量管理流程探讨[J].现代商贸工业,2011,23(24):409-409.
[2]曹萍,李晓霞.基于顾客满意的外包软件质量评估[J].财经理论研究,2014(4):106-112.
[3]王耀志.软件质量监督应把握的六个重点[J].机械管理开发,2012(1):204-205.
[4]刘曙,徐晓飞,王忠杰.面向顾客满意度的软件外包服务质量设计方法[J].计算机集成制造系统,2012(4):881-887.
3.软件质量保证模型探析 篇三
【关键词】能力成熟度模型;软件生命周期;软件质量保证
目前,软件企业面临的最大的问题是顾客对产品不满意,究其原因,软件质量保证技术的不完善是主要原因之一。就整体而言,我国的软件质量管理和质量保证工作仍处于创建阶段,国外的软件质量管理和质量保证工作也不尽完善,现有的软件质量保证是在软件开发过程中的每一步都进行“保护性活动”。主要内容包括对方法和工具应用的规程、技术复审、测试策略、保证与标准符合的规程,以及度量和报告机制。在技术上的主要手段是测试和复审,在管理上的主要手段是ISO9001的认证[1]。ISO9001是一种“静态”的质量保证标准,只规范了质量体系的最低可接受水平,并不描述一个组织如何实现这些系统质量要素来满足顾客的需求;CMM是一个致力于组织过程改进的框架,问题是并未提供有关实现关键过程域所需要的具体知识和技能[2],在一定程度上造成了开发过程的僵化,对于当前软件业来说也是很难实现的。
一、ISO9001与CMM的联系
CMM和ISO9001都涉及质量管理和过程管理,并且都受到类似的利害关系驱动,两者之间的相似之处总结为以下四点:
(1)它们的精神一致,都有一个基本思想:“言所行,行所言”;
(2)二者都强调管理、过程、規范化和文档化;
(3)ISO9001与CMM的出发点都是通过对生产过程进行管理来确保产品的质量;
(4)都源自以戴明为首的管理专家的制度管理思想。
首先,不管是CMM还是ISO9001都强调对产生应用软件之过程的管理,提高软件产品的生产效率和软件的质量,同时,软件工程理论的广泛运用也推动了软件产业由小规模生产到集成自动化生产迈进。这也充分说明,软件产品的质量不仅表现在最终产品的质量,还应该包含软件产生过程的质量,只有这样,才能使软件组织连续不断地生产出高质量的软件产品。
此外,CMM和ISO9001并不是孤立或彼此矛盾的。它们的核心思想都来源于埃华茨·丹明和约瑟夫·佐兰提出的全面质量管理思想,这种质量管理思想强调预防,而不是检修缺陷与错误改正。因此,它们之间的结合在理论上是可能的。ISO9001的每一个质量要素都可以对应到CMM2-3级中关键过程区域的特征上。而CMM在生产过程中的管理重点,又弥补了ISO9001在微观管理上的不足。另外ISO9001:2000版中增加的度量正好是CMM第四级强调的重点。
二、ISO9001与CMM的区别
(一)保证质量的方式不同
ISO9001作为质量保证标准,只论述了质量体系的最小需求,即合格质量体系的最低可接受水平。它是一种“静态”标准,企业只要符合它要求的条件并通过权威机构的审核,就可以通过认证,证明企业的内部管理已经达到一定水平,符合该标准规范的要求。而CMM则强调过程控制、过程管理、持续的过程改进。CMM不仅仅是对产品质量的认证,更是一种改善软件过程的模型,它以一种结构化的成熟度框架描述了软件管理和工程实践,指出了软件过程不断改进的科学途径[3]。它所定义的5个级别就像5个台阶,企业必须一步一步地“攀登”。每一个成熟度级别,既是企业发展的阶段性目标,又是评价企业能力水平的一个标准。当通过某一级CMM评估后,企业还必须持续不断地改进过程,其目标是要达到可持续发展、可优化的程度,以此来实现高质量、高效率、低成本的生产软件。因此,可以认为CMM是一个“动态”模型。
需要强调的是,ISO9001着重于考核产品的质量和产品过程的受控状态,给企业提供一种PASS/FAIL的检查体系,即企业的过程能力只有两种状态,虽然在缺陷预防和内审管理中涉及到了过程改进,但是并没有对改进的目标和方法进行指导和控制。CMM则重点考核软件组织的工程能力,而且突出不断改进、升级的要求。显然过程不断的改进、能力不断的增强,新技术的应用就会收到更好与更快的成效,产品的质量就会不断的得到提高和保障。
(二)认证审核过程不同
ISO的认证过程分为两个情况——机构或者通过了ISO认证,或者没有。如果机构通过了ISO认证,其过程已满足ISO9000的标准要求。与此不同的是,CMM给出的是过程改进的体系。CMM将软件过程划分成5个成熟度级别——从原始级(第一级)到优化级(第五级)。软件机构可处在其中的任何一个级别,它的每一级对所要实现的关键过程域都有详细的要求,并且强制企业能自我更新和持续改进,以实现缺陷预防[4]。这对于提高软件企业自身质量管理素质是非常有利的。
但CMM毕竟是一个在学术报告基础上建立起来的一套评估体系,它的认证结果是由SEI授权的首席评估员寄一封带有本人签名的信给被评估者,并在SEI备案,没有任何证书,终生受用,中间不再审查。而通过ISO9000认证的企业,要在中国技术监督局备案,并且发证给企业,并要求每年审查,所有参加多边认可协议的国家必须认可,适用性强。
(三)适用范围不同
ISO9001标准是一个适用于提供各种产品/服务企业的通用型的企业标准,而且主要是针对制造业制定的[5]。正是由于ISO9001的通用性,使得它无法满足软件企业更深层次的专业化管理需求。而CMM是专门针对软件开发企业设计的,可以帮助软件企业有效地管理软件过程。
ISO是通用的,并且是从客户和外部审计者的角度来写的,它提出的是最基本的要求,所以不是十分具体。而CMM是面向软件的,即面向软件开发人员的,它提供了机构内部过程改进的指南,而且CMM对每个级别的关键过程域都有很详细的说明,光CMM的关键实现的说明就有500页之多。
(四)管理层次不同
从管理层次上看,ISO要比CMM所处的级别高,ISO只是提出了一个质量管理框架,是属于指导性的框架,而CMM提出的框架是一个操作性很强的框架,其KPA过程非常明确地提出了过程目标和过程注意事项。
三、相关建议
在软件组织中,可以将ISO和CMM结合起来应用,即:把ISO作为软件质量管理的指导性框架,把CMM作为具体实施层的应用,这样就可以充分利用二者的优势来共同完成对软件开发过程的质量控制,从而达到既提高软件开发效率又保证所开发的软件具有较高的质量。我国中小软件企业在建立软件质量保证模型时,应该考虑以下几个方面的因素:
(1)某种程度上市场目标决定质量目标,只有能满足客户需求的软件才可以称为好的软件。
(2)在考虑最终软件成品的同时,要考虑软件过程的质量保证。
(3)全面质量管理及CMM思想的集成,要关注软件过程控制能力以及过程持续改进能力。
参考文献
[1]李娟.基于QFD的软件质量保证模型研究[D].西北工业大学,2006.
[2]李娟.CMM实施过程模型及实例化方法研究[D].中国科学院软件研究所,2005.
4.软件测试面试试题及答案 篇四
因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。
二. 您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?
我曾经做过web测试,后台测试,客户端软件,其中包括功能测试,性能测试,用户体验测试。最擅长的是功能测试
三. 您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)
测试类型有:功能测试,性能测试,界面测试。
功能测试在测试工作中占的比例最大,功能测试也叫黑盒测试。是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
界面测试,界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引用户的直接优势。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与放弃中付诸东流。
区别在于,功能测试关注产品的所有功能上,要考虑到每个细节功能,每个可能存在的功能问题。性能测试主要关注于产品整体的多用户并发下的稳定性和健壮性。界面测试更关注于用户体验上,用户使用该产品的时候是否易用,是否易懂,是否规范(快捷键之类的),是否美观(能否吸引用户的注意力),是否安全(尽量在前台避免用户无意输入无效的数据,当然考虑到体验性,不能太粗鲁的弹出警告)?做某个性能测试的时候,首先它可能是个功能点,首先要保证它的功能是没问题的,然后再考虑该功能点的性能测试
四.您认为做好测试用例设计工作的关键是什么?
白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果
黑盒测试用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题
五. 请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。
黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。
软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:
1、是否有不正确或遗漏的功能?
2、在接口上,输入是否能正确的接受?能否输出正确的结果?
3、是否有数据结构错误或外部信息(例如数据文件)访问错误?
4、性能上是否能够满足要求?
5、是否有初始化或终止性错误?
软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:
1、对程序模块的所有独立的执行路径至少测试一遍。
2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
3、在循环的边界和运行的界限内执行循环体。
4、测试内部数据结构的有效性,等等。
单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。
单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。
集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。
系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。(常见的联调测试)系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计。
验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。
验收测试是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。
六. 测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?
软件测试计划是指导测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。
测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的是测试测试策略和测试方法(最好是能先评审)
七、 您认为做好测试计划工作的关键是什么?
1. 明确测试的目标,增强测试计划的实用性
编写软件测试计划得重要目的就是使测试过程能够发现更多的软件缺陷,因此软件测试计划的价值取决于它对帮助管理测试项目,并且找出软件潜在的缺陷。因此,软件测试计划中的测试范围必须高度覆盖功能需求,测试方法必须切实可行,测试工具并且具有较高的实用性,便于使用,生成的测试结果直观、准确
2.坚持“5W”规则,明确内容与过程
“5W”规则指的是“What(做什么)”、“Why(为什么做)”、“When(何时做)”、“Where(在哪里)”、“How(如何做)”。利用“5W”规则创建软件测试计划,可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What),确定测试的开始和结束日期(When),指出测试的方法和工具(How),给出测试文档和软件的存放位置(Where)。
3.采用评审和更新机制,保证测试计划满足实际需求
测试计划写作完成后,如果没有经过评审,直接发送给测试团队,测试计划内容的可能不准确或遗漏测试内容,或者软件需求变更引起测试范围的增减,而测试计划的内容没有及时更新,误导测试执行人员。
4. 分别创建测试计划与测试详细规格、测试用例
应把详细的测试技术指标包含到独立创建的测试详细规格文档,把用于指导测试小组执行测试过程的测试用例放到独立创建的测试用例文档或测试用例管理数据库中。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。
八. 您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。
1.等价类划分
划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.
2.边界值分析法
边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.
使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.
3.错误推测法
基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.
错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结. 还有, 输入数据和输出数据为0的情况. 输入表格为空格或输入表格只有一行. 这些都是容易发生错误的情况. 可选择这些情况下的例子作为测试用例.
4.因果图方法
前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等. 考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例. 这就需要利用因果图(逻辑模型). 因果图方法最终生成的就是判定表. 它适合于检查程序输入条件的各种组合情况.
九. 请以您以往的实际工作为例,详细的描述一次测试用例设计的完整的过程。
就说最近的这次网站功能的测试吧
首先:得到相关文档(需求文档和设计文档),理解需求和设计设计思想后,想好测试策略(测试计划简单点就OK了),考虑到测试环境,测试用例,测试时间等问题。
第二步:设计测试用例,测试策略是:把网站部分的功能点测试完,然后在进行系统测试(另外个模块呢有另一个测试人员负责,可以进行联调测试),网站模块的测试基本是功能测试和界面测试(用户并发的可能性很小,所以不考虑):这次的网站的输入数据呢是使用数据库中的某张表记录,如果表中某一数据记录中新加进来的(还没有被处理的,有个标志位),网站启动后会立刻去刷那张表,得到多条数据,然后在进行处理。处理过程中,会经历3个步骤,网站才算完成了它的任务。有3个步骤呢,就可以分别对 这3个步骤进行测试用例的设计,尽量覆盖到各种输入情况(包括数据库中的数据,用户的输入等),得出了差不多50个用例。界面测试,也就是用户看的到的地方,包括发送的邮件和用户填写资料的页面展示。
第三步:搭建测试环境(为什么这个时候考虑测试环境呢?因为我对网站环境已经很熟了,只有有机器能空于下来做该功能测试就可以做了),因为网站本身的环境搭建和其他的系统有点不同,它需要的测试环境比较麻烦,需要web服务器(Apache,tomcat),不过这次需求呢,网站部分只用到了tomcat,所以只要有tomcat即可
5.软件工程试卷及答案(易考题_) 篇五
A.静态单变量 B.动态单变量 C.静态多变量
D.动态多变量 3.在McCall软件质量度量模型中,()属于面向软件产品修改。
A.可靠性 B.可重用性
C.适应性
D.可移植性 4.ISO的软件质量评价模型由3层组成,其中用于评价设计质量的准则是()A.SQIC B.SQMC C.SQRC D.SQDC 5.软件复杂性度量的参数包括()
A.效率
B.规模
C.完整性 D.容错性 7.软件调试技术包括()
A.边界值分析
B.演绎法
C.循环覆盖 D.集成测试 8.瀑布模型的存在问题是()
A.用户容易参与开发
B.缺乏灵活性 C.用户与开发者易沟通 D.适用可变需求 9.软件测试方法中的静态测试方法之一为()
A.计算机辅助静态分析 B.黑盒法 C.路径覆盖 D.边界值分析 11.第一个体现结构化编程思想的程序设计语言是()
A.FORTRAN语言
B.Pascal语言 C.C语言
D.PL/1语言 13.在详细设计阶段,经常采用的工具有()
A.PAD B.SA C.SC D.DFD 14.详细设计的结果基本决定了最终程序的()
A.代码的规模 B.运行速度 C.质量 D.可维护性 18.经济可行性研究的范围包括()
A.资源有效性 B.管理制度
C.效益分析 D.开发风险
21.在软件开发过程中要产生大量的信息,要进行大量的修改,软件配置管理
能协调软件开发,并使混乱减到最低程度。
22.规定功能的软件,在一定程度上对自身错误的作用(软件错误)具有屏蔽能力,则称此软件具有
容错功能的软件。
23.McCall提出的软件质量模型包括11 个软件质量特性。
24.软件可维护性度量的七个质量特性是可理解性、可测试性、可修改性、可靠性、可移植性、可使用性和效率。
25.为了便于对照检查,测试用例应由输入数据和预期的输出结果两部分组成。
26.程序设计语言的心理特性主要表现在 歧义性、简洁性、传统性、局部性和顺序性。27.软件结构是以
模块 为基础而组成的一种控制层次结构。
28.在结构化分析中,用于描述加工逻辑的主要工具有三种,即:结构化语言、判定表、判定树。
29.结构化语言是介于自然语言和形式语言之间的一种半形式语言。
30.若年利率为i,不计复利,n年后可得钱数为F,则现在的价值P=F/(1+(n*i)。39.模块的内聚性包括哪些类型?
模块的内聚性包括:
(1)偶然内聚(2)逻辑内聚(3)时间内聚(4)通信内聚(5)顺序内聚(6)功能内聚
1.可行性研究要进行一次_____需求分析。
A.详细的B.全面的 C.简化的、压缩的 D.彻底的 2.系统流程图用于可行性分析中的_____的描述。
A.当前运行系统 B.当前逻辑模型 C.目标系统 D.新系
36.可行性研究报告的主要内容有哪些?
解:一个可行性研究报告的主要内容如下:
(1)引言:说明编写本文档的目的;项目的名称、背景;本文档用到的专门术语和参考资料。
(2)可行性研究前提:说明开发项目的功能、性能和基本要求;达到的目标;各种限制条件;可行性研究方法和决定可行性的主要因素。
(3)对现有系统的分析:说明现有系统的处理流程和数据流程;工作负荷;各项费用支出;所需要各类专业技术人员的数量;所需要各种设备;现有系统存在什么问题。
(4)所建议系统的技术可行性分析:所建议系统的简要说明;处理流程和数据流程;与现有的系统比较的优越性;采用所建议系统对用户的影响;对各种设备、现有软件、开发环境、运行环境的影响;对经费支出的影响;对技术可行性的评价。
(5)所建议系统的经济可行性分析:说明所建议系统的各种支出,各种效益;收益投资比;投资回收周期。
(6)社会因素可行性分析:说明法律因素,对合同责任、侵犯专利权、侵犯版权等问题的分析;说明用户使用可行性,是否满足用户行政管理、工作制度、人员素质的要求。
(7)其他可供选择方案:逐一说明其他可供选择的方案,并说明未被推荐的理由。
(8)结论意见:说明项目是否能开发;还需要什么条件才能开发;对项目目标有什么变动等。
38.什么是软件危机?软件危机的表现是什么?其产生的原因是什么?
在软件开发中遇到的问题找不到解决办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。
造成软件危机的原因是:
(1)软件的规模越来越大,结构越来越复杂。(2)软件开发管理困难而复杂。(3)软件开发费用不断增加。(4)软件开发技术落后。(5)生产方式落后。6)开发工具落后,生产率提高缓慢。
五,论述题(本大题共3小题,第40小题7分,第41小题8分,第42小题10分,共25分)
40.请使用PAD图和PDL语言描述在数组A(1)~A(10)中找最大数的算法。
解:PDL语言:
N=1
WHILE N<=10 DO
IF A(N)<=A(N+1)MAX =A(N+1);
ELSE MAX =A(N)ENDIF;
N=N+1;
ENDWHILE;
PAD图:
2.IPO图由___输入__、___输出_和___处理_三个框组成
软件的测试方法有———(分析方法)与(非分析方法)详细设计的工具有(图形工具)(表格工具)(语言工具)
成本估计方法主要有(自顶行下估计)(自底向上估计)和(算法模型工具)
6. 常用的面向对象的软件过程模型是___B____。A. 瀑布模型 B. 喷泉模型 C. 原型模型 D. 增量模型
7. 面向对象的分析阶段建立的系统模型不包括__D______。A. 对象模型 B. 动态模型 C. 功能模型 D. 数据模型
8,软件工程中的结构化分析SA是一种面向___数据流_____的分析方法。
6.软件质量保证答案 篇六
6、简要叙述软件设计在软件工程中所处的位置和重要性。
答:
所处的位置:软件需求分析需求规格说明软件设计设计文档软件编码。
重要性:
(1)是对软件需求的直接体现;
(2)为软件实现提供直接依据;
(3)将综合考虑软件系统的各种约束条件并给出相应方案;
(4)软件设计的质量将决定最终软件系统的质量;
(5)及早发现软件设计中存在的错误将极大减少软件修复和维护所需的成本。
7、软件设计应该包含哪些要素?
答:
软件设计应该包含:目标描述、设计约束、产品描述、设计原理、开发规划、使用描述。
8、软件体系结构与软件设计有何关系?软件体系结构的出现有何必然性和重要意义?
答:
软件体系结构与软件设计的关系:软件体系结构设计作为软件设计过程中的活动之一,能在较为抽象的级别上描述整个软件系统的结构,成为大规模、复杂软件系统设计中必不可少的步骤。
软件体系结构的意义:软件体系结构将构件以及构件之间的连接作为软件体系结构的基本组成部分。软件体系结构使软件复用从代码复用发展到设计复用和过程复用,为不同的人提供了共同的语言,体现了系统早期的设计决策,并作为系统设计的抽象,为实现框架和构件的共享与复用,基于体系结构的软件开发提供了有力的支持。
第二章作业
1、简述UML的特点和用途。
答:
UML的发起者在最初制定UML时,充分考虑了各种需求、方法和语言的特点使UML在表达能力、对新技术的包容能力和扩张性等方面具有显著的优势:
(1)为使用者提供了统一的、表达能力强大的可视化建模语言,以描述应用问题的需求 模型、设计模型和实现模型。
(2)提供对核心概念的扩展机制,用户可加入核心概念中没有的概念和符号,可为特定 应用领域提出具体的概念、符号表示和约束。
(3)独立于实现语言和方法学,但支持所有的方法学,覆盖了面向对象分析和设计的相 关概念和方法学。
(4)独立于任何开发过程,但支持软件开发全过程。
(5)提供对建模语言进行理解的形式化基础,用元素型描述基本语义,OCL描述良定义规则,自然语言描述动态语义。
(6)增强面向对象工具之间的互操作性,便于不同系统间的集成。UML的目标是以面向对象方式描述任何类型的系统,具有广泛的应用领域。UML最常用于建立软件系统的模型,但它同样可以用于描述非软件领域的系统,如机械系统、企业机构或业务过程、处理复杂数据的信息系统、具有实时要求的工业系统或工业过程、甚至数字电路等。
2、在面向对象开发方法中,对象、类、继承、聚集、多态、消息等概念分别指什么? 答:
(1)对象。对象是现实世界中个体或事物的抽象表示,是其属性和相关操作的封装。属 性表示对象的性质,属性值规定了对象所有可能的状态。对象的操作是指该对象可以展现的 外部服务。
(2)类。类是某些对象的共同特征(属性和操作)的表示。对象是类的实例,类是对象 创建的模板。
(3)继承。类之间的继承关系是实现现实世界中遗传关系的直接模拟,它表示类之间的内在联系以及对属性和操作的共享,即子类可以沿用父类(被继承类)的某些特征。子类也可以具有自己独有的属性和操作。
(4)聚集。除遗传关系外,现实世界中还普遍存在着部分整体关系。这种关系在面向对象方法学中表示为类之间的聚集关系。在聚集关系下,部分类的对象是整体类对象的一个 组成部分。
(5)多态。多态指父类及其子类中,对外接口的定义形式相同,却可以对应多种接口的实现形态。
(6)消息。消息传递是对象与其外部世界相互关联的唯一途径。
4、UML结构建模和行为建模有何区别? 答:
结构建模被称为静态建模,主要用来描述系统中包含的元素以及元素之间的关系; 行为模型被称为动态模型,主要用来刻画系统中的动态行为、过程和步骤。
5、简要叙述类图在UML中的意义和重要性,以及类图和对象图有何联系与区别。答:
(1)意义:类图用来刻画软件中类等元素的静态结构和关系。
(2)重要性:面向对象软件的最终实现体现为多个类的实现和组织,因此类图与面向对象软件实现之间的映射最为直观,对软件结构的设计至关重要,是软件实现要遵循的主要规格说明。
(3)类图和对象图的联系:对象是类的实例,对象图也可以看做类图的实例,对象之间的连接是类之间的关联关系的实例。对象图描述在特定时刻和特定环境下,类图中类的具体实例以及这些实例之间的具体连接关系,能帮助人们理解一个比较复杂的类图。
(4)类图和对象图的区别:对象的名字下面要加下划线,对象名称后可以注明所属的类。在一个对象图中可以同时出现一个类的多个实例。
第三章作业
2、简述模块化与信息隐藏在软件设计中的意义。答:
软件系统的模块化是指整个软件被划分成若干单独命名和可编址的部分,称之为模块,这些模块可以被组装起来满足整个问题的需求。在软件设计中实现了功能划分把复杂的大的功能划分成简单的小的模块结构,尽量降低每个模块的成本,减少接口,确保软件总成本最低。
模块化使开活动更加简单的一个重要因素是模块的信息隐藏,即一个模块的开发者不必看到模块的内部,只需要知道其接口即可,使开发者的复杂性降低,不仅支持模块的并行开发,而且还可以减少测试和后期维护的工作量。
3、内聚度、耦合度分别指什么?为什么软件设计要追求高内聚、低耦合? 答:
内聚度是一个模块内部各成分之间关联程度的度量;耦合度是对模块间关联程度的度量。
软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分摸块的一个准则就是高内聚低耦合。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。降低模块间的耦合度能减少模块间的影响,防止对某一模块修改所引起的“牵一发动全身”的水波效应,同时每一个类完成特定的独立的功能,实现高内聚,保证系统设计顺利进行。内聚和耦合密切相关,同其它模块存在强耦合关系的模块常意味这弱内聚,强内聚常意味着弱耦合。
5、为什么软件设计过程常常是一个不断迭代的过程? 答:
设计者一般不可能一次就能完成一个完整的设计,软件设计可能是一个反复的过程,在设计过程中需要不断添加设计元素和设计细节,并对先前的设计方案进行修正。所以,软件设计一般都可以被看做是迭代的过程。
8、是总结本章列举的软件体系结构设计方法各有何特点。结合自己的开发经验,讨论如何选择合适的软件体系结构设计方法。答:
特点如下:
(1)软件体系结构的多视图建模
通过逻辑视图,开发视图、进程视图、物理视图、进程来描述的软件体系结构。(2)基于评估与转换的软件体系结构设计
通过迭代的开发方式,直至满足客户的需求。(3)模式驱动的软件体系结构设计
通过总结、记录、复用来实现的体系结构设计(4)领域特定的软件体系结构设计
借鉴领域中已经成熟的软件体系结构来实现解决方案在某个领域内的复用。(5)软件产品线方法
软件复用发展的一个更高阶段,它并不仅仅局限于以前人们在软件复用中考虑的对函数、模块、类、体系结构甚至子系统的复用。(6)其于目标推理的软件体系结构设计方法
功能需求和非功能需求皆被表达为要达到的目标。(7)其于属性的软件体系结构设计方法
基于目标图推理的体系结构设计方法、基于属性的体系结构设计方法。
开发心得: 在这些具有系统化过程的软件开发方法中,体系结构设计师一个不可避免的过程,它们也都有自己的一些设计方式。但这并不排斥前面讲到的软件体系结构设计方法,反之,如果能把这些体系结构设计方法与开发方法学结合起来,将能起到更好的效果。
12、嵌入式软件有何特点?嵌入式软件设计可分为哪几类? 答:
特点:
(1)一般用于单一任务;
(2)有多种类型的处理器体系结构支持;(3)资源约束更加严格;
(4)需要更高的可靠性和安全性;(5)对反应性和实时性要求很高;(6)通常固化存储。通常分为以下两类:
(1)无操作系统的嵌入式软件:前后台系统、中断驱动系统、巡回服务系统、基于定时器的巡回服务系统。
(2)有操作系统的嵌入式软件:分时系统、实时系统。
13、什么是软件设计规格说明?它在软件开发中有何重要用途? 答:
软件设计规格说明:软件设计过程中各个活动的结果最终应该文档化,形成正式的软件设计规格说明书,作为软件设计的输出,例如对系统的目标、范围、约束的定义,对软件结构、接数据等方面的设计等。
重要用途:形成软件设计规格说明被评审,并作为后续软件实现活动的依据。
14、软件设计评审的目标是什么?设计评审中需要关注哪几方面? 答:
目标:确保设计规格说明书能够实现所有的软件需求,及早发现设计中的缺陷和错误,并确保设计模型已经精化到合格的软件实现工程师能够构造出符合软件设计者期望的目标软件系统。
一、注意对需求规格说明的正确性进行评审 1 是否有需求与其他需求相互冲突或者重复? 2 是否清晰、简洁、无二义地表达了每个需求?
是否每个需求都通过了演示、测试、评审,分析是否得到了验证? 4 是否每个需求都在项目的范围内? 5 是否每个需求都没有内容和语法上的错误? 6 在现有的资源内,是否能实现所有的需求?
每一条特定的错误信息,是否都是唯一的和具有含义的?
二、注意对需求规格说明的实践性进行评审
三、注意对需求规格说明的完整性进行评审 1 编写的所有需求,其详细程度是否一致和合适? 2 需求是否能为设计提供足够的基础? 3 所有对其他需求的内部引用是否正确? 4 是否包含了每个需求的实现优先级? 5 是否定义了功能说明的内在算法? 是否包含了所有已知的客户需求或系统需求? 是否遗漏了必要的信息?如果有遗漏的话,把他们标记为待确定的问题? 8 是否对所有预期的错误条件所产生的系统行为都编制了文档?
四、注意对需求方案的可行性和成本预算进行评审
五、注意对需求的质量属性进行评审
六、注意对需求的可实施性进行评审
七、注意对需求包含的用例文档进行评审 1 用例的目标或价值度量是否明确? 2 用例是否是独立的分散任务?
是否明确说明可用用例会给哪些参与者带来用处?
编写用例的详细程度是否恰当?是否有不必要的设计和实现细节? 5 所有预期的分支过程是否都编写了文档说明? 6 所有预估的异常过程是否都编写了文档说明? 7 是否存在一些普通的动作序列可以分解成独立的用例? 8 每个路径的步骤是否都清晰明了,无歧义而且完整? 9 用例中的每个参与者和步骤是否都与所执行的任务有关? 10 用例中定义的每个可选路径是否都可行和可验证? 11用例的前置条件和后置条件是否合理?
八、注意需求评审会的过程和结束标准
审查期间评审员们提出的所有问题都已经解决。2 相关文档中的所有更改都已经正确完成。3 修订过的文档进行了拼写检查。
所有标识为TBD(待确定)的问题已经全部解决,或者已经对每个TBD的问题的解决过程、计划解决的目标日期和责任解决人等编制了文档。5 需求文档正式进入了配置库。
第四章作业
2、用例分析与设计在设计过程中起到什么作用?
答:
理解业务领域和初步需求描述文档,更准确地使用用例图描述系统需求,作为后续分析和设计活动的依据。
3、什么是概念模型设计?为什么需要建立软件概念模型?
答:
概念模型设计: 主要针对问题领域中的对象进行描述的设计。
原因:在用户需求和相关的业务领域中,往往有一些全局性的概念对于理解需求至关重要。因此有必要抽取这些概念,研究这些概念之间的关系。问题A:图书馆管理
答:
开机扫描仪管理员关机Session<
问题B:保温系统
答:
打开电动机控制器监视电动机速度监视水温<
第五章作业
1、变换流和事务流有何区别?
答:
变换流:信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。当数据流图具有这些特征时,就是变换流。
事务流:数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行,这类是事务流。
2、面向数据流的设计过程包含哪些步骤?
答:
面向数据流的结构设计过程和步骤是:
(1)分析、确认数据流图的类型,区分是事务型还是变换型。(2)说明数据流的边界。
(3)把数据流图映射为程序结构。对于事务流区分事务中心和数据接收通咱,将它映射成事务结构。对于变换流区分输出和输入分支,并将其映射成变换结构。
(4)根据设计准则对产生的结构进行细化和求精。
3、启发式设计策略有哪些?它们对软件设计起到什么作用?
答:
有以下几种:改造程序结构,减小耦合度,提高内聚度;改造程序结构,减少高扇出,在增加程序深度的前提下追求高扇入;改造程序结构,是任一模块的作用域在其控制域之内;改造程序结构,减少接口的复杂性和冗余程度,提高协调性;模块功能应该可预言,避免对模块施加过多限制;改造程序结构,追求单入口单出口的模块;为满足设计或可移植性的要求,把某些软件用包的形式封装起来。
作用:对程序结构雏形进行优化,以提高软件设计的整体质量。
第六章作业
6、描述你在工作过程中遇到的最好和最差的用户界面,并使用本章中的概念进行评价。
答:
最好的用户界面:qq用户界面。界面设计的很简约,虽然窗口很小,但内容丰富,而且和手机版本有很好的衔接等。
最差的用户界面:会计管理软件。界面简陋,层次不清晰,容易让用户误操作等。
设计良好的用户界面应保证:
1.使系统处于用户控制之中
(1)所定义的交互模式不会强迫用户进行不必要的动作,用户能很容易地进入或退出交互模式。
(2)提供灵活的交互方式(3)允许打断或撤销用户交互
(4)事先根据用户的熟练程度来提高交互效率并且允许交互定制(5)为不熟悉系统的用户隐藏内部技术细节(6)与出现在屏幕上的对象直接交互
2.减少用户记忆负担(1)减少短期记忆要求(2)建立有意义的默认设置(3)定义符合直觉的快捷方式
(4)界面的视觉布局应该模拟真实世界(5)以渐进的方式来揭示信息
3.保持界面一致性
(1)所有的可视信息都要根据设计标准来组织,并且在所有屏幕显示中都遵循这个设计标准
(2)输入机制只有有限的几种,从而可在整个应用中一致地使用(3)一致地定义并实现从任务到任务的跨越机制。
7、给下列用户和系统建议恰当的操作对象: a)仓库管理员使用的零件目录系统。
b)航空飞行员使用的飞行器安全监控系统。c)经理使用的财务数据库。
d)警察使用的巡逻车控制系统。
答:
a)操作对象有零件、仓库管理员。
b)操作对象有飞行器、航空飞行员、传感器。c)操作对象有经理、财务数据表。
d)操作对象有巡逻车、车辆、警察、传感器。
12、写出下列情况可能的交互场景:
a)使用网络版的戏院预订服务来预定戏票并使用信用卡进行支付。b)在手机版本的软件上预定相同的戏票。
答:
顾客戏院网站后台数据库银行后台数据库点击查询服务输入票种信息向数据库发送请求页面显示可预订信息是页面提示票已被订完否查询请求票种信息将查询信息响应到网站页面是否有剩余戏票写入订票信息点击预订所需票种将订购信息存入数据库生成订购单点击付款按钮连接银行后台数据库系统选择付款方式页面跳转到所选付款平台验证用户信息和账户信息输入付款项相关信息支付失败否扣除后的账户余额>0?是显示订票成功更新账户余额
第七章作业
1、软件体系结构风格与软件设计模式的区别是什么?
答:
(1)软件体系结构风格(Architecture Styles)风格是表达特定系统元素和组织方式的通用范例(idiomatic paradigm)。软件体系结构风格,反映众多系统共有结构的习惯用法和语义,表述系统的静态结构方式,强调软件元素的组织形式和通常用法。
(2)软件设计模式(Design Pattern)设计模式是软件问题高效和成熟的设计模板(pattern),模板包含了固有的问题的处理逻辑,强调处理逻辑采用方式的直接复用。
第八章作业
1、什么叫分布构件框架?
答:
分布构件框架是应用于分布式系统开发的构件框架。它封装了网络通信的细节,具有两部分功能:其一,向客户提供访问服务器上的分布构件的接口;其二,向服务器上的分布构件提供一个运行的环境(也称容器)。
2、试比较本章介绍的三种构件框架
答:
EJB:它是Java服务器端服务框架的规范,软件厂商根据它来实现EJB服务器。应用程序开发者可以专注于支持应用所需的商业逻辑,而不用担心周围框架的实现问题。EJB规范详细地解释了一些最小但是必须的服务,如事务,安全和名字等。软件厂商根据这些规范要求以保证一个enterprise bean能使用某个必需的服务。规范并没有说明厂商如何实现这些服务。这使得通过阅读规范来学习EJB更加困难,因为它允许厂商在不牺牲核心服务的可移植性的前提下来提供一些增强功能。
DCOM:Microsoft的分布式COM(DCOM)扩展了组件对象模型技术(COM),使其能够支持在局域网、广域网甚至Internet上不同计算机的对象之间的通讯。使用DCOM,应用程序可以在位置上达到分布性,从而满足客户和应用的需求。
CORBA:CORBA是Common Object Request Broker Architecture的缩写,它是分布计算机技术的发展结果,CORBA技术的成功在于,它除了能够解决由于多个系统层次上的异构带来的“孤岛”问题,还在理论和技术上扩展了客户/服务器的模式,使系统具有良好的可伸缩性,便于系统的开发与升级,保护已有投资。
第九章作业
1、针对你曾经开发的某个软件系统,总结出哪些质量属性对此系统最重要以及描述这些质量属性的方法。
答:
软件的质量属性:有效性、高效性、灵活性、完整性、可操作性、可靠性、健壮性、可用性、可维护性、可移植性、可重用性、可测试性。
描述这些质量属性的方法:
(1)质量属性专题研讨会(QAW)(2)体系结构权衡分析方法(ATAM)(3)软件体系结构分析方法(SAAM)(4)积极的中间设计审核(ARID)
2、针对某个你感兴趣的软件系统,介绍它的商业动机。
答:
对校园宿舍管理系统商业动机分析:
人所从事的任何活动都是由一定的动机所引起的,其任何行为也受到一定的动机所支配,并按照不同的方式组合、交织在一起,相互作用,相互制约,构成各种各样的动机体系。在此,主要对校园学生宿舍信息管理系统的商业动机做分析说明。信息管理系统,简而言之就是对信息的集中管理,起到对信息方便、快捷、有效、准确的管理。学生宿舍管理是各高校后勤管理的重要组成部分,一所学校的主要成员就是学生,所以说,学生的数量是庞大的,每个学生又有着不同的信息,比如说,姓名、学号、性别、班级、所在宿舍楼等等复杂信息。因此,学生宿舍管理日常工作中需要处理大量的信息,那么怎样才能对这庞大的学生信息和复杂的人事结构进行方便、快捷、有效、准确的管理呢?不知不觉,这成了人们日益关注的问题,也是急需解决的问题,因为它关系到学校机构的正常运营。我们知道,在科技不发达的以前,管理这些信息的主要方式是基于文本和表格等纸质媒介的人工处理方式。在人数不多且信息结构较为简单的机构,这些处理方式是可以满足的,也不会影响机构的正常运营。但是,随着人数量的不断扩大,信息结构的复杂度不断加深,这些基于文本和表格等纸质媒介的人工处理方式已远远不能满足当今的需要,因为人工管理效率低下,劳动强度大,信息安全性差,信息处理速度慢而且容易出错。
现如今,随着信息时代的到来,计算机的广泛普及以及编程技术的发展,计算机技术逐渐应用到各行各业,为世界各地各个群体的用户提供了更加方便和快捷的服务。近年来各行各业都开始使用专用管理系统,管理系统以其便捷的操作,快速的处理过程和准确的处理结果大大提高了工作的效率,为全社会节约大量的时间并创造了大量的财富。因此,设计开发好一个专用管理系统对一个公司(或机构)的发展起着至关重要的作用。基于Internet的学生宿舍管理系统的产生为高校的学生宿舍管理工作提供了一种操作简捷、准确性好且高效率的新方式。学生宿舍管理系统采用基于Java语言的Servlet和JSP技术开发而成,数据库服务器使用MySQL,Web服务器使用Tomcat。用户采用IE或Firefox等主流浏览器即可正常使用该系统,用户只要坐在电脑前就能进行人事管理的操作了。现在,主要讲解该系统值得人们青睐的地方,也就是商业动机。
7.软件质量保证答案 篇七
随着计算机软、硬件技术的发展, 计算机技术已经渗透到社会各行各业中, 什么都离不开计算机, 而且计算机软件的功能非常强大, 无处不在, 无所不能, 计算机软件也变得多样化、复杂化, 软件运行出现的错误和缺陷的几率越来越大, 为了保证软件的质量, 需要测试人员反复测试论证, 软件测试工作在软件项目生命周期中的重要性日益突出。当前, 我国的软件开发能力比欧美发达国家差不了多少, 主要差距就是软件质量。国外的大型软件开发公司中软件测试人员和软件工程师一般是1:1的比例, 我国目前还不是很规范, 但也正在向这方面靠拢。软件测试在我国越来越趋于标准化科学化, 是一个很有发展前途的职业。
2软件开发与软件测试
通常我们理解的软件开发可能只是程序员通过一定的专业技术, 如编程语言、数据库技术创造出一个新的应用程序。其实软件开发是一个系统的工程, 包括需求分析、设计、编码、测试、维护等等几个环节。软件测试是整个软件开发流程中的一个重要的环节, 主要包括白盒测试、灰盒测试和黑盒测试。白盒测试一般用于单元测试, 需要测试人员对于代码结构有很好的理解, 黑盒测试也就是我们通常说的功能测试, 主要检测软件功能是否满足用户的功能需求。灰盒测试则是界于白盒和黑盒测试之间的一种测试方法。在现代软件开发流程中, 测试工作是贯穿于整个开发流程, 并不是在程序员编码完成以后才开始的。在软件开发前期, 测试人员需要根据用户的需求, 编写测试计划, 准备测试方案, 编写测试用例, 甚至根据业务需要编写不同的测试工具, 为后续的测试工作做好准备。在软件开发中后期, 测试人员需要利用测试工具按照测试方案、测试用例和流程对软件产品进行功能和性能测试。在执行完测试方案、测试用例和流程后, 需要跟踪软件缺陷, 以确保最后开发出来的成果能够真正满足用户的需求, 尽量以最小的代价来发现尽可能多的错误。
在整个软件开发过程中, 软件测试要尽可能早的参与到项目活动中, 最好是项目初期就要界入其中, 这样就可以尽可能早的并且多的发现软件缺陷。如果在软件研发后期发现框架问题, 可能会导致很多功能模块需要返工, 越晚开始, 测试人员对软件的了解就会越少, 就无法深入测试, 可能漏测掉很多重要的功能, 可能会在短时间内发现大量的软件缺陷, 不利于软件的版本稳定。
软件测试不象编程技术那样发展那么迅速, 可参考借鉴的东西非常少, 软件中每一个功能模块的测试方案都需要测试人员多方面的考虑, 所以这意味着测试更需要人的创新能力。验证程序的正确性, 远不象普通人想象的机械重复性的操作那样简单。验证程序的正确性更是需要人们大量的创造性劳动。
3软件测试策略
要做好软件测试工作, 会遇到很多挑战和困难。这就需要我们软件测试人员通过自己专业的知识和想法不断提高自己。通常认为软件测试人员具备的基本素质按重要等级依次是:技术、沟通能力、自信心、责任心、耐心和细心等。
首先技术是基础, 作为测试人员, 测试人员应该比开发人员掌握更多的知识, 在测试过程中, 你必须了解软件的生命周期, 知道什么阶段进行什么类型的测试。
其次是沟通能力, 沟通能力是测试工作顺利进行的保障。在技术基础的保障下, 测试人员必须充分了解用户的需求, 知道哪些问题是软件问题, 能够清楚描述软件出现问题的场景, 最好是知道为什么会出现问题, 最最好是知道如何修复这个问题, 这样的话, 就会更好的与开发人员进行沟通, 测试工作也就会进行的更加顺利。
再次, 测试人员必须有自信, 软件测试是一项技术要求很高的工作, 测试虽然基本不实现编码 (当然, 也会写测试脚本或测试代码) , 但特别要求对系统的整体把握能力。测试其实是很有内容的, 只是目前没有受到足够的重视, 没有被提高到它应有的地位。在技术基础的保障下, 你应该非常自信地进行自己的测试工作, 理直气壮地向开发人员提出软件问题, 并坚持自己的观点, 明确各方责任。最后, 测试工作非常重要, 你担负着软件质量验收责任, 你必须有责任心, 耐心和细心地工作, 争取不放过任何一丝一毫的软件错误和缺陷。
在整个软件测试过程中, 是否能够准确充分的发现足够多的软件错误和缺陷, 软件的测试管理工作非常重要。
第一, 严格遵行测试过程。首先进行需求分析, 了解用户的需求, 并且充分了解软件的测试范围和测试内容, 准备好测试所需要的数据, 然后经过评审, 这一个过程可以避免测试人员对测试需求的理解错误, 遗漏测试内容。其次进行软件测试用例的设计, 明确对每一项功能应该怎样进行测试, 包括选择什么样的测试工具、操作流程、输入数据和输出结果等, 再次评审。这一过程可以避免测试人员选择工具错误, 操作流程或输入数据错误, 遗漏测试内容等。第三个阶段是执行测试用例, 在执行过程中最好详细记录测试结果, 在什么样的输入情况下产生什么样的输出结果, 仔细比对软件原始需求, 确定软件是否发现问题。测试用例执行完毕后, 也需要进行评审, 主要检测测试是否进行充分, 记录是否准确, 软件问题提出是否正确。
第二, 真实模拟客户环境。随着开发技术的不断进步, 诸如多线程, 虚拟化, 大数据量的并发, 安全性, 软件间、不同系统平台间的交互响应这类环境的搭建, 对测试人员来讲都很有挑战。在执行测试前, 我们得尽可能真实的模拟客户的使用环境。这样才能真正的发现软件的缺陷。
第三, 有效验证程序正确性。测试人员要比开发人员考虑更多的东西, 在设计测试用例的时候, 要充分考虑到其他功能以及本功能的关联关系, 要有大局观。需要扎实的软件测试理论, 尽量自己分析问题, 多涉猎一些项目之外的知识.
第四, 积极跟踪软件缺陷。测试不仅仅是发现程序中的缺陷, 更重要的是跟踪解决这些缺陷, 因为只有缺陷被解决了, 软件质量才有可能提高, 我们的成绩才能得以真正的体现。事实确实是这样, 测试人员提交了软件缺陷, 如何说服开发人员修复这个缺陷, 才是关键。只有缺陷被修复, 软件的质量才会提高, 这样才能体现测试人员的工作价值。
4总结
总之, 软件测试是整个软件开发流程中重要并且不可缺少的环节, 做好了软件测试工作, 才能保障软件的质量。
参考文献
[1]朱少民.全程软件测试[M].北京:电子工业出版社, 2007 (09) .
8.关于软件质量提高的探讨 篇八
关键词:软件质量;评价;标准;提高
中图分类号:TP311.5
1 软件质量的评价标准
软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的隐含特征的程度。影响软件质量的主要因素,可划分功能性、可靠性、易用性和安全性。
1.1 功能性。是与一组功能及其指定的性质有关的一组属性,这里的功能是指满足明确或隐含的要求的那些功能。性能不仅仅是指软件的运行速度而已,通常意义上是指软件的时间-空间效率。性能优化的关键工作是找出限制性能的因素可以通过优化数据结构、算法和代码来提高软件的性能。是与一组规定或潜在用户为使用软件所需做的努力,和对这样的使用所做的评价有关的一组属性我们要做的是从量化的角度改善软件工程,最终改善软件质量。
1.2 可靠性。是指在特定的时间和条件下,该种软件能够平稳维持其性能、能力有关的一组属性。是指在一定的环境下,在给定的时间内,系统不发生故障的概率。也是在异常情况下,软件能够正常运行的能力。有些开发者往往不能分辨出异常情况,以至于导致可靠性降低。对于软件来说,可靠性包括容错能力以及出现问题之后的自我恢复能力就,如何提高软件的可靠性是开发者的义务。
1.3 简便易用性。是指用户使用软件的容易程度。来保证“界面友好”、“方便易用”。易用性表示该软件的所有工作成果在用户使用过程中易读、易理解,这种情况下,在软件投入使用之后可以提高团队开发效率,降低维护代价。
1.4 安全性。安全性是指信息安全,是指改软件产品在互联网信息大融合的情况下防止系统被非法入侵的能力。开发商和客户愿意为提高安全性而投入的资金是有限的,现代软件产品有很多都采用“增量开发模式”,不断推出新版本,以此来获取增值利润。但在追求利益的同时一定要保证可扩展性,可扩展性是系统设计阶段重点考虑的质量属性之一。
2 关于提高软件质量的注意事项
2.1 软件的性能,软件研发在进行需求调研时,不但应该更多的获取功能或者业务的要求,而且对于客户在软件系统响应或者并发等方面的要求,可以据此定义出软件系统的性能方面的要求.这些要求在实现过程中应该具体的被表现在开发,测试等文档中.而且针对此类性能需求的深入分析。
2.2 软件系统维护,扩充方面的需求.在进行系统功能调研和分析时,要对客户业务的规模,以及客户的发展等各方面情况有更清楚了解.可以根据这些信息更好的进行软件功能点划分,硬件设备选型等工作.軟件系统如何能更好的实施也是软件质量非常重要的一个环节。
2.3 非功能性的需求很多时候需要考虑硬件以及网络方面的成本。针对这些问题需要与客户进行良好的沟通,设定合理的非功能性目标,在成本与质量方面要有良好的平衡。
2.4 提高软件质量是整个研发团队的任务,每个小组都应该为这个目标做更多的工作.但现实的软件研发过程中往往简单的将软件质量问题归咎于软件测试或质量保证部门.软件测试不可能发现所有的软件缺陷,要想提高软件的质量,那么整个团队要付出更多的努力.研发过程中越早进行质量的控制,软件质量就会越好.整个团队强烈的软件质量意识,是保证软件软件质量的关键。
3 保证软件质量的几点措施
如何保证软件的质量,从一个企业的长远发展来说,首先应当从流程抓起,不断规范和完善软件产品的开发过程。这是从根本上解决质量问题,提高工作效率的一个关键手段。
3.1 质量改进需要花费成本,因此改进的途径需要视不同公司的规模等多方面综合进行考虑。满足业务需求,提高用户体验满意度,没有了不切实际的需求和质量要求,那么团队确保质量的能力也就提高了,质量标准的定义还要考虑时间、资源、预算等因素。中型以上的较大的软件公司可以实施CMM体系。
3.2 提高需求分析和设计方面的技术,加强文档化工作。一个高的质量要求需求规格说明书足够详细,以便产品可以根据这些规格说明书进行定量的分析,对于一个企业要想获得长期的发展,必须加强文档化工作;加强编程规范工作;进行适当的测试工作,建议进行单元测试和系统测试;实施配置管理工作,加强版本控制;开展走读、评审和检视活动,尤其要加强代码走读,建议进行每日交叉走读活动;进行简单的度量分析获得。
3.3 软件产品的开发同其它产品的生产有着共同特性,即需要按一定的过程来进行生产。对于软件开发来说,要保证软件的质量,需要掌握多方面的技术,包括分析技术、编码技术、和测试技术等,流水线生产方式被证明是一种高效且能够比较稳定地保证产品质量的一种方式。不同的人员被安排在流程的不同位置,最终为着一个目标共同努力,极大的提高工作效率。
3.4 软件工程在软件的发展过程中吸取了这个经验并把它应用到了软件开发中,这就形成了软件工程过程,简单的说就是开发流程。流程和成功不是等价的,软件流程从策划到实施的思维来定义开发过程,它根据不同的产品特点和以往的成功经验来确定流程。按照流程进行开发可以使得我们减少不必要的错误和隐患,有效的提高产品质量。
3.5 软件质量预测是发现那些模块容易出错,提高软件质量。传统的手工测试很难覆盖软件的全部功能点,手工测试的效率低,并且由于人工操作可变性较大容易造成对测试工作的懈怠,使测试质量降低,软件测试的目的是要发现软件中的错误。通过自动化测试工具的合理使用,可以提高测试的可重复性,缩短测试周期,将核心功能点重点测试,以此来杜绝关键缺陷,降低出现问题后的影响,以免影响到软件整体质量。
3.6 软件的使用者是用户,因此应从用户的角度来不断提高软件质量,软件应满足用户的业务需求,尽可能的与客户沟通获取需求,除了完成需求调研的任务外,同客户有深入的沟通和良好的客户关系也是一个及其有益的收获。既不将质量目标定得太高,根据时间,资源和预算客观情况定义合适的软件质量标准,让用户满意。
3.7 确保从需求获取开始,项目就朝正确的方向迈进,减少总体工作量。尽量在软件开发生命周期的前段时间减少软件缺陷,避免在后期来消灭缺陷,那样耗费的时间和精力更多。让每个人都知道质量的重要性,从心理上更注重代码质量,就会更用心写出高质量的软件。
3.8 对于软件开发来说,要保证软件的质量,需要掌握多方面的技术,包括分析技术、设计技术、编码技术和测试技术等等。参照简明清晰的设计编写代码,容易测试和返工,也更容易诊断和修复缺陷。
优化级的目标是达到一个持续改善的境界。所谓持续改善是指可以根据过程执行的反馈信息来改善下一步的执行过程,即优化执行步骤。
3.9 根据业务需求调整团队和个人的工作目标,并纳入质量考核体系,实施严格的奖惩措施,刺激开发人员的工作效率和工作质量。根据团队成员的执行表现给予适当奖励。
4 结束语
提高软件质量是一项团队运动,整个团队强烈的软件质量意识,是保证软件软件质量的关键,软件质量必须贯穿整个软件的开发生,通过软件初期的质量保证来减少返工次数,不断提高用户满意度,其中作为管理人员要对软件质量进行综合考评,并通过各种手段进行激励团队提高质量,做到软件质量和用户满意度的提高。
参考文献:
[1]刘建辉.提高软件质量的方法研究[D].中国地质大学,2005.
[2]梅宏,王千祥,张路.软件分析技术进展[J].计算机学报,2009(32).
[3]石柱,何新贵.模糊软件质量综合评价[J].系统工程与电子技术,2002(24).
【软件质量保证答案】推荐阅读:
软件项目质量计划编制09-05
软件电子商务质量风险论文07-02
软件工程习题及答案07-15
软件工程课后作业答案07-29
软件智力面试题及答案10-07
电大计算机本科软件工程 平时作业2答案11-03
食品质量与安全答案06-12
质量管理试题及答案08-01
水泥质量控制基础知识.答案08-15
质量管理体系知识试题(含答案)09-02