软件测试要遵循哪些原则
软件测试定义是:为了发现程序中的错误而执行程序的过程它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness) 、完全度(completeness)和质量(quality)的软件过程;是SQA(software quality assurance)的重要子域。
软件测试的目标:(1)测试是为了发现程序中的错误而执行程序的过程;(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;(3)成功的测试是发现了至今为止尚未发现的错误的测试。
软件测试的内容:软件测试主要工作内容是验证(verification)和确认(validation ),下面分别给出其概念:验证(verification)是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情。
(Do the right thing) 1.确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程;2.程序正确性的形式证明,即采用形式理论证明程序符号设一计规约规定的过程;3.评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。
确认(validation)是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。
即保证软件以正确的方式来做了这个事件(Do it right)1.静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性;2.动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。
软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期问各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。
从不同的角度出发,软件测试可以划分为不同的分类:从是否关心软件内部结构和具体实现的角度划分A.白盒测试B.黑盒测试C.灰盒测试从是否执行程序的角度A.静态测试B.动态测试从软件开发的过程按阶段划分有A.单元测试B.集成测试C.确认测试D.验收测试E.系统测试* 测试过程按4个步骤进行,即单元测试、集成测试、确认测试和系统测试及发版测试。
* 开始是单元测试,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。
* 集成测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。
* 确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。
* 系统测试把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。
单元测试 (Unit Testing) * 单元测试又称模块测试,是针对软件设计的最小单位 ─ 程序模块,进行正确性检验的测试工作。
其目的在于发现各模块内部可能存在的各种差错。
* 单元测试需要从程序的内部结构出发设计测试用例。
多个模块可以平行地独立进行单元测试。
1. 单元测试的内容 * 在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I\\\/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。
(1) 模块接口测试 * 在单元测试的开始,应对通过被测模块的数据流进行测试。
测试项目包括: – 调用本模块的输入参数是否正确; – 本模块调用子模块时输入给子模块的参数是否正确; – 全局量的定义在各模块中是否一致;* 在做内外存交换时要考虑: – 文件属性是否正确; – OPEN与CLOSE语句是否正确; – 缓冲区容量与记录长度是否匹配; – 在进行读写操作之前是否打开了文件; – 在结束文件处理时是否关闭了文件; – 正文书写/输入错误, – I/O错误是否检查并做了处理。
(2) 局部数据结构测试 * 不正确或不一致的数据类型说明 * 使用尚未赋值或尚未初始化的变量 * 错误的初始值或错误的缺省值 * 变量名拼写错或书写错 * 不一致的数据类型 * 全参考
软件测试时应遵循的基本原则是什么
测试人员在软件开程中的任务:1找Bug;2、避免软件过程中的缺陷;3、软件的品质;4、关注用户的需求。
软件测试目的1、测试的最终目的是为了避免错误的发生,确保应用程序能够正常高效的运行;2、好的测试用例在于发现至今未发现的错误;3、成功的测试是发现了至今未发现的错误的测试;4、好的测试工程师应该做到不仅发现问题,还能够帮助开发人员分析问题;软件测试的原则:1、应把“尽早和不断地进行软件测试”作为软件开发者的座右铭,实践证明单元测试能够尽早发现问题,减少后期测试的错误量。
2、测试用例应由测试输入数据、测试执行步骤和与之对应的预期输出结果三部分组成。
3、应当避免由程序员检查自己的程序。
(指后期系统测试阶段,不包括单元测试)4、测试用例的设计要确保能覆盖所有可能路径。
在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。
不合理的输入条件是指异常的,临界的,可能引起问题的输入条件。
5、充分注意测试中的群集现象。
经验表明,测试后程序残存的错误数目与该程序中已发现的错误数目或检错率成正比。
应该对错误群集的程序段进行重点测试。
6、严格执行测试计划,排除测试的随意性。
测试计划应包括:所测软件的功能,输入和输出,测试内容,各项测试的进度安排,资源要求,测试资料,测试工具,测试用例的选择,测试的控制方法和过程,系统的配置方式,跟踪规则,调试规则,以及回归测试的规定等等以及评价标准。
7、应当对每
软件测试过程中有哪些风险
风险:(1有详细设计说明书;解决方案:测试人员要在开发对相关设计及需求文档进行分析,对大体模能进行分类,分析业务逻辑,在不清楚的地方及时与开发人员沟通。
风险:(2)没有统一的界面设计规范。
解决方案:与项目负责人确认测试标准。
开发方面:风险:(1)所有模块开发没有统一设计,开发人员有自己的设计方式;解决方案:与项目负责人确认标准方式,与标准方式不一致的地方全部以BUG形式提交。
风险:(2)需求变更开发。
解决方案:建议将需求变更形成文档,对没有文档的需求变更,在测试过程中发现及时与开发负责人确认,并存档相关变更文档。
测试本身:风险:(1)人力资源;解决方案:保证稳定的人员安排。
风险:(2)硬件资源;解决方案:事先分析测试所需硬件资源,及时申请,保证测试工作顺利进行。
风险:(3)版本控制;解决方案:严格控制版本,BUG以版本为单位进行提交。
在测试过程中及BUG确认阶段禁止任何代码更新。
风险:(4)测试时间不足。
解决方案:动员测试人员完成测试任务,必要时,应给予相应物质奖励。
测试风险是不可避免的、总是存在的,所以对测试风险的管理非常重要,必须尽力降低测试中所存在的风险,最大程度地保证质量和满足客户的需求。
在测试工作中,主要的风险有:一、质量需求或产品的特性理解不准确,造成测试范围分析的误差,结果某些地方始终测试不到或验证的标准不对;二、测试用例没有得到百分之百的执行,如有些测试用例被有意或无意的遗漏;三、需求的临时\\\/突然变化,导致设计的修改和代码的重写,测试时间不够;四、质量标准不都是很清晰的,如适用性的测试,仁者见仁、智者见智;五、测试用例设计不到位,忽视了一些边界条件、深层次的逻辑、用户场景等;六、测试环境,一般不可能和实际运行环境完全一致,造成测试结果的误差;七、有些缺陷出现频率不是百分之百,不容易被发现;如果代码质量差,软件缺陷很多,被漏检的缺陷可能性就大;八、回归测试一般不运行全部测试用例,是有选择性的执行,必然带来风险。
在软件开发生命周期中的哪个阶段开始测试?
软件的生命周期分为:计划、需求分析、设计、编码、测试、运行、评价。
软件测试贯穿了整个软件开发周期,所以,在软件生命周期的各个阶段,都在进行软件测试。
测试应遵循什么原则
1.所有的测试都应追溯到用户需求.2.应当把尽早地和不断地进行软件测试作为软件测试者的座右铭.3.程序员应该避免检查自己的程序.测试工作应该由独立的专业的软件测试机构来完成.3.设计测试用例时.应该考虑到合法的输入和不合法的输入.以及各种边界条件.特殊情况下要制造极端状态和意外状态.比如网络异常中断.电源断电等情况.4.一定要注意测试中的错误集中发生现在.这和程序员的编程水平和习惯有很大的关系.5.对测试错误结果一定要有一个确认的过程.一般有A测试出来的错误.一定要有一个B来确认.严重的错误可以召开评审