软件测试

臧艳辉

目录

  • 1 走近软件测试
    • 1.1 走近软件测试
    • 1.2 一个软件测试工程师必备的专业技能和素质
    • 1.3 章节测验
  • 2 软件测试技术
    • 2.1 正确认识软件测试
    • 2.2 软件测试遵循的基本原则
    • 2.3 软件测试的分类
    • 2.4 软件测试的过程模型
    • 2.5 章节测验
  • 3 测试中缺陷的识别与描述
    • 3.1 初识软件缺陷
    • 3.2 全面解析软件缺陷
    • 3.3 有效的记录缺陷
    • 3.4 缺陷报告实例
    • 3.5 缺陷报告模板
  • 4 项目测试计划的制定
    • 4.1 一个项目完整的测试流程
    • 4.2 初识测试计划
    • 4.3 测试计划的基本机构和内容
    • 4.4 测试计划模板和案例
  • 5 初识软件测试用例
    • 5.1 什么是测试用例
    • 5.2 项目测试中设计测试用例的作用
    • 5.3 如何设计一个项目的测试用例
    • 5.4 在测试过程中测试用例怎样进行更新和维护
  • 6 使用等价类划分方法设计测试用例
    • 6.1 等价类划分法的基本思想
    • 6.2 进行等价类划分法的原则
    • 6.3 使用等价类划分法设计测试用例实例
  • 7 使用边界值分析法设计测试用例
    • 7.1 边界值分析法的基本思想
    • 7.2 如何确定边界
    • 7.3 测试知识储备
    • 7.4 使用边界值分析法设计测试用例实例
    • 7.5 项目中如何进行健壮性边界值测试
    • 7.6 等价类+边界值
    • 7.7 章节测试
  • 8 使用大纲法设计测试用例
    • 8.1 什么是大纲法
    • 8.2 项目中如何使用大纲法设计测试用例
  • 9 使用场景法设计测试用例
    • 9.1 什么是场景法
    • 9.2 项目中如何使用场景法设计测试用例
  • 10 因果图和决策表结合设计测试用例
    • 10.1 因果图法的介绍
    • 10.2 决策表的介绍
    • 10.3 项目中选用因果图法和决策表设计测试用例需考虑的问题
    • 10.4 使用因果图法和决策表设计测试用例
  • 11 功能测试
    • 11.1 什么是功能测试
    • 11.2 功能测试的主要内容及测试策略
    • 11.3 功能测试的方法汇总
    • 11.4 功能测试的经验及注意事项
  • 12 界面测试
    • 12.1 界面检查的通用原则
    • 12.2 具体的界面检查的举例
    • 12.3 设计界面测试用例
    • 12.4 界面测试标准总结
  • 13 软件的安装卸载测试
    • 13.1 软件的安装卸载测试
    • 13.2 软件的安装测试
    • 13.3 软件的运行测试
    • 13.4 软件的卸载的测试
  • 14 项目中如何使用进行有效的缺陷管理
    • 14.1 进行缺陷管理的目标是什么
    • 14.2 项目中缺陷管理的流程是怎样的
    • 14.3 缺陷的跟踪方法有哪些
  • 15 测试报告该如何撰写
    • 15.1 软件质量评估
    • 15.2 如何撰写测试报告
    • 15.3 如何写项目总结
    • 15.4 如何写个人测试总结
  • 16 集成测试
    • 16.1 初识集成测试
    • 16.2 集成测试方法
  • 17 白盒测试
    • 17.1 初识白盒测试
    • 17.2 白盒测试技术——逻辑驱动测试
    • 17.3 白盒测试技术——循环覆盖测试
    • 17.4 白盒测试技术——基本路径测
  • 18 软件测试技术及岗位需求介绍
    • 18.1 软件测试岗位需求
    • 18.2 软件测试技术介绍
    • 18.3 软件测试比赛内容
    • 18.4 软件测试岗位应聘简历撰写
一个软件测试工程师必备的专业技能和素质
  • 1 电子教材
  • 2 PPT
  • 3 实训任务


1.2  一个软件测试工程师必备的专业技能和素质


人力资源是各项工作中最有价值也是最重要的资源之一,测试工作也一样,没有一个合格的、积极的测试小组,测试就不可能实现。然而,现在在国内很多公司有一个普遍的现象,就是让那些经验较少的新手去做测试工作。没有人愿意做测试,公司觉得培养测试人员是一件高成本低回报的事情。这绝对是一种目光短浅的行为,因为软件测试既是软件提交的出口,又是客户意见反馈的入口。优秀的测试人员是很难得的,对一个系统进行有效的测试所需要的技能绝对不比进行软件开发所需要的少。事实上,测试者将获得极其广泛的经验,他们将遇到许多开发者不可能遇到的问题。


随着软件测试的发展,要想成为一个优秀的测试人员,必须具备一些专业技能和素质已成为毋庸置疑的事实。


1.2.1  软件测试工程师的职业技能一:计算机专业技能


计算机领域的专业技能是测试工程师应该必备的一项素质,是做好测试工作的前提条件。尽管没有任何IT背景的人也可以从事测试工作,但是一名要想获得更大发展空间或者持久竞争力的测试工程师,则计算机专业技能是必不可少的。计算机专业技能主要包含三个方面:


1. 测试专业技能


测试专业知识很多,本书内容主要以测试人员应该掌握的基础专业技能为主。测试专业技能涉及的范围很广:既包括黑盒测试、白盒测试、测试用例设计等基础测试技术,也包括单元测试、集成测试、系统测试、性能测试等测试方法,还包括基础的测试流程管理、缺陷管理、自动化测试技术及LoadRunnerQTPQC工具使用等知识。


2. 软件编程技能


软件编程技能实际应该是测试人员的必备技能之一,在微软,很多测试人员都拥有多年的开发经验。因此,测试人员要想得到较好的职业发展,必须能够编写程序。只有能编写程序,才可以胜任诸如单元测试、集成测试、性能测试等难度较大的测试工作。


此外,对软件测试人员的编程技能要求也有别于开发人员,测试人员编写的程序应着眼于运行正确,同时兼顾高效率,尤其体现在与性能测试相关的测试代码编写上,因此测试人员要具备一定的算法设计能力。依据资深测试工程师的经验,测试工程师至少应该掌握JavaC#C++之类的一门语言以及相应的开发工具。


3. 网络、操作系统、数据库、中间件等知识


与开发人员相比,测试人员掌握的知识具有“博而不精”的特点,“艺多不压身”是个非常形象的比喻。由于测试中经常需要配置、调试各种测试环境,而且在性能测试中还要对各种系统平台进行分析与调优,因此测试人员需要掌握更多网络、操作系统、数据库等知识。


在网络方面,测试人员应该掌握基本的网络协议以及网络工作原理,尤其要掌握一些网络环境的配置,这些都是测试工作中经常用到的知识。


操作系统和中间件方面,应该掌握基本的使用以及安装、配置等。例如很多应用系统都是基于Unixlinux来运行的,这就要求测试人员掌握基本的操作命令以及相关的工具软件。而TomcatJbossWebLogicWebsphere等中间件的安装、配置很多时候也需要掌握一些。


数据库知识则是更应该掌握技能,现在的应用系统几乎离不开数据库。因此不但要掌握基本的安装、配置,还要掌握SQL语句。测试人员至少应该掌握MysqlSQL ServerOracleSybaseDB2等常见数据库的使用。


1.2.2  软件测试工程师的职业技能二:行业知识


行业主要指测试人员所在企业涉及的行业领域,例如很多IT企业从事电信、银行、电子政务、电子商务等行业领域的产品开发。行业知识即业务知识,是测试人员做好测试工作的又一个前提条件,只有深入地了解了产品的业务流程,才可以判断出开发人员实现的产品功能是否正确。


很多时候,软件运行起来没有异常,但是功能不一定正确,只有掌握了相关的行业知识,才可以判断出用户的业务需求是否得到了实现。


行业知识与工作经验有一定关系,一般通过时间即可以完成积累。


1.2.3  软件测试工程师的职业技能三:个人素养


作为一名优秀的测试工程师,首先要对测试工作有兴趣,测试工作很多时候都是显得有些枯燥的,因此热爱测试工作,才更容易做好测试工作。因此,除了具有前面的专业技能和行业知识外,测试人员应该具有一些基本的个人素养。


1. 五心


1)专心:主要指测试人员在执行测试任务的时候要专心,不可一心二用。经验表明,高度集中精神不但能够提高效率,还能发现更多的软件缺陷,业绩最棒的往往是团队中做事精力最集中的人员。


2)细心:主要指执行测试工作时要细心,认真执行测试,不可以忽略一些细节。某些缺陷如果不细心很难发现,例如一些界面的样式、文字等。


3)耐心:很多测试工作有时候显得非常枯燥,需要很大的耐心才可以做好。如果比较浮躁,就不会做到“专心”和“细心”,这将让很多软件缺陷从你眼前逃过。


4)责任心:责任心是做好工作必备的素质之一,测试工程师更应该将其发扬光大。如果测试中没有尽到责任,甚至敷衍了事,这将会把测试工作交给用户来完成,很可能引起非常严重的后果。


5)自信心:自信心是现在多数测试工程师都缺少的一项素质,尤其在面对需要编写测试代码等工作的时候,往往认为自己做不到。要想获得更好的职业发展,测试工程师们应该努力学习,建立能“解决一切测试问题”的信心。


2. 沟通能力


测试是连接开发和客户的接口,因此理想的测试人员需要能够与涉及测试的所有人进行很好的沟通,包括技术人员(开发者)和非技术人员(客户、管理人员)。这两类人的出发点和角度是不同的,开发人员是从程序实现的角度来衡量和沟通,而用户则是从系统的实际使用上来提出问题和需求,他们关心的是系统是否符合自己的要求。因此测试人员就成为一个桥梁,要对每一方都具有足够的理解,把两种信息从不同的角度和不同的方式表达出来,使二者之间的信息得到良好的沟通,将矛盾和冲突降到最低。


3. 团队合作精神


现代企业的运作尤其重视团队合作精神。团队精神强调通过沟通、交流、协调、协作、互补、合作等,来发挥团队整体的最大功效,从而更好地实现整体的既定目标另外,测试和开发从一定意义上讲一个是破坏性的,一个是建设性的,二者之间本身就有很大的冲突,需要很好地协调。因此就需要所有成员富有团队合作精神,相互合作,从而达到预定的目标。


4. 时时保持怀疑态度,并且有缺陷预防的意识


测试人员的职责就是尽量多地从开发人员的程序中找出问题。因为有些开发人员总是找一些有利于自己程序执行的数据,甚至有些开发人员认为不利于程序执行的数据是对代码的玷污和亵渎。而软件测试却需要策略性地准备各种数据,不去想当然地假定任何一个数据是可行的,这样才能不断地发现问题,解决问题。


另外,测试人员要有缺陷预防的意识。也就是说,要分析出产生缺陷的原因,从而避免它们的再次发生。有些缺陷可能发生在当前测试项目的早期阶段,也可能发生在其他测试项目中,所以缺陷预防是不同项目间互相吸取教训的有效手段。要根据各个项目的实际情况,来分析确定缺陷发生的根本原因,来认清缺陷发生之前所具有的征兆,从而避免其产生。


小结


Ø  软件及软件的分类


Ø  软件测试产生的背景


Ø  软件测试的概念及意思


Ø  软件测试的目的


Ø  软件测试的现状和发展前景


Ø  一个软件测试工程师必备的专业技能和素质