分类目录归档:读书

关于软件测试

最近在读软件测试方面的书籍,属于软件测试基础理论知识,大概了解下软件测试方面的知识还是不错的,最起码能了解测试的理论,方法及应用范围,以及那些可以采用工具辅助自动化测试,各种测试方法的特点、测试用例如何设等计,理论的基础让我发现原来测试也是一门学科,其中也存在不少模型,怪不得近年来测试工程师在整个行业走俏,相对整个行业也越来越正规。

近期阅读总结如下

从软件业界来说,可以将软件测试方法分为静态测试与动态测试(静态测试主要针对软件的编程格式、结构等方面进行评估,而动态测试则主要针对功能确认与接口测试、覆盖率分析、性能分析、内存分析等);如果按照规划测试的不同点出发,软件测试方法又可以分为黑盒测试与白盒测试(黑盒测试[Black-box Testing]又称功能测试、数据驱动测试和基于软件需求规格说明的测试,黑盒测试是一种从用户出观点出发的测试,白盒测试又称结构测试、逻辑驱动测试或基于程序的测试,主要基于内部结构来进行测试)。

从软件测试过程的先后次序可以将整个过程分为单元测试、集成测试、确认测试、系统测试、验收测试。

单元测试主要完成模块接口、局部数据结构、路径测试、边界条件、出错处理任务。

集成测试又分为非增量式测试,以一步到位的方法,对各单元测试完毕后连接程序各模块,形成完整的整体来进行测试,另外一种集成测试为增量式测试[自顶向下增量、自底向上增量],不同的测试方法各有优缺点,主要集中在错误暴露点与时间的不同,另外就是针对测试模拟输入(数据)获取的难易度不同;另外在进行集成测试过程中可针对测试修改后进行回归测试,最终达到测试计划预定的标准。

确认测试主要完成确认测试的准则及配置审查的内容,经过确认测试后需要给软件一个结论性的评价(该软件功能、性能及其他要求满足需求规格说明中的规定,认为合格或者是不满足需求规格说明中的规定,如果不满足需要列出不满足的缺陷清单,对于确认测试时出线这样的情况一般很难在交付时间完成问题纠正,这时候需要跟客户进行协商,获取一个解决办法)。

系统测试主要完成恢复测试、安全测试、强度测试、性能测试、正确性测试、可靠性测试、兼容性测试。

验收测试是测试中最后一个环节,主要为完成软件产品验收所做的一些测试,涉及内容有明确项目并规定测试通过的标准、确定测试方法、决定验收测试的组织和资源、指定验收测试计划并进行评审、设计验收测试用例、审查准备工作、执行验收测试、分析结果,给出验收结论。验收测试还包括软件配置及文档资料测试,这部分可以在软件开发过程中并行进行。

黑盒测试技术方法

黑盒测试技术方法主要包括边界值分析法、等价类划分法、因果图分析法、决策表分析法等。

白盒测试技术方法

白盒测试技术方法主要包括结构分析、逻辑覆盖、路径测试等。

 

软件的可靠性评估的定义

摘自http://www.168518.net/edu/rjpc/200607/20060729000000.html,完整文章请进入该链接查阅。

软件可靠性评估的定义

可靠性(Reliability)是产品在规定的条件下和规定的时间内完成规定功能的能力,他的概率度量称为可靠度.

软件可靠性(Software Reliability)是软件系统固有特性之一,它表明了一个软件系统按照用户的要求和设计的目标,执行其功能的正确程度。软件可靠性与软件缺陷有关,也与系统输入和系统使用有关。理论上说,可靠的软件系统应该是正确、完整、一致和健壮的。但是实际上任何软件都不可能达到百分之百的正确,而且也无法精确度量。一般情况下,只能通过对软件系统进行测试来度量其可靠性。

这样,给出如下定义:“软件可靠性是软件系统在规定的时间内及规定的环境条件下,完成规定功能的能力”。根据这个定义,软件可靠性包含了以下三个要素:

1.规定的时间

软件可靠性只是体现在其运行阶段,所以将“运行时间”作为“规定的时间”的度量。“运行时间”包括软件系统运行后工作与挂起(开启但空闲)的累计时间。由于软件运行的环境与程序路径选取的随机性,软件的失效为随机事件,所以运行时间属于随机变量。

2.规定的环境条件

环境条件指软件的运行环境。它涉及软件系统运行时所需的各种支持要素,如支持硬件、操作系统、其它支持软件、输入数据格式和范围以及操作规程等。不同的环境条件下软件的可靠性是不同的。具体地说,规定的环境条件主要是描述软件系统运行时计算机的配置情况以及对输入数据的要求,并假定其它一切因素都是理想的。有了明确规定的环境条件,还可以有效判断软件失效的责任在用户方还是研制方。

3.规定的功能

软件可靠性还与规定的任务和功能有关。由于要完成的任务不同,软件的运行剖面会有所区别,则调用的子模块就不同(即程序路径选择不同),其可靠性也就可能不同。所以要准确度量软件系统的可靠性必须首先明确它的任务和功能。

在讲到软件可靠性评估的时候,我们不得不提到软件可靠性模型。软件可靠性模型(Software reliability model)是指为预计或估算软件的可靠性所建立的可靠性框图和数学模型。建立可靠性模型是为了将复杂系统的可靠性逐级分解为简单系统的可靠性,以便于定量预计、分配、估算和评价复杂系统的可靠性。