软件开发与测试计算xy(软件开发测试方法)

软件开发 1731
本篇文章给大家谈谈软件开发与测试计算xy,以及软件开发测试方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、软件测试和软件开发哪个好呢

本篇文章给大家谈谈软件开发与测试计算xy,以及软件开发测试方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

软件测试和软件开发哪个好呢

我觉得这两个各有各的好处。我们从技术上讲是软件测试:开发又要前端和都端,现在还有一个终端,这些开发基本要熟悉Java,H5,数据库等语言,作为一个公司的开发要想拿高工资技术肯定要到位。

如今大量的人投入IT行业可为什么还是大量缺人,那是很少的人技术达到高端水平,可想技术的难度有多大。测试是进入IT的一个低门槛职业,需要你掌握的内容不要求精,但是要求广。文案编写是最基本的还需要熟悉一下编程语言比如脚本。然后了解你自己所需要的工具,关于计算机的配置信息。相比于开发肯定是简单了不少。

从工资上讲是软件开发:

软件开发是要看资历的。一般初级工程师,也就刚入门,基本能力过关,没经验的人工资大概4k到8k,随时间的累计工资也会上涨。工具工作年限5年以上,有丰富的团队开发经验,有一定的大型系统框架设计经验,工资大概会在30k到50k左右。

软件测试刚入行的软件测试人员,起步月薪大多才5000-7000元左右。高于同龄人1000-2000元的薪资水平,工作2-3年后月薪在9000-12000元左右,3年以后基本就在10k到20k左右。

如果是从职业规划上讲,肯定是软件测试:

开发是非常伤脑的职业,相信如果仔细的人会发现IT行业秃头的人多、年轻人多。第一点就是做开发费脑头发容易掉,很伤身体,所以一般40岁左右就是开发的结束年龄。

第二点一个IT公司需要新鲜血液,没有新的idea,公司就会面临淘汰,所以年轻人较多。

如果你想了解更多关于软件测试和软件开发的消息,推荐你到AAA咨询一下。AAA教育集团总部位于北京IT科技企业云集的中关村,以中关村科技园区为依托,紧密结合软件企业人才需求,自主研发了专业的人才培养课程体系。

软件开发和软件测试的费用各是多少?

软件开发:需求量更多,一般大公司开发:测试=3:1,开发技术能力要求高,纯脑力劳动.

软件测试:相对简单学一些,但属于偏体力的活,不停的执行测试.而且现在测试,没有更好的突破,大多是人工测试.自动化测试,只是一个理想.

开发人员可以转去做测试,而做测试的很难转去做开发.

当然了,任何一个方向,如果你做强做精,都是有前途的.

软件测试和软件开发有什么区别?

严格意义上来讲,软件开发和软件测试都有非常不错的职业前景。因为IT服务人类,IT改变人们的生活方式,IT对于现代社会而言非常重要。但从历史的角度来看,软件测试与软件开发的职业前景还是有一些区别的。

【软件测试】:无论从行业现状,软件测试的重要性,以及软件测试发展史来看,至少在可以预见的未来10年时间内,整个软件测试行业应该会处于蓬勃发展这样一个生命周期中。因为一项职业从孕育、发展、成熟、稳定需要一定的时间来承载。这点,大家也可以从一些官方的数据来看到。

【软件开发】:从长远来看,还是不错的,但是相对于生命周期来看,软件开发早已经不是以前很多企业只是关注把软件做出来,就像现在要做出一个类似于淘宝的电子商城,其实从功能上,从代码实现上来看,已经很成熟了,花几千块可以买现成的模板,定制下,就可以。所以开发模式在改变,工厂化,模块化思想已经很成熟。所以将来的软件开发一定会关注,个性化、差异化。从这个意义上来看,软件开发的职业前景会受到需求的影响。另外,从行业资讯来看,比较新的开发技术会得到关注。老的慢慢会淡化。

软件测试和软件开发的区别?

软件测试从综合素质,知识结构等角度来看,要求比软件开发要更全面,这也直接导致了,软件测试的职业发展路线要广于软件开发,在测试技术领域,可以从测试执行工程师、测试设计工程师、测试系统工程师、测试架构工程师、测试专家这个道路晋升,也可以走比如自动化测试、测试开发、性能测试、易用性测试、安全性测试等专项。另外从管理的领域来看,可以从普通测试工程师,测试项目经理、测试主管、测试经理、测试总监、大部门测试总监等晋升。另外从外围IT职业,测试还可以走行业测试专家,比如金融领域测试专家,项目管理、软件测试咨询与培训等、软件质量保证(SQA)、软件销售、技术支持等只要是IT领域的职位都行。

软件开发的职业发展其实也比较广泛,在开发技术领域,可以从软件编码、软件设计与架构、软件需求等领域晋升。也可以从普通开发工程师、开发项目经理、开发经理、开发总监或者研发总监等晋升。另外也可以转型来做测试,通过学习测试关键技术,来做测试领域的测试开发。但从外围IT职业,开发相比测试能走的相对还是要窄些,很难走行业专家,除非先走需求分析,最后走行业专家。

百度岗位 软件开发 和 测试开发 岗位比较?

百度软件开发比测试开发好,技术性含量高。

软件开发工作职责:

-设计、开发百度在线服务基础组件及平台,包括如下方向:大规模数据采集、压缩、传输系统;统一接入与防攻击系统、流量自动调度系统、分布式缓存、分布式数据库等。

-设计、开发百度在线海量服务集群自动化管理与决策平台,包括如下方向:分布式监控系统、运维数据仓库与数据挖掘、认证与权限控制系统、变更系统、业务调度系统、网站速度优化平台等。

-参与百度在线产品系统架构优化,提升效率、系统健壮性及可伸缩性。

职位要求:

-对系统架构、后台技术有浓厚兴趣,热衷于追求技术极致与创新。

-深刻理解数据结构和算法设计,精通C/C 、Java、PHP中至少一门编程语言。

-了解linux/Unix操作系统原理、网络原理,熟练运用系统层支持应用开发。

-优秀的分析问题和解决问题的能力,勇于解决难题。

-强烈的上进心和求知欲,具备良好的沟通能力和团队合作精神。

-符合以下条件之一优先考虑:分布式系统理论与实践、云计算相关组件经验、开源社区活跃、项目经验丰富。

测试开发工作职责:

-根据项目计划制定项目测试用例并实施,保证项目质量和进度。

-根据项目设计与实现有关自动化测试的代码与用例。

-根据项目特点,开发合适测试工具或自动化解决方案,提高测试效率。

-参与程序架构和代码的评审工作,并提出改进意见。

-设计与执行测试用例,跟踪定位产品软件中的缺陷或问题。

-与项目相关人员就项目进度和问题进行沟通。

职位要求:

-正规高校计算机或相关专业本科以上学历。

-具有一定的软件自动化测试经验。

-能熟练地应用一门或几门以下的技术进行软件开发:

(1)C/C /Java; Linux/Unix Shell编程。

(2)Perl/Python/PHP; 网络技术及相应的开发。

(3)JavaScript/Html/Ajax;MySql/Oracle及相关数据库技术。

-对软件测试有浓厚的兴趣和丰富的经验,有很强的分析能力和定位问题的能力。

-在软件测试流程、规范的制定和实施方面有着丰富的经验。

-有很强的质量意识,能严格地遵照测试流程规范。

-具有搜索相关领域测试经验者优先。

软件开发测试与软件测试有什么区别?

一、软件测试的目的

软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情(Do the right thing),另一方面是确认软件以正确的方式来做了这个事件(Do it right)。

第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。

第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的第三个目的是保证整个软件开发过程是高质量的。

软件质量是由几个方面来衡量的:一、在正确的时间用正确的的方法把一个工作做正确(Doing the right things right at the right time.)。二、符合一些应用标准的要求,比如不同国家的用户不同的操作习惯和要求,项目工程中的可维护性、可测试性等要求。三、质量本身就是软件达到了最开始所设定的要求,而代码的优美或精巧的技巧并不代表软件的高质量(Quality is defined as conformance to requirements, not as “goodness” or “elegance”.)。四、质量也代表着它符合客户的需要(Quality also means “meet customer needs”.)。作为软件测试这个行业,最重要的一件事就是从客户的需求出发,从客户的角度去看产品,客户会怎么去使用这个产品,使用过程中会遇到什么样的问题。只有这些问题都解决了,软件产品的质量才可以说是上去了。

测试人员在软件开发过程中的任务:

1、寻找Bug;

2、避免软件开发过程中的缺陷;

3、衡量软件的品质;

4、关注用户的需求。

总的目标是:确保软件的质量。

二、软件测试的原则

软件测试从不同的角度出发会派生出两种不同的测试原则,从用户的角度出发,就是希望通过软件测试能充分暴露软件中存在的问题和缺陷,从而考虑是否可以接受该产品,从开发者的角度出发,就是希望测试能表明软件产品不存在错误,已经正确地实现了用户的需求,确立人们对软件质量的信心。

为了达到上述的原则,那么需要注意以下几点:

1.应当把“尽早和不断的测试”作为开发者的座右铭

2.程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完。

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

4.一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。

5.对测试错误结果一定要有一个确认的过程,一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。

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

7.回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多的错误出现的现象并不少见。

8.妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。

三、软件测试的对象

软件测试并不等于程序测试。软件测试应该贯穿整个软件定义与开发整个期间。因此需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应该是软件测试的对象。

在对需求理解与表达的正确性、设计与表达的正确性、实现的正确性以及运行的正确性的验证中,任何一个环节发生了问题都可能在软件测试中表现出来。

四、软件测试方法

软件测试的基本方法

单元测试的基本方法

综合测试的基本方法

确认测试的基本方法

系统测试的基本方法

软件测试的基本方法

软件测试的方法和技术是多种多样的。

对于软件测试技术,可以从不同的角度加以分类:

从是否需要执行被测软件的角度,可分为静态测试和动态测试。

从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试;

1、黑盒测试

黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等,主要用于软件确认测试。 “黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。

2、白盒测试

白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。

“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。

3.ALAC(Act-like-a-customer)测试

ALAC测试是一种基于客户使用产品的知识开发出来的测试方法。ALAC测试是基于复杂的软件产品有许多错误的原则。最大的受益者是用户,缺陷查找和改正将针对哪些客户最容易遇到的错误。

单元测试的基本方法

单元测试的对象是软件设计的最小单位模块。单元测试的依据是详细设描述,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。单元测试多采用白盒测试技术,系统内多个模块可以并行地进行测试。

单元测试任务

单元测试任务包括:1 模块接口测试;2 模块局部数据结构测试;3 模块边界条件测试;4 模块中所有独立执行通路测试;5 模块的各条错误处理通路测试。

模块接口测试是单元测试的基础。只有在数据能正确流入、流出模块的前提下,其他测试才有意义。测试接口正确与否应该考虑下列因素:

1 输入的实际参数与形式参数的个数是否相同;

2 输入的实际参数与形式参数的属性是否匹配;

3 输入的实际参数与形式参数的量纲是否一致;

4 调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;

5 调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配;

6调用其他模块时所给实际参数的量纲是否与被调模块的形参量纲一致;

7 调用预定义函数时所用参数的个数、属性和次序是否正确;

8 是否存在与当前入口点无关的参数引用;

9 是否修改了只读型参数;

10 对全程变量的定义各模块是否一致;

11是否把某些约束作为参数传递。

如果模块内包括外部输入输出,还应该考虑下列因素:

1 文件属性是否正确;

2 OPEN/CLOSE语句是否正确;

3 格式说明与输入输出语句是否匹配;

4缓冲区大小与记录长度是否匹配;

5文件使用前是否已经打开;

6是否处理了文件尾;

7是否处理了输入/输出错误;

8输出信息中是否有文字性错误;

检查局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确。局部数据结构往往是错误的根源,应仔细设计测试用例,力求发现下面几类错误:

1 不合适或不相容的类型说明;

2变量无初值;

3变量初始化或省缺值有错;

4不正确的变量名(拼错或不正确地截断);

5出现上溢、下溢和地址异常。

除了局部数据结构外,如果可能,单元测试时还应该查清全局数据(例如FORTRAN的公用区)对模块的影响。

在模块中应对每一条独立执行路径进行测试,单元测试的基本任务是保证模块中每条语句至少执行一次。此时设计测试用例是为了发现因错误计算、不正确的比较和不适当的控制流造成的错误。此时基本路径测试和循环测试是最常用且最有效的测试技术。计算中常见的错误包括:

1 误解或用错了算符优先级;

2混合类型运算;

3变量初值错;

4精度不够;

5表达式符号错。

比较判断与控制流常常紧密相关,测试用例还应致力于发现下列错误:

1不同数据类型的对象之间进行比较;

2错误地使用逻辑运算符或优先级;

3因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等;

4比较运算或变量出错;

5循环终止条件或不可能出现;

6迭代发散时不能退出;

7错误地修改了循环变量。

一个好的设计应能预见各种出错条件,并预设各种出错处理通路,出错处理通路同样需要认真测试,测试应着重检查下列问题:

1输出的出错信息难以理解;

2记录的错误与实际遇到的错误不相符;

3在程序自定义的出错处理段运行之前,系统已介入;

4异常处理不当;

5错误陈述中未能提供足够的定位出错信息。

边界条件测试是单元测试中最后,也是最重要的一项任务。众的周知,软件经常在边界上失效,采用边界值分析技术,针对边界值及其左、右设计测试用例,很有可能发现新的错误。

单元测试过程

一般认为单元测试应紧接在编码之后,当源程序编制完成并通过复审和编译检查,便可开始单元测试。测试用例的设计应与复审工作相结合,根据设计信息选取测试数据,将增大发现上述各类错误的可能性。在确定测试用例的同时,应给出期望结果。

应为测试模块开发一个驱动模块(driver)和(或)若干个桩模块(stub),下图显示了一般单元测试的环境。驱动模块在大多数场合称为“主程序”,它接收测试数据并将这些数据传递到被测试模块,被测试模块被调用后,“主程序”打印“进入-退出”消息。

驱动模块和桩模块是测试使用的软件,而不是软件产品的组成部分,但它需要一定的开发费用。若驱动和桩模块比较简单,实际开销相对低些。遗憾的是,仅用简单的驱动模块和桩模块不能完成某些模块的测试任务,这些模块的单元测试只能采用下面讨论的综合测试方法。

提高模块的内聚度可简化单元测试,如果每个模块只能完成一个,所需测试用例数目将显著减少,模块中的错误也更容易发现。

综合测试的基本方法

时常有这样的情况发生,每个模块都能单独工作,但这些模块集成在一起之后却不能正常工作。主要原因是,模块相互调用时接口会引入许多新问题。例如,数据经过接口可能丢失;一个模块对另一模块可能造成不应有的影响;几个子功能组合起来不能实现主功能;误差不断积累达到不可接受的程度;全局数据结构出现错误,等等。综合测试是组装软件的系统测试技术,按设计要求把通过单元测试的各个模块组装在一起之后,进行综合测试以便发现与接口有关的各种错误。

某设计人员习惯于把所有模块按设计要求一次全部组装起来,然后进行整体测试,这称为非增量式集成。这种方法容易出现混乱。因为测试时可能发现一大堆错误,为每个错误定位和纠正非常困难,并且在改正一个错误的同时又可能引入新的错误,新旧错误混杂,更难断定出错的原因和位置。与之相反的是增量式集成方法,程序一段一段地扩展,测试的范围一步一步地增大,错误易于定位和纠正,界面的测试亦可做到完全彻底。下面讨论两种增量式集成方法。

1 自顶向下集成

自顶向下集成是构造程序结构的一种增量式方式,它从主控模块开始,按照软件的控制层次结构,以深度优先或广度优先的策略,逐步把各个模块集成在一起。深度优先策略首先是把主控制路径上的模块集成在一起,至于选择哪一条路径作为主控制路径,这多少带有随意性,一般根据问题的特性确定。以下图为例,若选择了最左一条路径,首先将模块M1,M2,M5和M8集成在一起,再将M6集成起来,然后考虑中间和右边的路径。广度优先策略则不然,它沿控制层次结构水平地向下移动。仍以下图为例,它首先把M2、M3和M4与主控模块集成在一起,再将M5和M6 和其他模块集资集成起来。

自顶向下综合测试的具体步骤为:

1 以主控模块作为测试驱动模块,把对主控模块进行单元测试时引入的所有桩模块用实际模块替代;

2 依据所选的集成策略(深度优先或广度优先),每次只替代一个桩模块;

3 每集成一个模块立即测试一遍;

4 只有每组测试完成后,才着手替换下一个桩模块;

5 为避免引入新错误,须不断地进行回归测试(即全部或部分地重复已做过的测试)。

从第二步开始,循环执行上述步骤,直至整个程序结构构造完毕。下图中,实线表示已部分完成的结构,若采用深度优先策略,下一步将用模块M7替换桩模块S7,当然M7本身可能又带有桩模块,随后将被对应的实际模块一一替代。

自顶向下集成的优点在于能尽早地对程序的主要控制和决策机制进行检验,因此较早地发现错误。缺点是在测试较高层模块时,低层处理采用桩模块替代,不能反映真实情况,重要数据不能及时回送到上层模块,因此测试并不充分。解决这个问题有几种办法,第一种是把某些测试推迟到用真实模块替代桩模块之后进行,第二种是开发能模拟真实模块的桩模块;第三种是自底向上集成模块。第一种方法又回退为非增量式的集成方法,使错误难于定位和纠正,并且失去了在组装模块时进行一些特定测试的可能性;第二种方法无疑要大大增加开销;第三种方法比较切实可行,下面专门讨论。

2自底向上集成

自底向上测试是从“原子”模块(即软件结构最低层的模块)开始组装测试,因测试到较高层模块时,所需的下层模块功能均已具备,所以不再需要桩模块。

自底向上综合测试的步骤分为:

1 把低层模块组织成实现某个子功能的模块群(cluster);

2 开发一个测试驱动模块,控制测试数据的输入和测试结果的输出;

3 对每个模块群进行测试;

4 删除测试使用的驱动模块,用较高层模块把模块群组织成为完成更大功能的新模块群。

从第一步开始循环执行上述各步骤,直至整个程序构造完毕。

下图说明了上述过程。首先“原子”模块被分为三个模块群,每个模块群引入一个驱动模块进行测试。因模块群1、模块群2中的模块均隶属于模块Ma,因此在驱动模块D1、D2去掉后,模块群1与模块群2直接与Ma接口,这时可对MaD3被去掉后,M3与模块群3直接接口,可对Mb进行集成测试,最后Ma、Mb和 Mc全部集成在一起进行测试。

自底向上集成方法不用桩模块,测试用例的设计亦相对简单,但缺点是程序最后一个模块加入时才具有整体形象。它与自顶向综合测试方法优缺点正好相反。因此,在测试软件系统时,应根据软件的特点和工程的进度,选用适当的测试策略,有时混和使用两种策略更为有效,上层模块用自顶向下的方法,下层模块用自底向上的方法。

此外,在综合测试中尤其要注意关键模块,所谓关键模块一般都具有下述一或多个特征:①对应几条需求;②具有高层控制功能;③复杂、易出错;④有特殊的性能要求。关键模块应尽早测试,并反复进行回归测试。

确认测试的基本方法

通过综合测试之后,软件已完全组装起来,接口方面的错误也已排除,软件测试的最后一步确认测试即可开始。确认测试应检查软件能否按合同要求进行工作,即是否满足软件需求说明书中的确认标准。

1. 确认测试标准

实现软件确认要通过一系列墨盒测试。确认测试同样需要制订测试计划和过程,测试计划应规定测试的种类和测试进度,测试过程则定义一些特殊的测试用例,旨在说明软件与需求是否一致。无是计划还是过程,都应该着重考虑软件是否满足合同规定的所有功能和性能,文档资料是否完整、准确人机界面和其他方面(例如,可移植性、兼容性、错误恢复能力和可维护性等)是否令用户满意。

确认测试的结果有两种可能,一种是功能和性能指标满足软件需求说明的要求,用户可以接受;另一种是软件不满足软件需求说明的要求,用户无法接受。项目进行到这个阶段才发现严重错误和偏差一般很难在预定的工期内改正,因此必须与用户协商,寻求一个妥善解决问题的方法。

2. 配置复审

确认测试的另一个重要环节是配置复审。复审的目的在于保证软件配置齐全、分类有序,并且包括软件维护所必须的细节。

3. α、β测试

事实上,软件开发人员不可能完全预见用户实际使用程序的情况。例如,用户可能错误的理解命令,或提供一些奇怪的数据组合,亦可能对设计者自认明了的输出信息迷惑不解,等等。因此,软件是否真正满足最终用户的要求,应由用户进行一系列“验收测试”。验收测试既可以是非正式的测试,也可以有计划、有系统的测试。有时,验收测试长达数周甚至数月,不断暴露错误,导致开发延期。一个软件产品,可能拥有众多用户,不可能由每个用户验收,此时多采用称为α、β测试的过程,以期发现那些似乎只有最终用户才能发现的问题。

α测试是指软件开发公司组织内部人员模拟各类用户行对即将面市软件产品(称为α版本)进行测试,试图发现错误并修正。α测试的关键在于尽可能逼真地模拟实际运行环境和用户对软件产品的操作并尽最大努力涵盖所有可能的 用户操作方式。经过α测试调整的软件产品称为β版本。紧随其后的β测试是指软件开发公司组织各方面的典型用户在日常工作中实际使用β版本,并要求用户报告异常情况、提出批评意见。然后软件开发公司再对β版本进行改错和完善。

系统测试的基本方法

计算机软件是基于计算机系统的一个重要组成部分,软件开发完毕后应与系统中其它成分集成在一起,此时需要进行一系列系统集成和确认测试。对这些测试的详细讨论已超出软件工程的范围,这些测试也不可能仅由软件开发人员完成。在系统测试之前,软件工程师应完成下列工作:

(1) 为测试软件系统的输入信息设计出错处理通路;

(2) 设计测试用例,模拟错误数据和软件界面可能发生的错误,记录测试结果,为系统测试提供经验和帮助;

(3) 参与系统测试的规划和设计,保证软件测试的合理性。

系统测试应该由若干个不同测试组成,目的是充分运行系统,验证系统各部件是否都能政党工作并完成所赋予的任务。下面简单讨论几类系统测试。

1、恢复测试

恢复测试主要检查系统的容错能力。当系统出错时,能否在指定时间间隔内修正错误并重新启动系统。恢复测试首先要采用各种办法强迫系统失败,然后验证系统是否能尽快恢复。对于自动恢复需验证重新初始化(reinitialization)、检查点(checkpointing mechanisms)、数据恢复(data recovery)和重新启动 (restart)等机制的正确性;对于人工干预的恢复系统,还需估测平均修复时间,确定其是否在可接受的范围内。

2、安全测试

安全测试检查系统对非法侵入的防范能力。安全测试期间,测试人员假扮非法入侵者,采用各种办法试图突破防线。例如,①想方设法截取或破译口令;②专门定做软件破坏系统的保护机制;③故意导致系统失败,企图趁恢复之机非法进入;④试图通过浏览非保密数据,推导所需信息,等等。理论上讲,只要有足够的时间和资源,没有不可进入的系统。因此系统安全设计的准则是,使非法侵入的代价超过被保护信息的价值。此时非法侵入者已无利可图。

3、强度测试

强度测试检查程序对异常情况的抵抗能力。强度测试总是迫使系统在异常的资源配置下运行。例如,①当中断的正常频率为每秒一至两个时,运行每秒产生十个中断的测试用例;②定量地增长数据输入率,检查输入子功能的反映能力;③运行需要最大存储空间(或其他资源)的测试用例;④运行可能导致虚存操作系统崩溃或磁盘数据剧烈抖动的测试用例,等等。

4、 性能测试

对于那些实时和嵌入式系统,软件部分即使满足功能要求,也未必能够满足性能要求,虽然从单元测试起,每一测试步骤都包含性能测试,但只有当系统真正集成之后,在真实环境中才能全面、可靠地测试运行性能系统性能测试是为了完成这一任务。性能测试有时与强度测试相结合,经常需要其他软硬件的配套支持。

五、软件测试的类型

常见的软件测试类型有:

BVT (Build Verification Test)

BVT是在所有开发工程师都已经检入自己的代码,项目组编译生成当天的版本之后进行,主要目的是验证最新生成的软件版本在功能上是否完整,主要的软件特性是否正确。如无大的问题,就可以进行相应的功能测试。BVT优点是时间短,验证了软件的基本功能。缺点是该种测试的覆盖率很低。因为运行时间短,不可能把所有的情况都测试到。

Scenario Tests(基于用户实际应用场景的测试)

在做BVT、功能测试的时候,可能测试主要集中在某个模块,或比较分离的功能上。当用户来使用这个应用程序的时候,各个模块是作为一个整体来使用的,那么在做测试的时候,就需要模仿用户这样一个真实的使用环境,即用户会有哪些用法,会用这个应用程序做哪些事情,操作会是一个怎样的流程。加了这些测试用例后,再与BVT、功能测试配合,就能使软件整体都能符合用户使用的要求。Scenario Tests优点是关注了用户的需求,缺点是有时候难以真正模仿用户真实的使用情况。

Smoke Test

在测试中发现问题,找到了一个Bug,然后开发人员会来修复这个Bug。这时想知道这次修复是否真的解决了程序的Bug,或者是否会对其它模块造成影响,就需要针对此问题进行专门测试,这个过程就被称为Smoke Test。在很多情况下,做Smoke Test是开发人员在试图解决一个问题的时候,造成了其它功能模块一系列的连锁反应,原因可能是只集中考虑了一开始的那个问题,而忽略其它的问题,这就可能引起了新的Bug。Smoke Test优点是节省测试时间,防止build失败。缺点是覆盖率还是比较低。

此外,Application Compatibility Test(兼容性测试),主要目的是为了兼容第三方软件,确保第三方软件能正常运行,用户不受影响。Accessibility Test(软件适用性测试),是确保软件对于某些有残疾的人士也能正常的使用,但优先级比较低。其它的测试还有Functional Test(功能测试)、Security Test(安全性测试)、Stress Test(压力测试)、Performance Test(性能测试)、Regression Test(回归测试)、Setup/Upgrade Test(安装升级测试)等。

六、软件测试支持工具

一些受软件开发人员欢迎的软件测试工具为软件测试提供了强有力的支持。本文将介绍美国Rational公司的著名套装软件SQA和Pure Atria公司极具特色的Purify。

SQA SuiteSQA直接支持对客户/服务器应用软件的测试,它的一个重要特点是可以自动驱动被测程序的运行。SQA可以自动记录和重放程序执行过程,从而实现了对测试进行"复查"的自动化。

由于测试是一个需要反复进行的过程,常常要数十次甚至数百次地重复。因此,这一特性大大地提高了软件"再测试"(Re-Test)和"回归测试"(Regression)的自动化程度,把测试人员从繁杂的、重复性的手工测试中解脱出来,从而显著地提高软件测试效率。

除了这个最基本的自动录放功能外,它还提供了一系列的辅助支持功能,比如,

· 被录制的程序执行过程可以被自动转换成具有良好可读性的高级语言程序,从而使这个测试驱动程序可以由测试人员根据测试需要进行必要的修改,甚至完全用手工方式编制。

·自动记录和分析比较测试的执行结果。不论是简单的正文方式的输出结果,还是任意的图表、声音、动画、图形用户界面(GUI)中的任一构件,都可以根据测试人员的指定被自动记录在测试结果库中,并可对两次测试的结果自动地进行比较,指出其差异部分。此项功能无疑对"自动查找错误"很有帮助。

关于软件开发与测试计算xy和软件开发测试方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

扫码二维码