如何做好软件开发阶段的测试

如何做好软件开发阶段的测试

软件开发阶段的测试需要贯穿于开发各阶段的测试活动 , 它包括通过运行软件来检验软件质量的动态测试方法,还包括通过对需求分析、设计及代码等通过人为审阅查找问题的静态测试方法,本文中我逐一介绍在软件开发各个阶段软件测试的具体应用 。

随着软件开发技术的不断发展,软件测试技术也逐步得到重视,但一般观念认为软件开发的中后期才需要测试活动介入,同时有人甚至认为测试活动不属于研发过程 , 仅依赖开发完成后的黑盒测试阶段来保证软件产品的质量 。事实证明 , 这种方式不是一种能保证软件的质量的测试方法 。软件测试是开发过程中重要内容之一 , 是软件质量保证的关键,测试工作越早介入,对软件产品质量的影响越是事倍功半 。因此,软件测试在开发阶段是不容忽视的一个重要环节 。
一、软件测试的概念

软件测试是根据软件开发各阶段的说明文档和程序结构而设计一批测试用例,利用这些测试用例去运行程序,从而发现程序错误的过程 。软件测试的过程由一系列的不同测试阶段所组成,而开发阶段的测试分为:需求分析审查、设计审查、单元测试、集成测试、系统测试等多个阶段 。

二、测试在软件开发各个阶段的应用与目标

 ?。ㄒ唬┬枨蠓治錾蟛?。软件需求规格说明书的评审专家组由用户代表、项目负责人及具体的软件开发人员组成,对软件需求规格说明书进行仔细阅读,站在不同的角度查找其缺陷的过程 。主要看它是否完整地描述系统预期的外部行为和用户可视化行为;功能描述是否具有二义性;在实现上是否具有可行性;除设计和实现两方面的限制,软件需求规格说明不应包括设计、构造、测试或工程管理部分的细节 。最后 , 评审专家组和作者通过会议方式将缺陷确认、整理后由作者进行修改,直到评审专家组认可为止 。

 ?。ǘ┥杓粕蟛?。软件设计从整个系统层面、每一层子模块层面分为概要设计和详细设计,它依据需求规格说明书对系统各层次的具体实现进行了描述 。它不但要考虑完成需求规格中向用户承诺的功能,还需要兼顾性能、可靠性等软件质量保障 。这个评审过程是通过几个有软件开发经验的评审专家对设计文档进行预审后召开评审会议,在会议上与设计人员将问题一一进行确认 。评审专家要依据需求规格说明书查看设计是否覆盖到每个功能点,同时需要对每个函数流程或伪代码进行逻辑审查,更重要是要求评审专家根据自己的项目经验对设计中使用的数据结构、代码执行效率、资源访问冲突风险等问题进行合理评估,尽量把对系统有着颠覆性影响的错误、不合理在编码及单元测试之前排除 。

 ?。ㄈ┐胱叨?。代码走读是在开发人员对某个模块的代码依据设计说明书完成编码并经过编译通过后进行的代码评审活动 。代码走读前需要在项目组内部统一走读的标准 , 明确质量目标 。代码走读需要看代码是否具有可读性、可维护性,是否遵守编程规范,注释是否充分、有效等 。由于每个人的编码水平和习惯都不尽相同 , 所以要提高代码的可读性以及降低编码出错概率养成按编程规范编码的习惯至关重要,可读性的、规范性的代码更是方便日后进行有效维护的保障 。

 ?。ㄋ模┑ピ馐?。单元测试的目的是检验软件基本组成单位(函数)的正确性(包括功能正常,输出正确),它是对软件中的基本组成单位进行测试 。在设计评审完成后单元测试用例的编写就可以就启动,和编码可以同时进行 , 如果在时间允许的情况下,单元测试用例还是放在编码后编写最好 , 这样能更好的覆盖代码的每个分支,如果设计文档为唯一的编写依据 , 那么对于代码走读时能发现的缺陷也会在用例评审中被发现,造成重复劳动 。函数覆盖是单元测试用例编写的目标,覆盖方法有多种:语句覆盖、条件覆盖、分支覆盖、路径覆盖条、件组合覆盖 。

首选路径覆盖的方法可以用最少的资源做最多测试检查 。路径覆盖需要计足够的测试用例,覆盖程序中所有可能的分支 。我们以下段代码为例来说明如何设计路径覆盖的单元测试用例 。

 ?。ㄎ澹┘刹馐?br/>
软件系统集成过程中所进行的测试就是集成测试,其主要目的是检查软件单位之间的接口的正确性 。大型项目中是必然存在接口,它主要以通信协议、调用关系、文件、数据库、第三方中间件等方式进行交互 。

集成测试的执行主要通过借助测试工具来实现 , 也就是俗称的桩程序,为防止一个人对接口定义理解有偏差的意外发生,桩程序的编写最好由其他人员来完成 。

 ?。┫低巢馐?br/>
对已经集成好的软件系统进行彻底的测试就是系统测试 , 从而验证软件系统的正确性、性能等是否可以满足其各项系统需要 。系统测试就是对系统所提供的业务流程与功能进行测试,同时需要关注软件的易用性和强壮性等 。

系统测试包含若干个不同测试组成,从而能够充分运行系统,验证系统各部件是否都能正常工作并完成所赋予的功能 。除了我们熟知的业务测试外,还应包括以下内容:

1.恢复测试 。用于检查系统的容错能力 。恢复测试需要采用各种方法迫使系统失败,然后验证系统是否能够自动恢复 。

2.安全测试 。检查系统对非法侵入的防御能力 。

3.强度测试 。检查系统对异常情况的抵抗能力 。强度测试总是迫使系统在非正常的资源配置下运行 。

4.性能测试 。这里的性能测试与集成测试中的性能测试不同,它是在真实环境中全面、可靠进行系统性能测试 。

三、结束语

总而言之,测试不是软件开发之后的一个阶段 , 测试工作的对象也不仅是针对程序本身 。测试工作贯穿于软件开发的整个过程,只有这样,才能辅助提升开发效率,同时对外提供质量更有保障的优质系统 。【如何做好软件开发阶段的测试】



经验总结扩展阅读