什么是软件测试?

212 阅读5分钟
原文链接: mp.weixin.qq.com

点击上方“CSTN ”,选择“设为星标🌟”

CSTN学院 IT人的终身学习平台

知乎上有个提问:什么是软件测试?

高赞回答是: 在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

Part.1

软件测试定义,什么是软件测试?

软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

Part.2

软件测试理论?

软件测试是使用人工操作或者软件自动运行的方式来检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。

它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness) 、完全度(completeness)和质量(quality)的软件过程;是SQA(software quality assurance)的重要子域。

Glenford J.Myers曾对软件测试的目的提出过以下观点:

1、测试是为了发现程序中的错误而执行程序的过程。

2、好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。

3、成功的测试是发现了至今为止尚未发现的错误的测试。

4、测试并不仅仅是为了找出错误。通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进。

5、这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性。

6、没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。

7、另外,根据测试目的的不同,还有回归测试、压力测试、性能测试等,分别为了检验修改或优化过程是否引发新的问题、软件所能达到处理能力和是否达到预期的处理能力等。

1.测试原则

1、测试应该尽早进行,最好在需求阶段就开始介入,因为最严重的错误不外乎是系统不能满足用户的需求。

2、程序员应该避免检查自己的程序,软件测试应该由第三方来负责。

3、设计测试用例时应考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下还要制造极端状态和意外状态,如网络异常中断、电源断电等。

4、应该充分注意测试中的群集现象。

5、对错误结果要进行一个确认过程。一般由A测试出来的错误,一定要由B来确认。严重的错误可以召开评审会议进行讨论和分析,对测试结果要进行严格地确认,是否真的存在这个问题以及严重程度等。

6、制定严格的测试计划。一定要制定测试计划,并且要有指导性。测试时间安排尽量宽松,不要希望在极短的时间内完成一个高水平的测试。

7、妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。

2.测试目标

1、发现一些可以通过测试避免的开发风险。

2、实施测试来降低所发现的风险。

3、确定测试何时可以结束。

4、在开发项目的过程中将测试看作是一个标准项目。

3.测试对象

1、程序

2、数据

3、文档

4.测试内容

软件测试主要工作内容是验证(verification)和确认(validation),下面分别给出其概念:

验证(verification)是保证软件正确地实现了一些特定功能的一系列活动, 即保证软件以正确的方式来做了这个事件(Do it right)

1、确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程。

2、程序正确性的形式证明,即采用形式理论证明程序符合设计规约规定的过程。

3、评审、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。

确认(validation)是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件做了你所期望的事情。(Do the right thing)

1、静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性。

2、动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。

软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期间各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。

最后交流一下,你在测试时,遇到哪些困难或者需要求助的?欢迎留言偶遇!

「バグを全部 見つけるのは無理だと心得よ。」

我的心得是,

企图找出所有的BUG是不现实的。

并非回避责任,软件是十分复杂的产品,

要去除所有的BUG是不可能的。