一、软件测试概念
软件测试:为了发现软件错误和缺陷(统称bug)而执行程序的一个过程。
软件测试是软件开发过程的重要组成部分,是用来确认一个程序的功能或性能是否符合开发之前所提出的一些要求。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。
二、软件测试目的
最直观的目的肯定是通过对软件系统或程序的测试,发现其中的错误。
软件测试的目的具体如下:
验证软件需求和功能是否得到了完整的实现
尽可能早的发现软件中的bug
尽可能多的发现软件中的bug
验证软件是否可以发布
对软件的质量、性能、效率做出合理的评估
预防用户使用可能出现的问题
预防下个版本可能出现的问题
三、软件测试基本原则
所有测试的标准都是建立在用户需求之上的,测试的目的在于发现系统是否满足规定的需求; “尽早地和不断地测试”,越早进行测试,缺陷的修复成本就会越低; 程序员应避免检查自己的程序,由第三方进行测试更客观有效; 穷举测试是不可能的; 充分注意测试中的群集现象,一段程序中一发现的错误数越多,其中存在的错误概率越大,因此对发现错误较多的程序段,应进行更深入的测试;
设计测试用例时应包括合理输入和不合理输入,以及各种边界条件、特殊情况下要制造极端状态和意外状态; 注意回归测试的关联性,往往修改一个错误会引起更多错误; 测试应从“小规模”开始,逐步转向“大规模”; 测试用例式设计出来,不是写出来的,应根据测试的目的,采用相应的方法设计测试用例,从而提高测试的效率,更多的发现错误,提高程序的可靠性; 重视并妥善保存一切测试过程文档(测试计划,测试用例,测试报告等); 对测试错误结果一定要有一个确认的过程
四、软件测试主要工作内容
软件测试主要工作内容是验证和确认,下面分别给出其概念:
1、验证是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情。
(1)确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程;
(2)程序正确性的形式证明,即采用形式理论证明程序符号设一计规约规定的过程;
(3)评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。
2、确认是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件以正确的方式来做了这个事件。
(1)静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性;
(2)动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。
3、软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期问各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。
从不同的角度出发,软件测试可以划分为不同的分类:
(1)从是否关心软件内部结构和具体实现的角度划分
A.白盒测试
B.黑盒测试
C.灰盒测试
(2)从是否执行程序的角度
A.静态测试
B.动态测试。
(3)从软件开发的过程按阶段划分有
A.单元测试
B.集成测试
C.确认测试
D.验收测试
E.系统测试
五、软件测试方法
软件测试一般分为白箱测试和黑箱测试。
1、黑箱测试
黑箱测试(black-box testing),也称黑盒测试,是软件测试方法,测试应用程序的功能,而不是其内部结构或运作。测试者不需具备应用程序的代码、内部结构和编程语言的专门知识。测试者只需知道什么是系统应该做的事,即当键入一个特定的输入,可得到一定的输出。测试案例是依应用系统应该做的功能,照规范、规格或要求等设计。测试者选择有效输入和无效输入来验证是否正确的输出。
此测试方法可适合大部分的软件测试,例如单元测试(unit testing)、集成测试(integration testing)以及系统测试(system testing)。
2、白箱测试
白箱测试(white-box testing,又称透明盒测试glass box testing、结构测试structural testing等)是一个测试软件的方法,测试应用程序的内部结构或运作,而不是测试应用程序的功能(即黑箱测试)。在白箱测试时,以编程语言的角度来设计测试案例。测试者输入数据验证数据流在程序中的流动路径,并确定适当的输出,类似测试电路中的节点。
白箱测试可以应用于单元测试(unit testing)、集成测试(integration testing)和系统的软件测试流程,可测试在集成过程中每一单元之间的路径,或者主系统跟子系统中的测试。尽管这种测试的方法可以发现许多的错误或问题,它可能无法检测未使用部分的规范。
六、测试工程师的职责
1、参与软件项目的需求分析,关注项目需求的可测性,并能预先评估项目的风险;
2、负责软件项目的测试方案制定,设计测试数据和测试用例,并进行相互评审;
3、实施软件测试,完成对产品的集成测试与系统测试,对产品的功能、性能及其他方面的测试负责;
4、对项目总的问题进行跟踪分析和报告,推动测试中发现问题及时合理地解决;
5、汇总测试执行情况,编制相关报告。
七、
1、现在软件系统越来越复杂,一个软件系统可能由几个几十个人一起开发的,单个开发可能只熟悉他所有编写的模块,对于其他有影响的模块不熟悉,容易产生错误
2、开发自己写的代码自己不容易检查出错误,开发也有可能遗漏需求功能或者缺失异常处理,需要测试来帮助他们检查软件是否有bug ,是否符合产品设计,是否符合用户习惯,异常是否都已经处理,
3 、现在市场竞争激烈,对软件开发的周期和质量要求越来越高, 如果没有测试,开发很难再短时间内开发出客户满意的系统,导致软件的经济效益不好
总之一句话, 如果没有测试,软件的质量很难得到保证!
看了这篇内容后,坚信以下两件事,也会对你的自我提升有一定的帮助:
1、点赞,让更多人能看到,同时你的认可也会鼓励我创作更多优质内容。
2、要让自己变得更强:想想,假如你是要在测试这个行业长期做下去,你的工作经验和测试技术是绝对不够的,你需要提升,你需要丰富你的技术栈!还等什么!
最新评论