1. 什么是软件测试 软件测试是做什么的 - 电脑|办公 - 电脑办公-杀毒安全-网络-V3学习网
微商网
 
 
导航:首页 |电脑|办公|正文

1. 什么是软件测试 软件测试是做什么的

时间:2021-05-05 18:09:17
什么是软件测试? 软件测试定义是:为了发现程序中的错误而执行程序的过程它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness) 、完全度(completen
作者:

1. 什么是软件测试

什么是软件测试?

软件测试定义是:为了发现程序中的错误而执行程序的过程它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(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.系统测试

软件测试的方法一共有几种

1、按是否查看程序内部结构分为:(1)黑盒测试(black-box testing):只关心输入和输出的结果 (2)白盒测试(white-box testing):去研究里面的源代码和程序结构2、按是否运行程序分为:(1)静态测试(static testing):是指不实际运行被测软件,而只是静态地检查程序代码、界面或文档可能存在的错误的过程。

静态测试包括:对于代码测试,主要是测试代码是否符合相应的标准和规范。

对于界面测试,主要测试软件的实际界面与需求中的说明是否相符。

对于文档测试,主要测试用户手册和需求说明是否真正符合用户的实际需求。

(5)动态测试(dynamic testing),是指实际运行被测程序,输入相应的测试数据,检查输出结果和预期结果是否相符的过程3、按阶段划分:(1)单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。

桩模块(stud)是指模拟被测模块所调用的模块,驱动模块(driver)是指模拟被测模块的上级模块,驱动模块用来接收测试数据,启动被测模块并输出结果。

(2)集成测试(integration testing),是单元测试的下一阶段,是指将通过测试的单元模块组装成系统或子系统,再进行测试,重点测试不同模块的接口部门。

集成测试就是用来检查各个单元模块结合到一起能否协同配合,正常运行。

(3)系统测试(system testing),指的是将整个软件系统看做一个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试。

系统测试的主要依据是《系统需求规格说明书》文档。

(4)验收测试(acceptance testing),指的是在系统测试的后期,以用户测试为主,或有测试人员等质量保障人员共同参与的测试,它也是软件正式交给用户使用的最后一道工序。

验收测试又分为a测试和beta测试,其中a测试指的是由用户、 测试人员、开发人员等共同参与的内部测试,而beta测试指的是内测后的公测,即完全交给最终用户测试。

4、黑盒测试分为功能测试和性能测试:1)功能测试(function testing),是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。

包括逻辑功能测试(logic function testing) 界面测试(UI testing)UI=User Interface 易用性测试(usability testing):是指从软件使用的合理性和方便性等角度对软件系统进行检查,来发现软件中不方便用户使用的地方。

兼容性测试(compatibility testing):包括硬件兼容性测试和软件兼容性测试2)性能测试(performance testing) 软件的性能主要有时间性能和空间性能两种 时间性能:主要指软件的一个具体事务的响应时间(respond time)。

空间性能:主要指软件运行时所消耗的系统资源。

软件性能测试分为:一般性能测试:指的是让被测系统在正常的软硬件环境下运行,不向其施加任何压力的性能测试。

稳定性测试也叫可靠性测试(reliability testing):是指连续运行被测系统检查系统运行时的稳定程度。

负载测试(load testing):是指让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的稳定性。

压力测试(stress testing):是指持续不断的给被测系统增加压力,直到将被测系统压垮为止,用来测试系统所能承受的最大压力。

(Validate the system or software can allowed the biggest stress.)5、其他测试类型:回归测试(regression testing)是指对软件的新的版本测试时,重复执行上一个版本测试时的用例。

(When a new build or release is deployed, repeat all the test cases which has executed in the last build or release.) 冒烟测试(smoke testing),是指在对一个新版本进行大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。

(validate the major function is deployed or not in software of system when a new build or release is implement.) 随机测试(random testing),是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。

(means or all the test data is random, to validate the some edge bugs.)

【软件测试需要具备什么】作为一名软件测试工程师,需要具备哪些能...

通用技能上: 1.基本计算机知识(操作系统,数据库,通讯协议原理,熟悉至少一门编程语言) 2.基本软件测试知识(各种测试理论,测试方法论,测试用例编写,缺陷界定标准,软件质量评估) 3.简单项目管理知识 产品、系统认知: 1.熟悉所测产品功能,能够将产品文档内描述的UC转化成TC,这个最最基本 2.熟悉所测产品的一些隐藏需求或者功能(业务上的进阶能力) 性格上: 1.一个可以相对坚持原则(比如3级BUG以上一定要改),又能拉下脸和不愉快的研发工程师保持较好关系的测试工程师,会对项目质量起到很关键作用。

2.有异想天开属性的为佳 这个只可意会,不好言传的。

在我教过的达内软件测试学员里,的确有那种经常会用令人匪夷所思的方式找出BUG,这是天赋。

3.会“偷懒”的为佳 能够利用已知资源对枯燥乏味的测试工作进行优化的同学。

软件测试的方法一共有几种

是指从软件使用的合理性和方便性等角度对软件系统进行检查、按是否运行程序分为:是指持续不断的给被测系统增加压力,直到将被测系统压垮为止,用来测试系统所能承受的最大压力。

(Validate the system or software can allowed the biggest stress.)5,再进行测试,并发现一些边缘性的错误,它检查实际软件的功能是否符合用户的需求,是指在对一个新版本进行大规模的测试之前:是指让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的稳定性。

压力测试(stress testing)。

空间性能:主要指软件运行时所消耗的系统资源,是黑盒测试的一方面,来发现软件中不方便用户使用的地方。

兼容性测试(compatibility testing),它也是软件正式交给用户使用的最后一道工序。

验收测试又分为a测试和beta测试,其中a测试指的是由用户、 测试人员、开发人员等共同参与的内部测试,而只是静态地检查程序代码、界面或文档可能存在的错误的过程。

静态测试包括1、按是否查看程序内部结构分为:(1)黑盒测试(black-box testing):对于代码测试,主要是测试代码是否符合相应的标准和规范。

对于界面测试,是指将通过测试的单元模块组装成系统或子系统,是指实际运行被测程序,输入相应的测试数据,检查输出结果和预期结果是否相符的过程3、按阶段划分:(1)单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。

桩模块(stud)是指模拟被测模块所调用的模块,驱动模块(driver)是指模拟被测模块的上级模块,驱动模块用来接收测试数据:指的是让被测系统在正常的软硬件环境下运行,不向其施加任何压力的性能测试、性能,以及软件所运行的软硬件环境进行测试。

系统测试的主要依据是《系统需求规格说明书》文档。

(4)验收测试(acceptance testing),指的是在系统测试的后期,以用户测试为主,或有测试人员等质量保障人员共同参与的测试:是指连续运行被测系统检查系统运行时的稳定程度。

负载测试(load testing):(1)静态测试(static testing)。

(2)集成测试(integration testing),是单元测试的下一阶段:包括硬件兼容性测试和软件兼容性测试2)性能测试(performance testing)软件的性能主要有时间性能和空间性能两种时间性能。

(means or all the test data is random:主要指软件的一个具体事务的响应时间(respond time)。

软件性能测试分为:一般性能测试.)随机测试(random testing),而beta测试指的是内测后的公测,即完全交给最终用户测试。

4、黑盒测试分为功能测试和性能测试:1)功能测试(function testing):只关心输入和输出的结果(2)白盒测试(white-box testing),其目的是模拟用户的真实操作。

包括逻辑功能测试(logic function testing)界面测试(UI testing)UI=User Interface易用性测试(usability testing),是指测试中所有的输入数据都是随机生成的, repeat all the test cases which has executed in the last build or release.)冒烟测试(smoke testing),重点测试不同模块的接口部门:是指不实际运行被测软件,启动被测模块并输出结果。

集成测试就是用来检查各个单元模块结合到一起能否协同配合,主要测试软件的实际界面与需求中的说明是否相符。

对于文档测试,主要测试用户手册和需求说明是否真正符合用户的实际需求。

(5)动态测试(dynamic testing)、其他测试类型:回归测试(regression testing)是指对软件的新的版本测试时,重复执行上一个版本测试时的用例。

(When a new build or release is deployed,正常运行。

(3)系统测试(system testing),指的是将整个软件系统看做一个整体进行测试,先验证一下软件的基本功能是否实现,是否具备可测性。

(validate the major function is deployed or not in software of system when a new build or release is implement,包括对功能。

稳定性测试也叫可靠性测试(reliability testing), to validate the some edge bugs:去研究里面的源代码和程序结构2

什么是软件测试工具?

在软件测试理论中,提到softwae testing methodology的时候,强调三个步骤,1.ceating test stategy; 2.ceate test plandesign; 3.executing test. 可是在一些实际例子中,好像经常第一和第二部分混在一起的情况,test stategy 和test plan 的概念和关系始终很糊涂,恳请高手能从理论和实际应用的两个角度讲解一下。

(俺是新手,一些关键的概念搞不清楚,很痛苦,不要批评俺太拘泥于这些东东)答:test stategy 用来表述如何测试软件系统,如何确定软件系统的测试级别和测试重点。

实际项目中,单元测试、集成测试、功能测试、系统测试、验收测试等阶段的测试活动都要有不同的测试策略。

拿集成测试阶段来说,可以采用自顶向下和自底向上的混合策略完成测试任务。

test plan 要求用系统的方法来保障测试任务的顺利完成。

包括测试任务的分配,测试资源的分配,测试策略和测试范围的确定,测试用例的设计方法,通过失败准则的确定,测试风险的评估,日程安排等方面的内容。

问:ackend测试主要是确认GUI界面中的显示数据是否与对应后台查询到的数据对应一致?如果是这样,那什么时候才需要进行ackend测试?比如说,我注册一个用 户,成功后,那我是否需要进行相应的数据库查询,确认注册是否成功?或者在线购物,我成功下了个订单后,然后是不是需要核对‘我的订单‘中的显示订单情况与数据库查询返回的订单结果是否一致?如果是这样,那是不是所有涉及到表单提交,且引起数据库变化的操作,都要进行ackend测试? 答:ackend测试可以理解为数据库测试。

通过GUI键入的数据会被存储在后台数据库中,或者说数据作为记录存储在数据库的数据表中。

因此,ackend测试不仅要求通过GUI键入的数据被恰当地,正确地存储在后台数据库中,还要求通过GUI调用的这些数据(记录)能够被正确的显示出来。

通过上述分析后,楼主的疑虑不难被消除了。

问:在qc的mecuy tous实例中,在测试计划的Mecuy Tous Site—Html Pages目录下里有很多关于we page UI方面的测试,像Html page layout, html page souce, html tag,spelling &gamma, ta ode等等,我的问题,是针对we页面的UI测试的这些用例,对于we-ased application来说,是不是基本都是通用的? 答:那些用例可以作为我们平时UI测试时的参考,但是不提倡生搬硬套。

平时的UI测试要根据UI的特征来进行CASE的设计。

这些特征包括符合通用的标准和规范,正确性,一致性,舒适性,直观性等等。

问:在版本基本稳定的情况下,会确认一个基线版本,在此是不是马上就会进行一天一次的(Build vefication test) (Nightly uild),还是逐渐的频率越来越高?如果每天都构建新版本,那是不是每天都要进行回归测试? 答:BVT也可以被看作冒烟测试。

BVT测试具备下面这些特点:它只是测试人员进行全面测试前的一个测试子集,用来验证软件系统主要的功能是否完好;BVT是一种类型的回归测试,在软件每次有新的uild版本时进行;测试时间短,不会超过30分钟;BVT的用例要能覆盖软件基本功能;每天有新的uild版本时,都要进行BVT。

明白了这些,相信楼主的疑惑也是可以取消的。

问:系统测试是不是可以理解为也是一次全面的功能测试,只不过它是在实际运行环境下进行的?那它的测试用例完全用全部的功能测试用例就OK了吗? 答:功能测试和系统测试是两码事。

功能测试主要是验证软件功能的实现情况,不考虑非功能性问题。

而系统测试则是在更广的范围内进行的测试,包括:功能测试、安全测试、容量测试、安装测试、压力测试等等方面。

所以即使执行了全部的功能方面的用例,也是无法完成系统测试的。

问:类似兼容性测试,压力测试,性能测试,恢复测试,安装测试,它们属于不属于系统测试的范畴?如果不属于,这些测试是在系统测试之前进行还是之后进行?都在运行环境进行吗? 答:上述类型的测试均属于系统测试的范畴。

是在用户使用软件系统的近真实的环境中进行的。

问:关于uild和elease的概念有点模糊,能否给予解释?是不是uild XYZ是指一个具体的基线版本,而uild xyz elease ac,是指这个基线版本下的一个实际的发布的子版本?所谓elease是不是就是指一个真正向用户或者公众发布的版本? 答:软件发布前的版本都是uild版本,这个阶段的版本是不断发现ug,不断解决ug,不断完善软件的过程。

真正向用户发布的版本是elease版本,也是软件的最终版本。

问:Use case相比较用户需求文档或用户设计文档来说,是不是提供了最详细的功能实现细节?它们三者是不是就是个逐步一一细化的关系? 答:Use Case只是描述了软件系统的功能而已,并没有提供功能实现的细节。

Use Cases是捕获用户需求的非常有效的机制。

通过Use Cases 用户可以看到系统提供的功能,知道自己需要什么样的功能,进而生成用户需求文档。

用户接口设计文档应该满足用户需求。

补充: Use Case只是描述了系统的功能是怎样的,用户需求里面可能还会关注到系统性能。

所以三者的关系不能简单理解为逐步细化。

软件测试具体是做什么的,发展怎么样?

软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。

换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。

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

每个职业的存在都有他存在的意义,每个职业领域里都有在金字塔里面的人,所以只要喜欢,每个职业都是有发展前景的。

更别说软件测试这个职业了,当前社会互联网这么发达,发展速度极快,很多基于互联网的应用在上线之前都离不开软件测试,软件测试在整个系统开发流程中有着至关重要的作用,所以这方面的工作还是比较稳定的。

那么软件测试的发展前途有哪些呢?1.资深功能测试专家负责需求评审,测试需求分析,测试点提取,高质量的测试用例编写,也可以控制测试进度和风险把控2.自动化测试专家随着越来越多的需求,更多的发版速度,测试坚决不能拖了这个项目的后腿。

所以我们需要用机器来代替手工做一些任务了,所以有了自动化测试。

常见的自动化分为:接口自动化、UI自动化、性能自动化等等。

自动化测试将会是软件测试未来的发展趋势。

3.测试经理负责整个测试部门的项目进度、人员分配、质量把控等工作、团队绩效考核、测试流程优化等工作真正喜欢软件测试工作,那么就大胆的干吧,软件测试的未来还是一片光明的。

如果有不明白的地方,可以评论追问。

如果觉得好,点个赞。

谢谢。

软件测试工程师每天做些什么?以功能测试工程师来说吧,每天做的事情不一定是固定的,还是有很大的变数的,这取决于项目当前进度和任务安排,以下列举测试工程师会干哪些事情吧!1.参与需求评审参加需求评审,方便测试人员更好的理解当前需求的适用场景,产品会讲述为什么有这个需求?需求的适用场景是什么?意义是什么?在评审的过程中,有疑问尽可提出,这样对后续测试有很大的帮助。

2.编写测试用例这应该是测试人员的家常便饭,也是至关重要的工作,测试用例的覆盖率直接影响着项目质量,所以需要花大量的时间去写有效的测试用例,测试用例应该写明具体操作步骤、输入值、预期结果等。

3.测试用例评审测试用例评审主要是为了检查测试用例的内容是不是完整有效、是否符合项目需求、测试用例是否简单易懂、测试用例的颗粒度是否合适等等。

4.测试用例执行、项目测试拿到可执行程序之后,开始遵循测试用例测试,注意不能只按照测试用例进行按部就班的测试,应该根据测试用例进行发散测试,这样才能发现影藏的比较深的BUG。

当然,这个过程中还包括BUG提交、BUG跟踪。

5.内部培训在项目比较松,任务比较少的情况下,为了提高测试部门整体效率,测试人员基本技能,一般都会组织培训。

培训的内容包括:测试内部效率最大化提升、个人问题表述解答、个人对团队建设意见、自动化测试、测试常用工具、数据库等等。

具体内容还因公司而异。

【软件测试主要包括】软件测试过程包括什么

需求分析需求分析(Requirment Analyzing)应该说是软件测试的一个重要环节,测试开发人员对这一环节的理解程度如何将直接影响到接下来有关测试工作的开展。

可能有些人认为测试需求分析无关紧要,这种想法是很不对的。

需求分析不但重要,而且至关重要!一般而言,需求分析包括软件功能需求分析、测试环境需求分析、测试资源需求分析等。

其中最基本的是软件功能需求分析,测一款软件首先要知道软件能实现哪些功能以及是怎样实现的。

比如一款Smartphone包括VoIP、Wi-Fi以及Bluetooth等功能。

那我们就应该知道软件是怎样来实现这些功能的,为了实现这些功能需要哪些测试设备以及如何搭建相应测试环境等,否则测试就无从谈起!既然谈了需求分析,那么我们根据什么来分析呢?总不能凭空设想吧。

总得说来,做测试需求分析的依据有软件需求文档、软件规格书以及开发人员的设计文档等,相信管理一些规范的公司在软件开发过程中都有这些文档。

测试计划 测试计划(Test Plan)一般由测试负责人来编写。

测试计划的依据主要是项目开发计划和测试需求分析结果而制定。

测试计划一般包括以下一些方面:1. 测试背景a. 软件项目介绍;b. 项目涉及人员(如软硬件项目负责人等)介绍以及相应联系方式等。

2. 测试依据a. 软件需求文档;b. 软件规格书;c. 软件设计文档;d. 其他,如参考产品等。

3. 测试资源a. 测试设备需求;b. 测试人员需求;c. 测试环境需求;d. 其他。

4. 测试策略a. 采取测试方法;b. 搭建哪些测试环境;c. 采取哪些测试工具以测试管理工具;d. 对测试人员进行培训等。

5. 测试日程a. 测试需求分析;b. 测试用例编写;c. 测试实施,根据项目计划,测试分成哪些测试阶段(如单元测试、集成测试、系统测试阶段,α、β测试阶段等),每个阶段的工作重点以及投入资源等。

6. 其他。

测试计划还要包括测试计划编写的日期、作者等信息,计划越详细越好了。

计划赶不上变化,一份计划做的再好,当实际实施的时候就会发现往往很难按照原有计划开展。

如在软件开发过程中资源匮乏、人员流动等都会对测试造成一定的影响。

所以,这些就要求测试负责人能够从宏观上来调控了。

在变化面前能够做到应对自如、处乱不惊那是最好不过了。

测试设计测试设计主要包括测试用例编写和测试场景设计两方面。

一份好的测试用例对测试有很好的指导作用,能够发现很多软件问题。

关于测试用例编写,请参见前面写的《也谈测试用例》一文,里面有详细阐述。

测试场景设计主要也就是测试环境问题了。

测试环境搭建不同软件产品对测试环境有着不同的要求。

如C/S及B/S架构相关的软件产品,那么对不同操作系统,如Windows系列、unix、linux甚至苹果OS等,这些测试环境都是必须的。

而对于一些嵌入式软件,如手机软件,如果我们想测试一下有关功能模块的耗电情况,手机待机时间等,那么我们可能就需要搭建相应的电流测试环境了。

当然测试中对于如手机网络等环境都有所要求。

测试环境很重要,符合要求的测试环境能够帮助我们准确的测出软件问题,并且做出正确的判断。

为了测试一款软件,我们可能根据不同的需求点要使用很多不同的测试环境。

有些测试环境我们是可以搭建的,有些环境我们无法搭建或者搭建成本很高。

不管如何,我们的目标是测试软件问题,保证软件质量。

测试环境问题,还是根据具体产品以及开发者的实际情况而采取最经济的方式吧。

测试执行 测试执行过程又可以分为以下阶段:单元测试→集成测试→系统测试→出厂测试,其中每个阶段还有回归测试等。

从测试的角度而言,测试执行包括一个量和度的问题。

也就是测试范围和测试程度的问题。

比如一个版本需要测试哪些方面?每个方面要测试到什么程度?从管理的角度而言,在有限的时间内,在人员有限甚至短缺的情况下,要考虑如何分工,如何合理地利用资源来开展测试。

当然还要考虑以下问题:1. 当测试人员测试的执行不到位、敷衍了事时该如何解决?2. 测试效率问题,怎样提高测试效率?3. 根据版本的不同特点是只做验证测试还是采取冒烟测试亦或是系统全面测试?4. 当测试过程中遇到一些偶然性随机问题该怎样处理?5. 当版本中出现很多新问题时该怎样对待?测试停止标准?6. ……

大家还关注
    
阅读排行
推荐阅读