软件测试常见问题汇总Word文档格式.docx
《软件测试常见问题汇总Word文档格式.docx》由会员分享,可在线阅读,更多相关《软件测试常见问题汇总Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
a)来自Wikipedia对SQA的定义,软件质量保证(SQA):
SoftwareQualityAssurance(SQA)consistsofthesoftwareengineeringprocessesandmethodsusedtoensurequality.SQAencompassestheentiresoftwaredevelopmentprocess,whichmayincludeprocessessuchasreviewingrequirementsdocuments,sourcecodecontrol,codereviews,changemanagement,configurationmanagement,releasemanagementandofcourse,softwaretesting.
SQA由一套软件工程过程和方法组成,以保证(软件的)质量。
SQA贯穿整个软件开发过程,(它)应包括需求文档评审、代码控制、代码评审、变更管理、配置管理、版本管理和软件测试。
b)国家标准:
i.GB/T8567-2006计算机软件文档编制规范
ii.GB/T11457-2006信息技术软件工程术语
iii.GB/T16260.1-2006软件工程 产品质量第1部分:
质量模型
iv.GB/T16260.2-2006软件工程 产品质量第2部分:
外部度量
v.GB/T16260.3-2006软件工程 产品质量第3部分:
内部度量
vi.GB/T16260.4-2006软件工程产品质量第4部分:
使用质量的度量
vii.GB/Z20156-2006软件工程 软件生成周期过程 用于项目管理的指南
viii.GB/T20157-2006信息技术软件维护
ix.GB/T20158-2006信息技术 软件生成周期过程 配置管理
4.软件产品质量特性是什么?
a)功能性:
适应性、准确性、互操作性、依从性、安全性。
b)可靠性:
成熟性、容错性、以恢复性。
c)可使用性:
易理解性、易学习性、易操作性。
d)效率:
时间特性、资源特性。
e)可维护性:
易分析性、易变更性、稳定性、易测试性。
5.软件测试的原则与策略是什么?
a)软件测试的原则:
教材的说法:
i.软件测试应尽早执行,并贯穿于整个软件生命周期
ii.软件测试应追溯需求
iii.测试应由第三方来构造
iv.穷举测试是不可能的,要遵循Good-enough原则
v.必须确定预期输出(或结果)
vi.必须彻底检查每个测试结果
vii.充分注意测试中的群集现象
viii.缺陷的二八定理
ix.严格执行测试计划,排除测试的随意性
x.注意合法合理的输入,也要注意非法的非预期的输入
xi.检查程序是否是否做了不该做的
xii.测试应从“小规模”开始,逐步转向“大规模”
xiii.反复使用同样的测试会使软件具有抵抗力
xiv.关注缺陷的修复
另一种说法:
i.应当把“尽早和不断地测试”作为开发者的座右铭。
ii.程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成。
iii.设计测试用例时,应该考虑到合法的输入和不合法的输入,以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。
iv.一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。
v.对测试错误结果一定要有一个确认的过程。
一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。
vi.制定严格的测试计划,并把测试时间安排得尽量宽松,不要希望在极短的时间内完成一个高水平的测试。
vii.回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见。
viii.妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。
b)软件测试策略:
在一定的软件测试标准、测试规范的指导下,依据测试项目的特定环境约束而规定的软件测试的原则、方式、方法的集合。
6.结构化系统测试和功能性系统测试分别采用了哪些方法和技术?
a)结构化系统测试技术:
用于验证所开发的系统及程序的运行情况。
目标是要确保产品设计在结构上合理,功能上正确。
为确定实现的配置及其各功能共同作用以完成特定任务提供了一种机制。
结构化测试技术由以下几种:
i.1)压力测试:
确定系统以期望的容量执行。
压力测试技术用于检查系统面对意外情况下的大数据量时是否可以正常运行。
所涉及的方面包括输入事务、内部表、磁盘空间、输出、通信、计算机容量以及人机交互等。
当应用系统所能正常处理的工作量并不确定时需要使用压力测试。
压力测试意图通过对系统施加超负载事务量来达到破坏系统的目的。
弱点在于准备测试的时间与在测试的实际执行过程中所消耗的资源数量都非常之大,通常在应用程序投入使用之前这种技术是无法进行的。
ii.执行测试:
系统能达到期望的熟练性。
举例:
事务轮转时间充分;
软硬件使用良好。
执行测试技术用于检查系统是否达到了预期在产品状态下的成熟度。
执行测试可以验证系统的响应时间、轮转时间及设计性能。
在开发过程的早期就应该进行执行测试,尽早制定已经完成的系统没有达到性能指标是非常有价值的。
在关键时间点进行。
关键时间点指的是当前的结果会影响甚至改变系统结构的时间点。
iii.恢复测试:
系统失效之后可以恢复到可操作状态。
引入失败;
评估备份数据的充分性。
恢复测试技术用于确保系统在经历灾难后可以继续正常运行,它不仅可以验证恢复过程,而且可以验证过程各组件的有效性。
当用户认为系统操作的连续性对于其所涉及领域的某些功能至关重要时,需要进行恢复测试。
iv.操作测试:
系统以正常操作状态执行。
确定系统可以依据文档进行运行;
JCL(工作控制语言)充分。
操作测试技术主要用于检查系统在正常的操作状态下是否可以执行。
操作测试可以与其它测试联合执行。
任何应用程序在成为产品之前都应进行操作测试。
v.(与过程的)一致性测试:
系统的开发与标准和规程相一致。
按标准执行;
文档完整。
一致性测试技术用于验证应用程序的开发是否与信息技术指标、过程及准则相一致。
一致性测试最有效的方法是过程审查。
系统开发标准和过程的一致性程度依赖于管理层对于所需遵循的特定过程和执行标准的重视程度。
vi.安全性测试:
根据组织的重要性对系统进行保护。
访问拒绝;
规程适当。
安全性测试技术用于评价保护性程序及安全对策的充分性。
安全性缺陷不如其它类型的缺陷那么明显。
安全性测试是测试过程中高度专业化的部分。
分物理安全性(针对利用物理方法收集信息的手段)和逻辑安全性(针对使用计算机处理和通信能力进行非法活动信息的手段)。
当系统保护信息和资产对于组织来说意义重大时,需要进行安全性测试。
b)功能性系统测试用于确保系统需求与定义都得到了满足。
该过程通常包含创建用于评价应用程序正确性的测试条件。
用于执行功能测试的几种测试技术包括:
i.需求测试:
系统按制定方式执行。
证明系统需求;
与政策、规则相一致。
需求测试技术验证系统是否正确执行其功能,并且能保证在相当长的一段时间内保持其正确性。
需求测试的执行主要通过执行创建的测试条件以及功能检查单来完成,通过需求得到测试条件,然后以类似于SDLC这种特定的方式表现,生成用于评价实现的应用系统的测试数据。
任何应用程序都应该对需求进行测试,此过程应该开始于需求阶段,并一直持续到系统运行和维护阶段。
ii.回归测试:
验证系统中没有改变的部分仍能正确运行。
未变更的部分正常运行;
未变更的人工规程正确。
回归测试技术对已经测试过的部分进行重新测试,以保证它们在应用程序其它部分发生变更之后仍能正常运行。
当变更会对应用程序中没有变更的部分产生高风险的影响时需要进行回归测试。
iii.错误处理测试:
错误可以得到防止或检测,并被修复。
将错误引入测试;
错误的再次注入。
人工系统与自动系统之间差别的特点之一就是预定义的错误处理特性。
错误处理测试技术用于检查应用系统正确处理发生异常的能力。
错误处理测试需要一组知识丰富的人员来预见应用系统可能发生的错误。
它是测试错误的引入、错误的处理,控制条件以及条件的再次正确输入。
在系统整个生命周期中都应该进行错误测试。
在开发过程中,应该识别错误带来的问题并且采取相应的措施将错误减少到可以接受的程度。
iv.人工支持测试:
人机交互有效。
具备人工规程;
人员接受过培训。
人工支持测试技术主要包括人员在准备数据以及使用来源于自动程序数据的过程中执行所有功能。
在生命周期的全过程都应该验证人工系统功能的正确性。
v.系统间测试:
数据可以正确地在系统间传递。
系统间参数变化;
系统间文档更新。
系统间测试技术用于保证应用程序间相互管理的正确性。
系统间测试的一个最好的工具是集成测试工具,它允许在产品环境下进行测试,可以以最小的代价测试系统间的耦合性。
在应用系统间的参数发生变更时需要进行系统间的测试。
测试的程度和类型依赖于与出错的参数相关联的风险情况。
vi.控制测试:
将系统风险控制降低到可以接受的级别。
文件一致性规程正常;
人工控制正确。
控制测试技术包括数据确认、文件完整性控制、评审追踪、备份和恢复、文档,以及与系统完整性相关的其它方面。
主要用于确保对系统特定功能的检查。
可以用于控制测试的一个方法是生成风险矩阵。
控制测试是系统测试中的一个完整的部分,占测试时间的很大比例。
vii.平行测试:
发现原系统与新系统之间的意外差异。
原系统与新系统一致;
原系统仍然可以工作。
平行测试技术用于检查新应用程序的结果