对软件测试的认识

软件测试,它是软件工程的一部分,它随着软件开发应运而生,并随着软件开发的产业化而受到重视。但是,由于目前软件测试体系还不是很完善,测试的地位还远没有提升到一个很重要的地位,所以大多数人对软件测试的认识仍然存在着很多的误解。

 

1.      什么是软件测试

 软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。

 

测试的目的不仅仅是发现错误,可以归结为3条:

1.证明我们所做的是客户所需的。

2.确保编码人员理解设计的意图

3.通过回归测试保证目前运行的程序将来仍然可以正常工作。

  避免检查自己的代码,一定要在计划中把测试过程包括在内。

  错误集中的主要原因有两个

1.错误前置逻辑。BCD代码依赖于A代码;A代码本来是错的,但是开始并没有发现,BCD运行良好;A代码修正错误后,BCD代码全部报错。

2.实现人员的疲劳。一周工作40小时是必要的。

  BUG是分等级的,BUG之间可能相互关联。可测试性与可靠性相关联。如果某些被测试点很难建立测试环境,那么这些点的可靠性就会降低。可测性越高,可靠性越高。有的功能可能很难建立测试环境,例如某软件有说明:“本软件会在火星撞地球后失常”,这个就很难测试。

 

  测试人员应该具有的10项职业素质

  1.沟通能力。测试人员可以说是客户和开发人员的媒介。

  2.有能力建立共同价值观。用户担心将来得到一个不符合自己要求的系统;开发者担心系统要求不正确而重新开发;公司则担心这个系统得不到用户的认可。测试人员要与各种人建立共同价值观。

  3.技术能力。要有几年的编程经验。了解测试概念,熟悉重要的工具。

  4.自信。必须对自己的观点有足够的自信。

  5.交流。要注意说话的方式。

  6.记忆。熟悉各种错误。对bug很敏感。

  7.耐心。这个工作需要耐心。

  8.怀疑。要怀疑开发人员对自己软件的吹嘘。

  9.自我激励。

  10.洞察力。

2.      软件测试的基础

 

自动化测试

  引入:为了确保复杂的企业级应用在不同环境下都能可靠地运行,需要一个能简单操作的测试工具来西东完成应用程序的功能性测试;在终端用户正式使用前,对应用系统各个环节的质量、可靠性和可扩展性进行测试和评价,需要适用于不同体系架构的自动负载压力测试工具,以预测系统行为并未系统优化提供依据

  定义:通过测试工具或者其他手段,按照测试工程师的预定计划对软件产品进行自动的测试。软件测试自动化设计到测试流程、测试体系、自动化编译以及自动化测试等方面的整合。也就是说,要让测试能够自动化,不仅是技术、工具的问题,更是一个公司和组织的文化问题。

  自动化测试工具分类

  自动化测试工具能够减少测试工作量,提高测试工作效率,但首先是能够选择一个合适的且满足企业信息系统工程环境的自动化测试工具,因为不同的测试工具,其面向的测试对象是不一样的。按照测试工具的主要用途和应用领域,可以将自动化测试工具氛分为以下几类:

  1、负载压力测试工具(LoadRunnerQALoadSILK Performa VE-Test Suite)

  2、功能测试工具(WinRunnerQARun)

  3、白盒测试工具(LogiscopePRQA(静态)DEvPartnerRational Purify)

  4、网络测试工具

  5、测试管理工具(Track RecordTestDirectorTestManager)

  6、测试辅助工具

  白盒测试

  白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作

  黑盒测试

  也称功能测试,黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。主要试图发现下列几类错误:

  功能不正确或遗漏;界面错误;数据库访问错误;性能错误;初始化和终止错误等

  从理论上讲,黑盒测试只有采用穷举输入测试,把所有可能的输入都作为测试情况考虑,才能查出程序中所有的错误。所以我们需要进行有针对性的测试,通过制定测试方案指导测试的实施,保证软件测试有组织、按步骤,以及有计划地进行。黑盒测试行为必须能够加以量化,才能饿真正保证软件质量,而测试用例就是将测试行为具体量化的方法之一。具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法等

3.      软件测试的重要性

 

在软件业较发达的国家。软件测试不仅成为软件开发的一个有机组成部分,而且在软件开发的系统工程中占据着相当大的比重。以美国的软件开发和生产的平均资金投入为例,通常是:“需求分析”和“规划确定”各占百分之三,“设计”占百分之五,设计占百分之五,编程占百分之七,测试占百分之十五,投产和维护占百分之六七十。测试在。软件开发中的地位不言而喻。

     软件测试工程师和软件卡发工程师就像两兄弟,缺一不可,国内开发工程师招聘还是比较容易的,但在做一些大型项目时需要大量软件测试人员,因为目前高校里没有专业的专业,只能招聘后在进行培训,这就大大增加了企业的成本,所以企业还是希望有一批专业培训的人员能直接上岗。

     软件测试是一个系列过程活动,贯穿于软件项目的整个生命过程,很多软件项目的开发还停留在“作坊式”阶段,项目的成功往往靠个别程序员决定。但随着市场对软件质量的的要求不断提高,软件测试将变得越来越重要,相应的软件测试工程师的地位和待遇将处于“双高”地位,而且做开发并不能做好测试,因为他们不懂得测试的理念而且不具备测试的经验。

    目前国内软件测试人才缺口高达20万,已成为我国软件产业发展的瓶颈之一。“软件测试人才需求量的加大,是由于近年来我国软件行业的产业升级所决定的。由于我国的软件行业目前突破了作坊时代,由以前软件开发的单打独斗升级为工业化、流水线式的生产模式,作为工业化的产品,软件测试也就成为软件开发企业必不可少的质量监控部门,而目前我国的软件测试人才的培养数量较产业升级相对滞后,这就形成了软测人才的供给远小于需求现状。

4.      对软件测试认识的误区

 

  误区之一:软件开发完成后进行软件测试

      人们一般认为,软件项目要经过以下几个阶段:需求分析,概要设计,详细设计,软件编码,软件测试,软件发布。据此,认为软件测试只是软件编码后的一个过程。这是不了解软件测试周期的错误认识。

     软件测试是一个系列过程活动,包括软件测试需求分析,测试计划设计,测试用例设计,执行测试。因此,软件测试贯穿于软件项目的整个生命过程。在软件项目的每一个阶段都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。软件测试的对象不仅仅是软件代码,还包括软件需求文档和设计文档。软件开发与软件测试应该是交互进行的,例如,单元编码需要单元测试,模块组合阶段需要集成测试。如果等到软件编码结束后才进行测试,那么,测试的时间将会很短,测试的覆盖面将很不全面,测试的效果也将大打折扣。更严重的是如果此时发现了软件需求阶段或概要设计阶段的错误,如果要修复该类错误,将会耗费大量的时间和人力。

 

     误区之二:软件发布后如果发现质量问题,那是软件测试人员的错

      这种认识很打击软件测试人员的积极性。软件中的错误可能来自软件项目中的各个过程,软件测试只能确认软件存在错误,不能保证软件没有错误,因为从根本上讲,软件测试不可能发现全部的错误。从软件开发的角度看,软件的高质量不是软件测试人员测出来的,是靠软件生命周期的各个过程中设计出来的。出现软件错误,不能简单地归结为某一个人的责任,有些错误的产生可能不是技术原因,可能来自于混乱的项目管理。应该分析软件项目的各个过程,从过程改进方面寻找产生错误的原因和改进的措施。

 

     误区之三:软件测试要求不高,随便找个人多都行

      很多人都认为软件测试就是安装和运行程序,点点鼠标,按按键盘的工作。这是由于不了解软件测试的具体技术和方法造成的。随之软件工程学的发展和软件项目管理经验的提高,软件测试已经形成了一个独立的技术学科,演变成一个具有巨大市场需求的行业。软件测试技术不断更新和完善,新工具,新流程,新测试设计方法都在不断更新,需要掌握和学习很多测试知识。所以,具有编程经验的程序员不一定是一名优秀的测试工程师。软件测试包括测试技术和管理两个方面,完全掌握这两个方面的内容,需要很多测试实践经验和不断学习精神。

 

     误区之四:软件测试是测试人员的事情,与程序员无关

      开发和测试是相辅相成的过程,需要软件测试人员、程序员和系统分析师等保持密切的联系,需要更多的交流和协调,以便提高测试效率。另外,对于单元测试主要应该由程序员完成,必要时测试人员可以帮助设计测试样例。对于测试中发现的软件错误,很多需要程序员通过修改编码才能修复。程序员可以通过有目的的分析软件错误的类型、数量,找出产生错误的位置和原因,以便在今后的编程中避免同样的错误,积累编程经验,提高编程能力。

 

     误区之五:项目进度吃紧时少做些测试,时间富裕时多做测试

     这是不重视软件测试的表现,也是软件项目过程管理混乱的表现,必然会降低软件测试的质量。一个软件项目的顺利实现需要有合理的项目进度计划,其中包括合理的测试计划,对项目实施过程中的任何问题,都要有风险分析和相应的对策,不要因为开发进度的延期而简单的缩短测试时间、人力和资源。因为缩短测试时间带来的测试不完整,对项目质量的下降引起的潜在风险,往往造成更大的浪费。克服这种现象的最好办法是加强软件过程的计划和控制,包括软件测试计划、测试设计、测试执行、测试度量和测试控制。

 

     误区之六:软件测试是没有前途的工作,只有程序员才是软件高手

      由于我国软件整体开发能力比较低,软件过程很不规范,很多软件项目的开发都还停留在“作坊式”和“垒鸡窝”阶段。项目的成功往往靠个别全能程序员决定,他们负责总体设计和程序详细设计,认为软件开发就是编写代码,给人的印象往往是程序员是真正的牛人,具有很高的地位和待遇。因此,在这种环境下,软件测试很不受重视,软件测试人员的地位和待遇自然就很低了,甚至软件测试变得可有可无。随着市场对软件质量的不断提高,软件测试将变得越来越重要,相应的软件测试人员的地位和待遇将会逐渐提高。在微软等软件过程比较规范的大公司,软件测试人员的数量和待遇与程序员没有多大差别,优秀测试人员的待遇甚至比程序员还要高。软件测试将会成为一个具有很大发展前景的行业,软件测试大有前途,市场需要更多具有丰富测试技术和管理经验的测试人员,他们同样是软件专家。

博主设置当前文章不允许评论。

没有更多推荐了,返回首页