引论:我们为您整理了13篇软件测试范文,供您借鉴以丰富您的创作。它们是您写作时的宝贵资源,期望它们能够激发您的创作灵感,让您的文章更具深度。
篇1
软件测试是软件质量的重要保证。通过软件测试工作对软件质量做出判断、尽早发现问题,在程序自身与用户需求之间寻找平衡点,解放程序员,解放售后服务人员,从而推动软件工程的发展。
测试过程的质量决定测试工作的成败。在掌握了一定测试技术和工具之后,笔者认为,就实际测试工作而言,还有三条值得借鉴的经验:(1)使用早期软件生存周期测试技术可避免缺陷转移。从需求阶段就应该开始测试工作,这样可避免缺陷转移,从而降低错误成本。(2)尽量编制和利用一些自动测试工具。例如,利用捕获/回放工具,可以完成二十四小时无人参与的测试运行,从而缩短测试周期,实现测试自动化;利用结构覆盖工具,可确定软件是否己被充分测试,此类工具能具体指出一个软件产品中哪个部分在测试中己被实际执行,从而使测试者准确地定位软件缺陷位置。因此说,通过利用测试工具,测试者可在很大程度上既省时省力又能有效地完成测试工作。(3)测试不等同于调试,不能由开发人员自己完成这部分工作。测试是一个专业技术学科,测试过程必须有专人负责,建立完整且规范的文档,严格执行相应测试标准。
具体的测试技术和工具有很多,假定您已经掌握了一些测试技术和工具。那么,在一个综合测试中,应该如何安排和考虑?这里以网站测试为例,说明之。
1 网站测试的议题
网页的特点、黑盒测试、灰盒测试、白盒测试、配置和兼容性测试、易用性测试。
2 网页特点
2.1 网页:由文字、图形、声音和超级链接组成的文档。以浏览器作为访问和解释工具,以Internet为载体。
2.2 特性:字体、颜色和大小;图形和照片、超级连接的文字和图形、动画、下拉列表框、用户数据输入域、自定义的框架布局、各种动态信息的隐含格式和信息。
3 黑盒测试
黑盒测试是将网站和网页当作一个黑盒子,根据网页上的显示和功能,测试各种对象。测试对象包括:文字、超级连接、图形、表单等。
3.1 黑盒测试――文字。主要检查:术语、内容、准确度、拼写:包括常规文字、图形和表单中的文字、电子邮件、邮政编码、电话号码的正确
3.2 黑盒测试――超级链接。超级连接的表现形式:文字、图形。测试原则包括:跳转正确;在正确的窗口中打开;鼠标经过超级连接时,变成手形;连接是电子邮件,应该能响应到相应的邮件系统;查找孤页:对照网站规划图或者代码分析查找。
3.3 黑盒测试――图形。图形的作用是增加网页的信息表现形式,增强网页的活力。测试内容包括:所有图形的正确载入和显示,否则图形丢失或者名称不对;图形与文字的排列是否合适,文字是否正确环绕图形,与浏览器窗口有无变化;图形的数量是否合适,保证网页的执行速度;在不同带宽上,图形的显示速度是否流畅。
3.4 黑盒测试――表单。表单是网页上用于输入数据的控件的集合体。表单中包括:文本框、列表框、选择按钮、命令按钮。测试项包括:正确的域大小;接受正确的数据,拒绝错误的数据;按命令按钮后,校验所有域的合法性;数据的范围要正确。
4 灰盒测试
4.1 以黑盒测试为主,白盒测试为辅,通过简单的查看软件内部代码,了解软件的运行状态,有助于软件测试用例的合理设计。
4.2 网页由服务器和客户端脚本构成,表现为HTML。HTML不是编程语言(是由脚本动态生成的或静态书写,用来标记),可以查看。通过查看网页HTML,可以了解网页的最终目的,使用了哪些技术,网页的组织形式。因此说,这是一个很重要的测试经验。
4.3 通过灰盒测试,可以提高测试的效率。
5 白盒测试
测试那些生成动态网页的程序代码:本阶段可利用CSE HTML Validator等工具,这是一个很有用的对于HTML代码进行合法性检查的工具。按照已掌握的白盒测试技术来设计测试用例,测试者通常需要掌握如下一些编程语言:Java、JavaScript、VBScript、ASP、XML、Perl、CGI、PL/SQL等。
6 网站的配置和兼容性测试
配置测试是用各种硬件和软件平台以及不同设置检查软件操作的过程。本阶段测试主要是利用等价区间技术来完成。测试内容包括:硬件平台、浏览器的软件和版本、浏览器插件、浏览器选项、视频分辨率和色深、文字大小、调制解调器的速率
7 易用性测试
网站的易用性缺陷表现在难以进入、过期、显示速度慢,设计不合理等方面。测试中欲检查:不使用不成熟的技术;滚动文字、滚动块和不停运行的动画;滚动显示的长页面;不标准的连接页面;过期信息;过长的下载时间;缺少导航系统;孤页;复杂的网站地址;使用框架等。
8 性能测试
网站的性能测试对于网站的运行而言十分重要。该测试主要从如下两个方面进行:负荷测试(Load),负荷测试指的是进行一些边界数据的测试;压力测试(Stress),压力测试更像是恶意测试,压力测试倾向应该是致使整个系统崩溃。
说明:性能测试可以采用相应的工具进行自动化测试,如下工具比较适用:(1)ab――Apache的测试工具。这是Apache自带的对于性能测试方面的工具,功能不是很多,但是非常实用。(2)OpenSTA―开发系统测试架构。它主要用于做性能测试的负荷及压力测试,使用比较方便,可以编写测试脚本,也可以先行自动生成测试脚本后再对应用测试脚本进行测试。
9 安全性测试
网络安全问题日益重要,特别对于有交互信息的网站和进行电子商务活动的网站尤其重要。
测试需要涵盖网站的安全性测试。可选择的工具有SAINT(Security Administrator's Integrated Network Tool),此工具能够测出网站系统的相应的安全问题,并且能够给出安全漏洞的解决方案。
参考文献:
[1]乔根森(Jorgen.P.C),著.韩柯,译.软件测试[M].北京:机械工业出版社,2010(07).
[2]基特(Kit,E.),著.李新华,译.软件测试过程改进[M].北京:机械工业出版社,2011(03).
篇2
第一条 合同性质
本合同属于软件测试合同。
第二条 合同内容
乙方为甲方提供《_________软件》的测试。
以下的测试款项,甲方在购买正式的软件时,可作为正式购买软件预付款的一部分抵扣,同时,测试期结束,此合同失效。
第三条 测试方式,费用及支付方式
测试方式为:账号的测试;_________提供测试服务器测试;客户出服务器,_________提供测试软件。
支付方式:a.账号的测试:合同签订后,乙方提供2个带有_________的账号(每个账号有30分钟的话费)话机或网关,提交甲方测试,测试的费用只收硬件的押金即可。测试结束,乙方按硬件的借侧合同执行。b._________提供测试服务器测试:由乙方提供整套的已装有_________软件带有公网ip地址的服务器,其管理权由甲方控制,测试期为一个月,测试费用:_________元,合同签订后一次付清,即可将服务器的地址与密码交予甲方。测试结束后全部收回。c.客户出服务器,_________提供测试软件:客户按照乙方的要求将服务器,中继网关配好后,提交乙方安装_________软件,具体的条款见本合同的第四、五、六、七条。测试期为_________个月,费用为_________元人民币,合同签订后一次性付清。
第四条 合同执行期限
交货:甲方将所需要的全部硬件设备配好后(硬件设备配置必须符合乙方系统的要求);乙方应于甲方通知乙方安装系统之日起_________个工作日内完成软件系统的安装和调试。
第五条 验收标准及时间
乙方安装和调试竣工资料(包括用户手册和/或维护手册等)。
甲方接到乙方验收通知后在现场安排验收,验收合格后,甲方以书面方式签收。
第六条 系统培训
甲方参加系统培训的人员的基本的要求:熟悉并具有电信操作及运营经验,熟悉英特网及宽带网的协议及设计,能熟练操作msie6.0linux9.0cis,熟悉计算机及服务器系统的维护及简单维修。
第七条 软件服务内容
7.1 在_________网关及_________接通并通过_________验收后,_________在_________个工作日内完成远程_________网关软件安装及调试工作。
7.2 在服务器及完整的linux9.0操作系统安装完毕并通过_________验收后,_________在_________个工作日内完成远程软件安装及调试工作。
7.3 在以上两项工作完成之后,_________科技在5个工作日内完成远程综合调试工作并提交综合测试报告。
7.4 售后服务条例:对于使用_________系统服务平台的运营商,乙方提供许可软件的售后服务支持
7.5 售后服务指标体系:乙方在接到甲方反映的技术问题30分钟内电话联系一级技术支持并开始工作。经常性问题在60分钟内解决,为解决的问题提供120分钟进展报告。有难度问题(在24小时内不能解决的问题),提供每12小时进展报告。
7.6 系统的安装,调试及维护原则上由乙方负责。
7.7 乙方提供的技术支持为_________。
第八条 不可抗力
甲乙双方的任何一方由于不可抗力的原因不能履行合同时,应及时向对方通报不能履行或不能完全履行的理由,在取得有关主管机关证明以后,允许延期履行,部分履行或者不履行合同,并根据情况可部分或全部免予承担违约责任。
第九条 争议解决方式
在合同履行过程中发生争议,双方应当协商解决。协商解决不成,双方商定,采用向合同签订地仲裁委员会仲裁。
第十条 合同生效
本合同正本一式二份,甲乙双方各执一份,经双方签字盖章后生效。
甲方(盖章):_________乙方(盖章):_________
篇3
电 话:153********(手机)
E-mail:
最近工作 [ 1年7个月 ]
公 司:XX计算机软件有限公司
行 业:计算机服务(系统、数据服务、维修)
职 位:软件测试
最高学历
学 历:本科
专 业:软件测试
学 校:西北大学
自我评价
本人熟悉软件开发测试流程,丰富的自动化测试经验,善于学习。能在成功与失败中完善自己,活泼开朗,乐观向上,适应力强,勤奋好学,认真负责。待人诚恳,做事踏实细心,对工作有热情有责任心。
求职意向
到岗时间: 一周之内
工作性质: 全职
希望行业: 计算机软件
目标地点: 上海
期望月薪: 面议/月
目标职能: 软件测试
工作经验
2012 /12—至今:XX计算机软件有限公司[ 1年7个月]
所属行业:计算机服务(系统、数据服务、维修)
测试部 软件测试
1.负责需求分析,制定测试计划,编写测试计划和测试案例;
2.负责测试环境的搭建;
3.负责使用JIRA 缺陷管理系统, 管理跟踪BUG;
4.负责系统的功能测试,以及处理客户的回馈,重现问题;
5.负责熟练使用LINUX脚本语言,实现测试环境的自动安装和定时运行,并进行日志的查看及排错等;
6.负责根据用户需求,编写用户使用说明手册;
7.负责系统的安装及配置,负责客户版本升级。
2011 /1—2011 /12:XX软件科技有限公司[ 11个月]
所属行业:计算机软件
事业部 软件测试
1、负责根据软件开发年度进程表,与美国微软测试及开发团队沟通,确定各阶段测试目标;
2、负责在项目测试过程中,制定测试计划,参与测试用例的编写、修改和审核;
3、负责定期组织技术交流会议,以提高组员工作效率;
4、负责及时处理客户对软件提出的问题,执行测试定位问题,以帮助产品的修复。
2010 /7—2011 /1:XX网络游戏有限公司[ 6个月]
所属行业:娱乐/休闲/体育
技术部 软件测试
1、负责了解软件的测试流程,并制定测试流程;
2、负责编写测试用例,BUG提交给开发人员;
3、负责开发人员修复,进行回归测试;
4、负责根据需求写测试大纲、编写测试用例、测试报告。
教育经历
2006 /9--2010 /7 西北大学 软件测试 本科
证 书
2009 /6 大学英语六级
篇4
Technique of Software Test and Design
GUO Qun
(Liaoning University of Intemational Business and Economics,Dalian 116024,China)
Abstract:Software test, the straightforward and rapid way to improve the quality of software, is the necessary condition for the improvement of the software quality. This paper, introducing the common concept, method and step of the software test, gives the solution to the software test.
Key words:software; test; design; technique
1 引言
在大型软件开发过程中,人们使用了许多保证软件质量的方法分析、设计和实现软件。但由干问题的复杂性,人们对客观事物认识的局限性及软件开发人员配合不协调等因素,因而在软件开发过程中难免有各种各样的错误。如果在软件投入生产性运行之前,没有发现并纠正软件中的大部分错误,则这些错误迟早会在生产过程中暴露出来,那时不仅改正这些错误的代价更高,而且往往会造成很恶劣的后果。因此,一定要高度重视软件测试工作。软件测试是为了发现故障而执行程序的过程。其目的是以尽可能少的时间和人力发现并改正软件中潜在的各种故障及缺陷。所以,在软件投入运行之前必须进行软件测试,以尽可能多地发现软件中的故障,提高软件可靠性。
2 软件测试定义
软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。正确认识软件测试的定义是十分重要的,它决定了测试方案的设计。软件测试只能查找程序中的错误;不能证明程序中没有错误。
3 软件测试方法
怎样对软件进行测试呢?有两种方法。一种称为黑盒测试:如果知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正确使用,也叫功能测试;它是在程序的接口进行的,把软件看成是一个黑盒,测试时仅仅关心如何寻找出使程序不按要求运行的情况,是最基本的测试法。另一种称为白盒测试:如果知道产品内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行,也叫结构测试。它是把软件看成装在一个透明的白盒子里,就是完全了解程序的结构和处理过程,按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按规定要求正确工作。
4 软件测试步骤
一个大型软件系统通常由若干个子系统构成,每个子系统又由若干个模块构成。软件测试分以下几个步骤:
(1)单元测试:又称模块测试,是针对软件设计的最小单位――程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行的独立进行单元测试。
(2)组装测试:又称集成测试,通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:在把各个模块连接起来时,穿越模块接口的数据是否会丢失;一个模块的功能是否会对另一个模块的功能产生不利的影响;各个子功能组合起来,能否达到预期要求的父功能;全局数据结构是否有问题;单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。
(3)确认测试:又称有效性测试。它的任务是验证软件的功能和性能及其他特性是否与用户的要求一致。首先要进行有效性测试以及软件配置复审,然后进行验收测试和安装测试,在通过了专家鉴定之后,才能成为可交付的软件。
(4)系统测试:是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行(使用)环境下,对计算机系统进行一系列的组装测试和确认测试。系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方。
5 软件测试的策略
测试过程按4个步骤进行,即单元测试、组装(集成)测试、确认测试和系统测试。如图1所示。
图1 软件测试的过程
开始是单元测试,集中对用原代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。然后,把已测试过的模块组装起来,进行组装测试,主要对与设计相关的软件体系结构的构造进行测试。为此。在将一个一个实施了单元测试并确保无误的程序模块组装成软件系统的过程中,对正确性和程序结构等方面进行检查。确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。最后是系统测试,把已经经过确认的软件纳入实际运行环境中,与其他系统成分组合在一起进行测试。
6 结束语
软件测试是保证软件可靠性的主要手段,是软件开发过程中最艰巨、最繁重的任务。软件开发人员要明确软件测试的目标,掌握软件测试的方法、策略,选用最少量的高效测试数据,做到尽可能完善的测试,从而尽可能多地发现软件中的问题。降低软件测试的成本,提高软件测试效率。开发出用户满意的高质量的软件。
参考文献:
[1]张海藩.软件工程导轮[M].北京:清华大学出版社,1992.6.
篇5
白盒测试也称结构测试或逻辑驱动测试。它是按照程序内部的逻辑结构测试程序,主要关注代码是否能够正确执行。通过白盒测试可以检测出产品内部动作是否按照设计规格说明书的规定正常工作,并检验程序中的每条通路是否都能按预定要求正确工作。白盒测试是把测试对象看作一个透明的盒子,软件测试人员能够依据程序内部逻辑结构等相关信息,设计或选择测试用例,对程序进行测试。通过在不同的节点检查程序的状态,以保证实际的状态和预期的状态一致。
3.灰盒测试
灰盒测试,是介于白盒测试与黑盒测试之间的。可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不像白那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。
二、 软件测试技术的策略
软件测试并不单是软件开发完成后的一个独立的过程,而是贯穿于整个软件开发的过程,根据软件开发的周期不同,可以将软件测试分为:单元测试、集成测试、确认测试、系统测试和验收测试。
1.单元测试(Unit Testing)
单元测试是在软件开发过程中能够进行的最基础的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。单元测试不仅仅是作为无错编码一种辅助手段在一次性的开发过程中使用,单元测试必须是可重复的,无论是在软件修改,或是移植到新的运行环境的过程中。因此,所有的测试都必须在整个软件系统的生命周期中进行维护。
2.集成测试(Integrated Testing)
集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。因此,单元测试后,有必要进行集成测试,发现并排除在模块连接中可能发生的问题,最终构成要求的软件子系统或系统。对子系统,集成测试也叫部件测试。
3.确认测试(Validation Testing)
确认测试又称有效性测试。有效性测试是在模拟的环境下,运用黑盒测试的方法,验证被测软件是否能够按照需求规格说明书中所要求的工作。任务是验证软件的功能和性能及其他特性是否与用户的要求一致。对软件的功能和性能要求在软件需求规格说明书中已经明确规定,它包含的信息就是软件确认测试的基础。确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样。
4.系统测试(System Testing)
系统测试的任务是尽可能彻底地检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统“做得怎样”。这阶段又可分为三个步骤:模块测试,测试每个模块的程序是否有错误;组装测试,测试模块之间的接口是否正确;确认测试,测试整个软件系统是否满足用户功能和性能的要求。该阶段结束应交付测试报告,说明测试数据的选择,测试用例以及测试结果是否符合预期结果。
三、软件测试未来发展方向
目前,软件测试存在4个发展方向。
1.验证技术
验证的目的在于证明在软件生命期各个阶段,以及阶段间的逻辑协调性和正确性。验证技术目前仅适用于特殊用途的小程序。
2.静态测试
正逐步地从代码的静态测试往高层开发产品的静态测试发展。
3.测试用例的选择
什么样的测试用例是好的测试用例?可以从4个特性描述测试用例的质量,即有效性、仿效性、经济性和修改性。
4.测试技术的自动化
这是一个最新的发展方向。自动测试也是一门技术,但与测试技术存在很大的区别。
篇6
基本的方法是构造一些合理输入,检查是否得到期望的输出。这是一种枚举方法。倘若枚举空间是无限的,那可惨了,还不如回家种土豆有盼头。测试人员一定要设法减少枚举的次数,否则没好日子过。关键在于寻找等价区间,因为在等价区间中,只需用任意值测试一次即可。等价区间的概念可表述如下:
记(A,B)是命题f(x)的一个等价区间,在(A,B)中任意取x1进行测试。
如果f(x1)错误,那么f(x)在整个(A,B)区间都将出错。
如果f(x1)正确,那么f(x)在整个(A,B)区间都将正确。
上述测试方法称为等价测试,来源于人们的直觉与经验,可令测试事半功倍。
还有一种有效的测试方法是边界值测试。即采用定义域或者等价区间的边界值进行测试。因为程序员容易疏忽边界情况,程序也“喜欢”在边界值处出错。
例如测试的一段程序。凭直觉等价区间应是(0,1)和(1,+∞)。可取x=0.5以及x=2.0进行等价测试。再取x=0以及x=1进行边界值测试。
有一些复杂的程序,我们难以凭直觉与经验找到等价区间和边界值,这时枚举测试就相当有难度。
在用“白盒测试”方式进行正确性测试时,有个额外的好处:如果测试发现了错误,测试者(开发人员)马上就能修改错误。越早改正错误,付出的代价就越低。所以大多数软件公司要求程序员在写完程序时,马上执行基于单步跟踪的“白盒测试”。
2容错性测试
容错性测试是检查软件在异常条件下的行为。容错性好的软件能确保系统不发生无法意料的事故。
比较温柔的容错性测试通常构造一些不合理的输入来引诱软件出错,例如:
(1)输入错误的数据类型,如“猴”年“马”月。
(2)输入定义域之外的数值,上海人常说的“十三点”也算一种。
粗暴一些的容错性测试俗称“大猩猩”测试,除了不能拳打脚踢嘴咬,什么招术都可以使出来。这里我举不出例子,因为我没有对程序粗暴过,并且这辈子也不打算学会粗暴。
3性能与效率测试
性能与效率测试主要是测试软件的运行速度和对资源的利用率。有时人们关心测试的“绝对值”,如数据送输速率是每秒多少比特。有时人们关心测试的“相对值”,如某个软件比另一个软件快多少倍。
在获取测试的“绝对值”时,我们要充分考虑并记录运行环境对测试的影响。例如计算机主频,总线结构和外部设备都可能影响软件的运行速度;若与多个计算机共享资源,软件运行可能慢得像蜗牛爬行。
在获取测试的“相对值”时,我们要确保被测试的几个软件运行于完全一致的环境中。硬件环境的一致性比较容易做到(用同一台计算机即可)。但软件环境的因素较多,除了操作系统,程序设计语言和编译系统对软件的性能也会产生较大的影响。如果是比较几个算法的性能,就要求编程语言和编译器也完全一致。
性能与效率测试中很重要的一项是极限测试,因为很多软件系统会在极限测试中崩溃。例如,连续不停地向服务器发请求,测试服务器是否会陷入死锁状态不能自拔;给程序输入特别大的数据,看看它是否吃得消。
4易用性测试
易用性测试没有一个量化的指标,主观性较强。调查表明,当用户不理解软件中的某个特性时,大多数人首先会向同事、朋友请教。要是再不起作用,就向产品支持部门打电话。只有30%的用户会查阅用户手册。[Cusumano1995]
一般认为,如果用户不翻阅手册就能使用软件,那么表明这个软件具有较好的易用性。
5文档测试
文档测试主要检查文档的正确性、完备性和可理解性。好多人甚至不知道文档是软件的一个组成部分。
正确性是指不要把软件的功能和操作写错,也不允许文档内容前后矛盾。
篇7
发达国家,尤其是美国,软件测试在软件公司占有重要地位,在谷歌,一个典型Android开发项目组中测试工程师数量比软件工程师多的多,花费在测试上的时间要比花费在编码上的时间多很多。在中国,1990年成立国家级中国软件测评中心,Android行业软件测试则起步更晚,无论是Android软件测试理论研究,还是Android测试实践,和国外发达国家存在不小的差距。
2 常用Android测试技术分析
Android测试技术可以分为静态测试技术和动态测试技术。静态测试技术是对程序源代码的语法、结构、接口等进行非运行的检查;对软件设计说明书、需求规格说明书等软件周期产生的文档进行评审和验证。动态软件测试技术是对运行程序进行检查、分析程序的执行状态和程序的外部表现,验证运行结果与预期结果的差异,分析软件的性能等指标。
2.1 静态测试技术
Findbugs是一款典型的静态测试工具,它通过检查类或JAR文件,对字节码与缺陷模式尽行比较,试图检索可能的问题,Findbugs可以帮助Android程序员在不运行代码的情况下查找代a缺陷,并在检测完毕后生成一份详细的报告,统计代码中存在的高优先级报警和低优先级报警,对所有报警进行归类,并进行详细罗列。Findbugs使用节点包括开发阶段和维护阶段。研发工程师完成独立模块编写后,准备模块整合阶段,通过该工具对Java文件进行第一次扫描,用以检测自身不易发现的赋值、比较和循环等错误,整个项目组完成所有功能后,执行第二次扫描,经过两轮扫描,去除掉所有典型BUG,系统的稳定性会更上一层楼。所产生的Findbugs报告可以作为一项输出文档用于存档,以备后续相关人员查验。
2.2 动态软件测试技术
2.2.1 Monkey
Monkey测试是Android SDK自动化测试命令行工具,向系统发送伪随机用户数据(模拟用户触摸屏、按键输入等)使用随机重复的方式去对开发的应用进行压力测试,Monkey测试过程中系统所产生的日志保存在Android设备数据目录下,发生系统崩溃、无响应或者强制关闭时,分析日志文件,能够有效帮助开发人员锁定问题发生位置,更快找到解决办法。Monkey命令参数组合很复杂,主要划分为常用选项、事件选项、约束选项和调试选项四大类,测试人员通过配置这四大类中的参数来确定Monkey测试命令。Monkey测试所有事件都是随机的,不带任何人的主观性,而且可以长时间不间断自动测试,在一定程度上解放了测试员的双手。
2.2.2 UiAntomator
UiAntomator是一款主流安卓用户界面自动化测试框架,改革了测试人员通过点击每个控件元素,对比输出结果是否符合预期的测试方法,该框架通过自动创建功能UI测试示例,允许测试工程师在一个或者多个安卓设备运行测试程序,测试原生的安卓应用用户界面,测试用例可以跨越不同进程,可以大大提高界面测试效率,这款工具要求测试工程师掌握Java软件编程,需要编写UiAntomator测试案例,通过调用UiAntomator提供的API从主界面模拟用户操作。该框架也存在一些局限性,仅支持API16或者更高级别的版本,不能支持Web视图测试,无法直接访问安卓对象。
2.2.3 Robotium
Robotium是安卓之初使用最广泛的安卓测试框架,扩展于JUnit开源库,提供非常强大的自动化黑盒测试范例,它提供与安卓相似的框架,支持控制控件的各种API,使测试变得非常简单。通过该框架可以编写单元、系统和验收等测试方案,应用非常广泛。但是这款测试框架也存在硬伤,就是使用该框架的测试工程师要了解Android基本组件,并且该框架不能支持跨应用测试。
3 结束语
Android软件测试技术发展很快,但是仍然跟不上Android软件技术发展的步伐,未来Android软件测试仍面临巨大挑战。当下,Android软件测试行业正处于一个飞速发展的阶段,Android软件测试的重要性越来越得到人们的重视,相信经过一段时间的努力,我们会逐渐缩小与国外发达国家的差距,带动整个Android软件产业的健康发展。
篇8
Analysis of Integration Testing of Software Testing
Hou Yanfang,Chu Shulai
(Zhoukou Vocational and Technical College,Zhoukou466001,China)
Abstract:The integration testing plays a very important role in software testing,the concept of integration testing,integration testing strategy and the main types of integration testing (phase) briefly discusses the analysis of several key integration testing.
Keywords:Software testing;Integration testing;Call graph;MM-path
软件测试作为软件质量保证的关键技术之一,其目的就是能够有效地发现软件中的错误或缺陷。集成测试是软件测试中处于组件测试和系统测试之间一个非常重要的环节,这是因为所有组件都经过测试并能正常运行并不意味着这些组件放到一起经过集成后还能正常运行,正是基于这一点,很多大的软件公司成立了专门关注集成测试的测试团队,如能恰当实施,集成测试能大大减少一些在系统测试阶段才会发现的缺陷。
一、集成测试的概念
(一)集成测试的定义
集成测试是构造软件体系结构的系统化技术,同时也是进行一些旨在发现与接口相关的错误的测试。其目标是利用已通过单元测试的构件建立设计中描述的程序结构。
(二)集成测试遵循的原则
集成测试遵循的原则主要包括:所有公共接口都要被测试到;关键模块必须进行充分的测试;集成测试应当按一定的层次进行;集成测试的策略选择应当综合考虑质量、成本和进度之间的关系;集成测试应当尽早开始,并已总体设计为基础;在模块与接口的划分上,测试人员应当和开发人员进行充分的沟通;当接口发生修改时,涉及的相关接口必须进行再测试;测试执行结果应当如实的记录;集成测试应根据集成测试计划和方案进行,不能随意测试;项目管理者应保证审核测试用例。
(三)集成测试的任务
集成测试的主要任务包括:将各模块连接起来,检查模块相互调用时,数据经过接口是否丢失;将各个子功能组合起来,检查能否达到预期要求的各项功能;一个模块的功能是否会对另一个模块的功能产生不利的影响;全局数据结构是否有问题,会不会被异常修改;单个模块的误差积累起来,是否被放大,从而达到不可接受的程度。
(四)集成测试的文档
软件集成的总体计划和特定的测试描述应该在测试规约中文档化。这个文档包含测试计划和测试规程,它是软件过程的工作产品,也是软件配置的一部分。
下列准则和相应的测试可应用于所有的测试阶段:接口一致性。当每个模块(或簇)引入程序结构中时,要对其内部和外部接口进行测试;功能有效性。执行的测试旨在发现功能错误;信息内容。执行的测试旨在发现与局部或全局数据结构相关的错误;性能。执行的测试旨在验证软件设计期间建立的性能边界。
测试计划主要包括:集成测试的进度,确定每个阶段的开始和结束时间;附加软件(桩模块及驱动模块)的简要描述侧重于专门进行的工作的特征;描述测试环境和资源;特殊的硬件配置、特殊的仿真器和专门的测试工具或技术也是需要讨论的问题;详细测试规程。
测试规约:集成策略(包含在测试计划中)和测试细节(在测试规程中描述)是最基本的成分,因此必须要有。
二、集成测试的策略
驱动模块(Driver):用来模拟待测模块的上级模块。驱动模块在集成测试中接受测试数据,将相关的数据传送给待测模块,启动待测模块,并打印出相应的结果。桩模块(Stub):也称为存根程序,用以模拟待测模块工作过程中所调用的模块。桩模块由待测模块调用,它们一般只进行很少的数据处理,例如打印入口和返回,以便于检验待测模块与下级模块的接口。
一般可分为非增量集成和增量式集成,其中增量集成指的是程序以小增量的方式逐步进行构造和测试,这样错误易于分离和纠正,更易于对接口进行彻底测试,而且可以运用系统化的测试方法,传统的将增量测试策略分为自顶向下集成、自底向上集成以及三明治集成。
三、集成测试的主要类型(阶段)
(一)基于功能分解的集成
在讨论集成测试时,测试方法都基于采用树或文字形式来表示的功能分解。这类讨论不可避免地要深入到将要集成的模块的顺序。
1.自顶向下集成(从树顶开始向下)。深度优先集成是首先集成结构中主控路径下的所有模块。
2.自底向上集成(从树底开始向上)。自底向上集成是自顶向下顺序的“镜像”,不同的是,桩由模拟功能分解树上一层单元的驱动模块替代。在自底向上集成中,首先从分解树的叶子开始,并用特别编写的驱动模块进行测试。驱动模块中的一次性代码比桩中的少。大多数系统在接近叶子节点时都有相当高的扇出数,因此在自底向上集成顺序中,不需要同样数量的驱动模块,不过代价是驱动模块都比较复杂。
3.三明治集成(前两种方法的某种组合)。三明治集成测试是将自顶向下测试与自底向上测试两种模式有机结合起来,采用并行的自顶向下、自底向上集成方式,形成的方法。三明治集成测试更重要的是采取持续集成的策略。桩和驱动的开发工作都比较小,不过代价是作为大爆炸集成的后果,在一定程度上增加了定位缺陷的难度。
(二)基于功能分解方法的优缺点
1.自顶向下集成,其优点:在于它可以自然地做到逐步求精,一开始就能让测试者看到系统的框架。缺点:需要提供桩模块,桩模块是对被调用子模块的模拟,可能不能反映真实情况,因此测试有可能不充分。
由于被调用模拟子模块不能模拟数据,如果模块间的数据流不能构成有向无环图,一些模块的测试数据便难以生成。同时,观察和解释测试输出往往也是困难的。
2.自底向上集成,其优点:由于驱动模块模拟了所有调用参数,即便数据流并未构成有向无环图,生成测试数据也没有困难。如果关键的模块是在结构图的底部,那么自底向上测试是有优越性的。缺点:直到最后一个模块被加入进去之后才能看到整个程序(系统)的框架。
3.三明治集成测试采用自顶向下、自底向上集成相结合的方式,并采取持续集成的策略,有助于尽早发现缺陷,也有利于提高工作效率。
4.功能分解缺点。为了满足项目管理的需要,而不是为了满足软件开发人员的需要。桩或驱动的开发工作量,此外还有重新测试所需工作量的问题。对于自顶向下集成,需要开发(节点-1个)桩模块;对于自底向上集成,需要开发(节点-叶子)个驱动模块。
(三)基于调用图的集成
基于调用图的集成一般分为成对集成和相邻集成。基于调用图方法的优点:偏离了纯结构基础,转向行为基础,因此底层假设是一种改进;这些技术还免除了桩/驱动器开发工作量;与以构建和合成为特征的开发匹配得很好。缺点:缺陷隔离问题,尤其是对有大量邻居的情况;清除缺陷后,意味着以前测试过的包含已变更代码的邻居,都需要重新进行测试。
(四)基于路径的集成
将集成测试的侧重点由测试单独开发并通过测试的单元之间的接口,转移到这些单元的交互上,即它们的“协同功能”上。接口是结构性的,而交互是功能性的。
MM-路径是功能性测试和结构性测试的一种混合,其优点:它与实际系统行为结合紧密,而不依赖于基于分解和调用图集成的结构性推动。基于路径集成测试也适用于面向对象的软件测试。缺点:需要更多的工作量标识MM-路径。这种工作量可能会与桩和驱动的开发所需工作量有偏差。
(五)面向对象环境中的集成测试
两种不同的策略:
1.基于线程的测试(thread-based testing)。
2.基于使用的测试(use-based testing)。
驱动程序和桩程序:驱动程序可用于测试低层中的操作和整组类的测试。驱动程序也可用于代替用户界面以便在界面实现之前就可以进行系统功能的测试。桩程序可用于在需要类间的协作但其中的一个或多个协作类仍未完全实现的情况下。
四、结语
集成测试既是一种测试类型也是一个测试阶段,因为集成定义为一组交互,因此组件之间的所有已定义的交互都需要测试,体系结构和设计可以提供系统内部的交互细节,但是测试一个系统与另一个系统之间的交互要求对这些系统一起工作的方式有深刻理解,此时的集成测试是一个阶段。由于集成测试的目标是模块之间的交互,这种测试就像白盒、黑盒及其它类型的测试一样,也有一套技术和方法,因此集成测试也被看作是一种测试类型。
参考文献:
[1]周燕,宋敬华.面向对象的集成测试顺序的研究[J].计算机测量与控制,2010,9
[2]张云岗,刘春茂.软件测试技术浅析[J].技术与市场,2011,2
[3]朱家云.浅析软件测试[J].信息系统工程,2011,4
[4王丽达.论软件系统的测试[J].经济研究导刊,2011,14
[5]刘欣.软件测试方法分析与实践[D].北京邮电大学,2009
篇9
篇10
Regression Testing of Software Testing
Fan Xuedong
(Xi'an Foreign Affairs University,Xi'an710077,China)
Abstract:Regression testing despite the tedious,repetitive,but it must do the test,whether to take automated testing tools,or other test method is the problem discussed in this article.In this paper,the nature of regression testing,discusses the key,importance and testing methods,have their academic and practical significance.
Keywords:Software testing;Regression testing
一、概述
所谓回归测试就是当软件发生改变时,重新测试已经通过测试的测试区域,以验证修改的正确性及其影响。在软件开发生命周期中,软件发生改变,就会带来问题。改变可能是源于发现了错误并做了修改,也有可能是因为集成或维护阶段加入了新模块。错误跟踪与管理系统不完善;对错误的理解不透彻,只修正了错误的外在表现,从而造成修改失败;修改还有可能产生副作用,从而导致软件未被修改的部分产生新的问题;新加入代码还有可能对原有代码带来影响。因此,我们就必须重新测试,以便确定修改是否达到了预期的目的。同时,为了验证修改的正确性及其影响就需要进行回归测试。
回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在渐进和快速迭代开发中,新版本的连续使回归测试进行的更加频繁,而在极端编程方法中,更是要求每天都进行若干次回归测试。因此,通过选择正确的回归测试策略来改进回归测试的效率和有效性是非常有意义的。
二、测试的大部分工作是做回归测试,软件一旦作了修改就必须进行
项目的测试组在实施测试的过程中会将所开发的测试用例保存到“测试用例库”中,并对其进行维护和管理。当得到一个软件的基线版本时,用于基线版本测试的所有测试用例就形成了基线测试用例库。在需要进行回归测试的时候,就可以根据所选择的回归测试策略,从基线测试用例库中提取合适的测试用例组成回归测试包,通过运行回归测试包来实现回归测试。保存在基线测试用例库中的测试用例可能是自动测试脚本,也有可能是测试用例的手工实现过程。回归测试需要时间、经费和人力来计划、实施和管理。在给定的预算和进度下,需要对测试用例库进行维护并依据一定的策略选择相应的回归测试包。
(一)首先必须有个管理良好的测试用例库,用例库中的所有用例必须有效,达到足够的覆盖率。这需要有良好的测试管理工具,并有相应的资源(时间与人力)去维护这个测试用例库,使其中没有过时,冗余的测试用例。如何管理组织好测试用例库是一个值得深入研究的课题,要做好回归测试,组织管理良好的测试用例库是前提。测试用例库的维护为了最大限度地满足客户的需要和适应应用的要求,软件在其生命周期中会频繁地被修改和不断推出新的版本,修改后的或新版本软件会添加新的功能或者变化。同时,被修改的或新增添的软件功能,仅靠重新运行以前的测试用例不行,必须追加新的测试用例来测试。
测试用例库维护是一个连续的过程,通常可以将软件开发的基线作为基准,维护的主要内容包括:(1)删除过时的测试用例。因为需求的改变等原因可能会使一个基线测试用例不再适合被测试系统,这些测试用例就会过时。(2)改进不受控制的测试用例。随着软件项目进展,库中的用例会不断增加,会出现对输入或运行状态十分敏感的测试用例。这些测试不容易重复且结果难以控制,影响测试效率。(3)删除冗余的测试用例。冗余测试用例的存在降低了回归测试的效率。所以需要定期的整理测试用例库,并将冗余的用例删除掉。(4)增添新的测试用例。程序段、构件或关键的接口在现有的测试中没有被测试,就应该开发新测试用例。不仅改善了测试用例的可用性,而且也提高了测试库的可信性,同时还可以将一个基线测试用例库的效率和效用保持在一个较高的级别上。
(二)回归测试的实质在于它是一个能够检测到回归错误的受控实验。回归测试包的选择在软件生命周期中,即使一个得到良好维护的测试用例库,也可能变得相当大,这使每次回归测试都重新运行完整的测试包变得不切实际。当测试组选择缩减的回归测试时,有可能删除了将揭示回归错误的测试用例,消除了发现回归错误的机会。然而,如果采用了代码相依性分析等安全缩减技术,就可决定哪些测试用例可以被删除而不会让回归测试的意图遭到破坏。选择回归测试策略应该兼顾效率和有效性两个方面。常用的选择回归测试的方式包括:(1)再测试全部用例。选择基线测试用例库中的全部测试用例组成回归测试包,这是比较安全的方法,它具有最低遗漏和风险,但测试成本最高。往往超出我们的预算和进度。(2)基于风险选择测试。可以基于一定的风险标准来从基线测试用例库中选择回归测试包。首先运行最重要的、关键的和可疑的测试,而跳过那些非关键的、优先级别低的或者高稳定的测试用例,这些用例即便可能测试到缺陷,其严重性也仅有三级或四级。(3)基于操作剖面选择测试。若基线测试用例库的测试用例是基于软件操作剖面开发的,测试用例的分布情况反映了系统的实际使用情况。回归测试所使用的测试用例个数可由测试预算确定,优先选择针对最重要或最频繁使用功能的测试用例,释放和缓解最高级别风险,有助于尽早发现那些对可靠性有最大影响的故障。(4)再测试修改的部分。当测试者对修改的局部化有足够的信心时,可以通过相依性分析识别软件的修改情况并分析修改的影响,将回归测试局限于被改变的模块和它的接口上。通常,一个回归错误一定涉及一个新的、修改的或删除的代码段。在允许的条件下,回归测试尽可能覆盖受到影响的部分。
再测试全部用例的策略是最安全的策略,但过时回归测试不太可能揭示新的错误,而且由于时间、人员、设备和经费的原因,不允许选择再测试全部用例的回归测试策略,此时,可选择适当的策略进行缩减的回归测试。
(三)实际工作中,回归测试需要反复进行,回归测试的基本过程有了测试用例库的维护方法和回归测试包的选择策略。回归测试可遵循下述基本过程进行:(1)识别软件中被修改的部分;(2)从原基线测试用例库中,排除所有不再适用的测试用例,确定那些对新的软件版本依然有效的测试用例,其结果是建立一个新的基线测试用例库T。(3)依据一定的策略从T中选择测试用例测试被修改的软件。(4)若必要可生成新的测试用例集T1,用于测试T无法充分测试的软件部分。(5)用T1修改后的软件。第b和第c步测试验证修改是否破坏了现有的功能,第d和第e步测试验证修改工作本身。
三、结论
(一)无论采取何种策略,回归测试是必须的一种测试。回归测试时我们必须采取一些较为有效的方法。例如安排新的测试者完成手工回归测试,让更有经验的测试者开发新的测试用例,做一些探索性的测试。但最重要的就是基于实际可行的引进自动化测试,因为机器不会累。实际中,回归测试的重复将非常令人厌烦,因此,需要通过自动测试来实现重复的和一致的回归测试,提高回归测试效率。
(二)在测试软件时,应用多种测试技术是常见的。测试时,测试者希望采用多于一种回归测试策略来增加修改软件的信心。如果回归测试包不能达到所需的覆盖要求,必须补充新的测试用例。回归测试是重复性较多的活动,容易使测试者感到疲劳和厌倦,降低测试效率,在实际中可以采用一些策略减轻这些问题。可以在不影响测试目标的情况下,鼓励测试者创造性地执行测试用例,变化输入、按键和配置能够有助于激励测试者又能揭示新的错误。
(三)回归测试需要根据项目、测试资源等实际情况采取有效计划和组织。其中需要注意的是必须重视回归测试,在测试计划中有很好的进度安排及选择相应的回归,重视测试用例的维护,借助于自动化工具。在组织测试时需注意:首先是各测试阶段的修改一定要在本测试阶段内完成回归,以免将错误遗留到下一测试阶段。其次,测试期间应对软件版本冻结,将测试发现的问题集中修改,集中回归。建议将回归测试与兼容性测试结合起来。在新的配置条件下运行旧的测试可以发现兼容性问题,同时也可以揭示编码在回归方面的错误。
篇11
1.2软件测试的关键性阶段
主要有以下两个关键性的检测阶段。第一阶段是软件开发过程中各主要单元模块完成后进行测试。这一阶段测试可以将缺陷控制在最小单元模块内,给研发人员最快的测试反馈,促使其完善单元模块的功能,达到用户的使用要求;第二阶段测试是软件系统全部完成后,进行全方位的综合测试,查找系统在使用过程中可能存在的问题。此时,需要根据系统要实现的功能进行多种测试工具的应用,以其找到系统不符合要求的功能或性能瑕疵。
1.3软件工程中软件测试的方法
对软件工程进行软件测试时,不同软件可以运用不同的测试方法。现阶段,主要以软件测试在测试过程中是否需要将程序进行完全运行来判断测试方法,不需要系统程序运行就能完成测试的方法称为静态方法;需要系统时时传送相应数据,并通过相应程序检测系统是否达到用户的期望值,是否存在运行逻辑上的问题和算法上的缺陷等的测试方法称为动态方法。目前,静态测试方法应用较广的有静态排演法、软件检查法和软件审查法。随着软件测试方法的不断创新和完善,新兴的测试方法如静态自动分析、分析模型等方法不断得到应用;动态测试方法随着精细化测试进程的深入逐渐细分为单元测试方法、集成测试方法、系统测试方法。这些测试方法相较于静态测试方法,具有范围广、测试成功率高、内容覆盖面大、应用程度高等特点。如白盒测试、代码覆盖测试等。
2软件测试在软件工程中的作用分析
2.1软件工程项目需要软件测试进行全方位的辅助管理
所谓软件工程项目就是将用户的要求进行立项管理,通过建立项目组、研究用户的使用目标来确立项目目标,对目标现状进行系统研究与分析、总体目标细分阶段性目标以及规划项目总体方案等,将软件开发过程建立在项目管理过程中。在这一过程中,各阶段性成果都需要软件测试来校验其可行性,从而辅助软件工程项目步入更完善的项目管理中。首先,软件工程项目需要精细化项目管理和集中项目管理两者协调统一。因此,需要设立软件测试机构,能够对项目细分的各阶段、各模块进行软件测试。其次,项目组人员组成和责任落实要依照规章制度实施。要体现软件测试的重要性和实际意义,测试机构负责人为项目组组长的最佳人选。其组员为各项目负责人和其他测试人员组成。软件测试结果必须立即反馈到软件研发人员、程序员及系统分析人员等相关人员手中,以期促进其团结协作,将软件各部分呈现出的问题解决。最终满足用户的使用要求,实现软件设计的目标。可见,软件测试的辅助作用,对于软件工程项目的精细化管理、软件相关技术的综合管理等至关重要。
2.2软件工程项目实施反促软件测试发展
研发一个新的软件系统时,其核心内容包括目标确定、框架设计、分支设计和编码应用等,这些核心内容均需要软件测试来实现其统一性和兼容性。系统目标是软件测试的最终目的,软件测试需要围绕系统目标进行缺陷的发现和反馈,从而实现各阶段测试的统一性和完整性,从而促进系统的协调和完善。经过软件测试的系统,必须保证达到项目目标,且在长时间运行下无重大bug。从这一过程来看,软件测试是在软件工程项目实施中得以发展的。软件测试机构并不是真正意义上的独立,其“独立”仅是功能上的独立。实际上,在进行软件工程项目实施的整个过程中,无论是整体设计还是精细化管理,都需要软件测试参与其中,以测试角度对软件工程项目的设计和实施进行指导和辅助,从而纠正一些设计上的错误和细节上的缺陷。这种参与的直接性促进软件测试必须紧跟项目研发现状,才能提出及时有效的参考意见,促进项目顺利开发。软件编码规范是软件研发团队必须规范执行的,而这种规范的编码刚是软件测试机构的首要任务,制定规范要严肃,执行规范要严格,才能给用户呈现出高质量的软件产品。
2.3软件测试原则
软件测试的原则是在其测试的基本目的和要求下产生的,因此,在进行软件测试时,必须注意其原则性。(1)坚持用户使用目的,坚持项目总体目标和阶段性目标的实现原则;(2)测试“精细化”即细分分支、单元模块、阶段性成果、系统全面测试等随时进行;(3)测试时间要越早越好,频率越高越好;(4)测试中逻辑性检测和算法检测要注重;(5)测试要结合数据检测进行;(6)保证测试的严肃性;(7)测试坚持第三方进行原则;(8)不合理条件值都要进行测试;(9)测试过程、方法、用便、结果、完善等都要记录在案,便于故障定位和日常维护。
3自动化软件测试技术分析
随着智能化技术和自动化技术的不断深入应用,在软件测试中,自动化软件测试技术得到创新和发展,并在软件开发中应用得越来越广泛。所以,人们将各种自动测试的效果进行评估,将成功案例进行相似引用,来判断检测的可行性。最初的自动化测试具有较严格的针对性,运用特定的测试原则和测试方法,将统计指标运用其中,从而得到测试结果,并对其进行全面评估,从而得出自动化测试的严密性。随着自动化测试的不断深入推进和创新,其测试准则和自动测试技术越来越成熟,逐渐过渡到自动测试模型化阶段。逐渐形成自动测试的等级制度,使得自动软件测试技术成为测试控制能力高低优劣的一个重要判断依据。
篇12
1.1 课程定位
《软件测试》课程作为软件专业二年级下学期的专业课,它的前导课程是《数据库设计》、《数据结构》、《软件工程实施》,后续课程是课程实训及毕业实习。通过本课程的学习,使学生加深对软件测试基本理论和基本方法的理解与应用,能熟练使用常用软件测试工具,并能运用软件测试工具完成应用软件的测试工作,提高学生对软件的测试与维护能力,并进一步培养学生的的团队协作能力。
1.2 课程设计思路
软件测试是高职计算机软件专业学生在以后的工作岗位上要用到的核心技能。因此,本课程应该作为专业必修课程和核心课程,重点培养学生在以后的工作岗位上所需的职业能力:白盒测试、黑盒测试、自动化功能测试与性能测试。
《软件测试》课程的总体设计思路是,转变传统的学科课程模式,不再以知识传授为主,构建以工作任务为中心的企业培训体系,引入企业项目,让学生在真实的企业项目中完成相应的工作任务,从而储备相关的专业知识,发展职业能力。授课内容重点突出对学生职业能力的培养。课堂上不再单纯地只讲授理论知识,而是围绕实际工作任务的需要来选取,这充分考虑了高职学生动手能力强,理论知识薄弱的特点。
2.教学设计
2.1 教学情境设计
本课程小组通过学院专业指导委员会、重庆亚德科技、重庆大佳、重庆港澳大家等软件公司的企业技术人员进行实际调查,制定了适合高职学生的软件测试课程体系与职业能力,确定了软件测试课程典型的教学情景与子情景,在教学情景中给出具体的工作任务、工作方法以及要求学生掌握的知识与技能等,在教学中贯彻理论实践一体化的教学模式,做到教、学、做三结合,充分体现工学结合的优势,培养学生的职业素质。本课程的5个工作过程及11个典型工作任务如表1所示。
2.2 教材设计
(1)教材应充分考虑软件测试的实践特性,以工作任务为导向,引入必须的软件测试理论知识,让学生在实际测试的过程中,循序渐进地掌握必要的理论知识。
(2)编写的内容要以项目驱动为原则,以企业的实际案例、场景模拟、工作过程录像为载体,增强课后的能力拓展,并根据高职学生的职业能力所需知识的深度和广度来编写,并在具体的工作任务中使学生逐渐形成团队协作意识。
(3)教材应突出软件测试技术的实用性、前瞻性和开放性,不能只是简单地介绍一些技术上的操作,而忽略了软件学生所需的职业能力,在教材中应融入软件测试技术中所用到的新规范、新技术、新标准、新工具、新知识,让学生能系统地掌握软件测试的前沿知识。
(4)教材应充分引领学生主动、积极地去学习,因此,文字表述要简明扼要,内容展现应图文并茂,内容应详略得到。
2.3 教学方法设计
由于本课程的主要教学内容涉及白盒测试、黑盒测试、自动化功能测试与性能测试等操作性很强的教学环节,必须通过课程实训才能达到对项目作规范需求分析的培养目标。具体教学方法设计如下:
(1)全班学生分为N个项目小组,3人一小组,1人任组长,组长要求协调沟通能力比较强。
(2)在教学过程中应加强学生对软件总体的测试能力,采用任务驱动教学,注重以任务引领,提高学生学习兴趣;
(3)组建软件外包中心,引进企业项目,让学生真实地体验在软件公司的测试流程。外包中心作为理论实践一体化教室,达到理论和实际不脱节。
(4)教学过程中可参考软件测试评师考试中规定的知识要求和技能等级职业标准。
(5)教师模拟企业的项目经理,必须具有开拓精神,带领团队完成工作任务,并在完成工作任务的过程中,探索基于工作过程的职业教育新模式,培养学生的软件测试能力,构建软件测试知识体系。
2.4 教学评价设计
(1)突出过程评价,结合课堂提问、实作测试、课后拓展、任务考核等手段,加强实训教学环节的考核,并注重平时考核。
(2)强调目标评价和理论与实践一体化评价,注重引导学生进行学习方式的改变。
(3)每个项目小组在完成课程后,要将所学的内容做ppt,汇报本小组项目完成的情况以及体会。
(4)实行学习过程的过程化考核。平时作业、期中与期末考试均采用上机实训的方式考核,对于不合格者,在团队的协作帮助下持续练习,直至过关。这样可以督促学生不断地练习,真正提高动手能力。
(5)课程的学期成绩=平时作业(10%)+上课考勤(10%)+小组项目测试情况(30%)+小组ppt总结情况(10%)+期末成绩(40%)
3.课程资源的开发与利用
(1)围绕软件测试课程,收集教师和学生必备的软件测试工具,制作适宜教学的多媒体教学课件。
(2)组建软件外包中心,搭建实训工作平台,为学生实训提供真实的工作环境,从而提高其职业素养。
(3)要充分开发网络课程,让学生在课余时间可以自主学习,弥补学生课本知识的不足。
(4)充分利用和开放实训中心,将教学与实训合一,将理论与实践合一,满足学生综合能力培养的要求。
(5)积极利用电子书籍、电子期刊、数字图书馆、校园网、各大网站等网络资源,使教学内容从单一化向多元化转变,通过企业技术人员的指导,课程教师的辅导,使学生知识和能力的拓展成为可能。
4.课程的实施效果
(1)基于项目化的授课内容
建立软件外包中心,引入企业项目内容,软件测试的授课内容紧紧围绕企业项目的典型工作任务开展,学生的能力与素质参照软件测试工程师的岗位要求,让学生真实感受企业环境,就业零距离上岗。
(2)基于过程化的授课方式
老师授课不再单纯地讲解理论,完全按照企业的软件测试流程开展,制定规范的软件测试计划、编写测试用例、利用测试工具测试、编制测试报告,有利于学生养成职业化的学习习惯与工作习惯。
(3)基于理论实践一体化的教学设备
学生在软件外包中心上课以及实验,真正实现了“做中学,学中做”的企业工作环境。
(4)基于能力化的学习评价
学生的评价不再单纯地以理论考试为依据,而是从学生的软件测试专业能力、利用软件测试工具的能力、团队沟通协调能力进行综合地评价。
参考文献
[1]郑泳.基于工作过程系统化的高职《软件测试》课程设计[J].漯河职业技术学院学院,2010(9).
[2]程茂,温静,吴玉洁.《软件测试》课程的教学研究[J].河北师范大学学报,2010(4).
篇13
2、业务能力较强的测试人员转向了软件需求;
3、沟通能力较强专业能力较强的人员转向了软件实施;
为什么不愿意看到呢,自己培养起来的优秀人员都为别的部门、别的公司干活去了,而测试这边永远都是新人,永远都是刚入门的软件测试工程师:开发水平一般、业务能力一般、沟通能力一般。而那些转行的测试同仁们,薪水并没有质的飞跃,到了‘那边’成绩平平,很快就被埋没了。这里当然要排除那些实在对开发、对业务、对实施非常感兴趣想在这些领域有所建树的狂热者们。问题就来了,那些人为什么要‘转业’呢 原因无外乎以下几点:
1、公司的软件测试没有技术含量,没有挑战性;
2、认为在公司能做到测试经理就已经是测试发展的最高境界了;
3、测试人员薪水较其他低;
4、想了解一下测试之外的其他岗位,丰富自己的阅历,为以后更好的做管理做准备。
那么,公司的软件测试真的技术含量很低吗 工作效率已经达到最高了吗 真的不需要挑战吗 测试经理就没有高级和低级之分了吗 测试人员的薪水就不可以比开发人员高了吗 测试人员真的需要那么多吗 当然不是,也许很多年的‘旧路’不能靠自己改变,也许有人埋怨领导者们因循守旧、顽固不化,但没有人会阻挡我们去创新,去阻止我们探索新的模式、新的思路、新的工作方法去改变这种现状,没有公司是傻子,一个人的薪水和他体现出来的价值是成正比的。所以应该打破常规,去探索新的东西,这种创新不仅包括技术创新也包括管理创新。关于职业发展,仅根据公司的实际情况,和从大家那里得来的想法,谈一谈:
1、开发技能较强的软件测试人员可以转向自动化测试工具、测试管理工具的开发,这里不仅要求开发能力较强,还需要多了解第三方测试工具,挖掘测试组内测试人员的需求,了解业务;
2、业务能力较强的可以做测试(用例、计划)设计工程师,由于公司产品业务较强,需求人员仅能为测试人员提供需求文档,而究竟哪些是最重要的测试点,测试过程中采取什么样的测试方法能使得测试路径最短、覆盖率最全,这些都需要抓住软件业务的精髓;
3、做到了测试经理,完全可以把管理再出神入化,每个人身上有什么特点,怎样能让每个组员的能力发挥到极致,怎么更好的争取测试人员的利益,怎样做到最好的资源调配,怎样让大家不再迷茫,另外,怎样提升自己的威信,提升执行力,领导力,怎样把管理做到让人啧啧,到了这种程度,通过横向和纵向对比,优势自然就出来了。
另外,转做开发、需求、实施,然后又转回测试做管理,这种我是比较赞同的,但度不好掌握,而且如果自己的水平实在太高,很可能会让这类人产生英雄无用武之地的想法,公司的平台太低,而自己感觉自己的水平偏高,所以很可能导致这类人的离职,所以个人的发展和公司测试部的发展一定得保持同步,谁都不能过快,步伐不一致的的两个人怎么能走在一条道上呢 所以在个人发展的情况下,关注公司总体测试发展,先认清两者的发展方向再去‘转业’未尝不可。
4、做到测试设计人员、自动化工具、管理工具开发人员就是极致了吗 当然不是,测试行业照样有咨询、有顾问、专家,测试管理做好了也可以去做项目经理、去做部门经理,实在不行,完全可以去创业嘛。
总之,发展无极限,路是自己走出来的,不要只走别人踩出来的路。
软件测试基本介绍:
Grenford J.Myers曾对软件测试的目的提出过以下观点:
(1)测试是为了发现程序中的错误而执行程序的过程;
(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;
(3)成功的测试是发现了至今为止尚未发现的错误的测试。
测试误区
(1)测试并不仅仅是为了找出错误.通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者
发现当前软件开发过程中的缺陷,以便及时改进;
(2)这种分析也有助于测试人员设计出有针对性的测试方法,改善测试的效率和有效性;
(3)没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法