收藏 分享(赏)

软件测试工程师培训教程.pdf

上传人:HR专家 文档编号:6315015 上传时间:2019-04-06 格式:PDF 页数:154 大小:5.12MB
下载 相关 举报
软件测试工程师培训教程.pdf_第1页
第1页 / 共154页
软件测试工程师培训教程.pdf_第2页
第2页 / 共154页
软件测试工程师培训教程.pdf_第3页
第3页 / 共154页
软件测试工程师培训教程.pdf_第4页
第4页 / 共154页
软件测试工程师培训教程.pdf_第5页
第5页 / 共154页
点击查看更多>>
资源描述

1、 软件测试系列丛书 软件测试工程师 新科海学校 刘德宝 编著 中科院新科海学校 二八年 1 内容简介 本书从软件测试基础理论、测试管理及 BUG 管理工具、Web 测试环境搭建及 数据库知识学习、自动化测试工具等几个方面,结合软件行业的实际情况进行了 分析和讲解。本书共分为9章,整体结构清晰,内容丰富,讲述由浅入深,层层 递进。理论与实践相结合。对于希望从事软件测试行业的读者是一本很好的参考 书,而且也可以作为对软件测试工作感兴趣的读者的自学用书。 版权专有 侵权必究 (内部讲义) 出版发行 / 中科院新科海学校 地 址 /北京市海淀区苏州街18号长远天地大厦A2座10层 邮 编 / 1000

2、80 电 话 / 01082622282,82622285 网 址 / http:/ 经 销 / 印 刷 / 开 本 / 787毫米1092毫米 1/16 印 张 / 字 数 /千字 版 次 / 2008 年 月第 版 2008 年 月 第 次印刷 定 价 / 50 元 1 序 言 在发达国家,软件测试是一项很受重视的工作。因此,软件测试的专业化水 平非常高。很多从事软件测试工作的人,在工作几年后都会成为非常抢手的人才。 一些测试人员因经历过一些产品的整个开发过程, 并且具备领导测试团队的能力, 因而在软件企业中的地位也显得特别突出。 随着国内软件应用与开发的飞速发展,软件用户对软件质量的要求

3、也在不断 的提高。如何提高软件运行的可靠性,改进软件过程,进而提高软件产品的质量, 已经成为许多研发机构和软件企业迫切关心的问题。软件测试作为保证软件质量 的重要手段,越来越受到人们的关注与重视。许多大中型软件企业都建立了专门 的软件质量保证体系,组建了自己的测试团队。然而,由于软件测试工作本身的 专业特点和软件测试市场需求的迅速升温, 导致了软件测试行业专业人员的短缺。 给软件企业产品的质量保证工作推进造成了很大的影响。 与同类教材相比,本教材具有一个显著的特点,就是注重经验与实践。编写 本教材的时候,咨询了很多公司的测试管理者与项目管理者。因此,在了解一名 软件测试人员在实际工作中所必需了

4、解掌握的知识和技能后,编写了本教材。读 者在阅读本书后,会对软件测试在整个软件产品开发中的实施过程有很清晰的了 解。对软件测试在产品开发过程的各个阶段中的工作内容以及工作重点有一个明 确的认识,并了解不同行业软件产品的特点以及测试方法。 在本书编写过程中,孙亚刚、刘伟、张利国、刘向东等老师为本书的大纲制 定和内容编写提供了很多宝贵意见和建议,对他们的大力支持表示感谢。 本书中可能存在一些疏漏,希望给予指正,如果我们对本书有任何意见和建 议,请 Email至 或登录我们的网站, 我们将努力为您提供更完善的服务和支持。 作者 2008 年 8 月 1 目 录 第 1 章 软件测试理论基础. 1 1

5、.1行业背景 . 1 1.2软件测试概述 4 1.2.1软件测试由来 4 1.2.2软件测试定义 5 1.2.3软件测试基本分类 7 1.2.4软件测试人员职业要求. 10 1.3 软件测试流程 . 14 1.3.1需求测试 . 14 1.3.2单元测试 . 16 1.3.3集成测试. 16 1.3.4系统测试. 17 1.3.5性能测试. 17 1.3.6用户测试. 18 1.3.7回归测试. 18 1.4软件项目运作流程 19 1.4.1市场调研. 19 1.4.2可行性研究 . 20 1.4.3产品立项. 21 1.4.4需求调研. 21 1.4.5设计开发. 22 1.4.6系统测试.

6、 22 1.4.7产品发布. 22 1.4.8产品维护. 22 1.4.9产品升级. 22 1.5软件测试工作流程 23 1.5.1测试部门组织结构 23 1.5.2测试工作流程 26 第 2 章 Windows Server 2003服务配置 . 32 2.1 Windows Server 2003安装. 32 2.1.1虚拟机安装 . 34 2.1.2 Windows Server 2003安装 34 目 录 2 2.2 Windows Server 2003部署IIS服务. 43 2.2.1安装IIS服务 44 2.2.2部署应用程序 48 2.2.3调试运行IIS服务. 57 第 3

7、章 BUG管理及测试管理工具 . 62 3.1 Bug管理流程及工具介绍. 62 3.2 Bugzilla工具安装配置 . 64 3.2.1 Bugzilla安装配置 64 3.2.2 Bugzilla使用 88 3.3测试件管理 . 88 3.4 TestDirector安装配置及使用 . 88 3.4.1 TestDirector介绍 89 3.4.2 TestDirector安装 94 3.4.3 TestDirector后台管理 119 3.4.4 TestDirector项目定制 136 3.4.5 TestDirector前台使用 149 3.4.6 TestDirector移植

8、191 3.4.7 使用技巧 196 3.4.8 TestDirector总结 197 第 4 章 测试文档编写及Web测试环境搭建 199 4.1测试文档编写 199 4.1.1测试计划. 199 4.1.2测试方案. 200 4.1.3 测试用例 201 4.1.4测试报告. 208 4.2功能测试方法 210 4.2.1静态UI测试 . 211 4.2.2动态功能测试 213 4.2.3 Bug寻找经验之谈 . 214 4.3 Web测试环境搭建 . 220 4.3.1 Tomcat+JDK测试环境搭建 221 4.3.2 Jboss+JDK 测试环境搭建. 237 第 5 章 Linu

9、x操作系统 243 5.1 Linux起源、特性及应用领域 243 5.2主流Linux操作系统发行版简介. 244 5.3 FC5安装 . 245 5.3.1创建FC5虚拟机 245 目 录 3 5.3.2 FC5安装 . 247 5.3.3 FC5配置 . 259 5.4 Fedora Core5基本命令使用 266 5.4.1 SSH Secure Shell Client工具 267 5.4.2 Fedora Core5命令使用 275 5.5 Linux部署Tomcat+JDK测试环境 . 297 5.5.1 JDK安装配置 297 5.5.2 TOMCAT安装 301 第 6 章

10、配置管理及WinCVS工具使用 305 6.1配置管理理论 305 6.1.1软件配置管理定义 305 6.1.2软件配置管理目的 305 6.1.3软件配置管理发展历史. 305 6.1.4软件配置管理角色职责. 306 6.1.5软件配置管理流程 307 6.2配置管理工具 310 6.2.1 CVS服务器安装 310 6.2.2 WinCVS工具使用 312 6.4配置管理应用 323 6.4.1版本管理. 324 6.4.2变更控制. 325 第 7 章 数据库(SQL Server、Oracle) 328 7.1 SQL Server 2000使用 328 7.1.1 SQL Ser

11、ver介绍. 328 7.1.2服务器管理 . 330 7.1.3 Transact-SQL语言 . 337 7.1.4数据库管理 . 347 7.2 SQL Server 学习总结 368 7.3 Oracle9i使用 368 7.3.1 Oracle9i简介 . 368 7.3.2 Oracle安装 369 7.3.3 Oracle服务启动与关闭 379 7.3.4表空间管理 . 379 7.3.5用户管理. 388 7.3.6表创建、修改与删除 392 7.3.7视图创建、修改与删除. 399 7.4 Oralce学习总结 . 399 目 录 4 第 8 章 QTP自动化功能测试工具 4

12、01 8.1自动化功能测试简介. 401 8.2 QTP安装 . 402 8.2.1 QuickTest Professional简述 . 402 8.2.2 QuickTest Professional界面介绍 405 8.2.3 QuickTest Professional是如何工作的?. 406 8.2.4 QTP安装 . 407 8.3 QTP使用 . 418 8.3.1 QTP教程 . 419 8.3.2 QTP测试B/S系统实例 . 419 8.3.3 QTP测试C/S系统实例 . 429 8.3.4 QTP描述性编程 431 8.3.5 QTP其他知识 434 8.4 QTP学习

13、总结 437 第 9 章 LoadRunner自动化性能测试工具 439 9.1 LoadRunner概要介绍 439 9.2性能测试理论基础 440 9.2.1系统用户. 440 9.2.2并发用户数 . 440 9.2.3在线用户. 441 9.2.4 PV页面浏览量 441 9.2.5响应时间. 441 9.2.6请求数与点击数 441 9.2.7吞吐量 442 9.2.8系统资源耗用 . 442 9.2.9性能测试. 442 9.2.10压力测试. 442 9.2.11负载测试 . 443 9.2.12容量测试. 443 9.3 LoadRunner安装与了解. 443 9.3.1安装

14、LoadRunner 443 9.3.2了解LoadRunner 453 9.4 规划测试 456 9.4.1测试需求分析 . 456 9.4.2建模与抽取性能指标 457 9.5 Vuser脚本设计 461 9.5.1准备工作. 461 目 录 5 9.5.2录制脚本. 464 9.5.3分析脚本. 474 9.5.4增强脚本. 476 9.5.5运行脚本. 500 9.6 场景设计执行. 503 9.6.1场景设计. 503 9.6.2场景执行. 519 9.7 利用Analysis结果分析 536 9.7.1结果概要. 536 9.7.2并发用户数 . 540 9.7.3事务响应时间 .

15、 540 9.7.4点击率 542 9.7.5页面分解. 542 9.7.6系统资源. 543 9.8 LoadRunner学习总结 545 附录一 软件测试常用英语词汇. 548 附录二 版本说明书模板 552 附录三 性能测试报告实例 553 1 第 1 章 软件测试理论基础 本章要点 本章简单介绍软件测试的一些基础知识, 如软件测试的基本概念、 工作流程等, 同时也介绍了一般软件项目的运作流程与测试工作流程, 使读者对软件测试有一个 初步的了解,并掌握一定的软件测试理论知识,对公司中如何开展测试工作有个总 体的印象。 1.1行业背景 近年来,计算机技术不断的发展与广泛的应用,给整个社会带

16、来翻天覆地的变 化。各种各样的计算机技术出现我们身边,坐公交刷卡,买衣服上淘宝,买书也可 在当当网上买,这些计算机技术给我们带来的便利与我们的衣食住行相关,而对于 国家国防来说,卫星导航,火箭发射等等一系列重要的工作,也都离不开计算机的 支撑。计算机是由硬件与软件组成的。硬件,就像我们的基础设置,是由专门的厂 商去设置制造,而软件也是由专业的人员去开发测试。 时代的发展,使得计算机的应用环境越来越复杂,从而提高了对硬件、软件的 质量要求。从软件行业来讲,如何提高软件的质量,一直是当今软件生产活动中的 热门话题。软件测试工作对于寻找软件系统中存在的缺陷、保证软件产品的质量, 降低企业的生产成本,

17、提高经济效益都具有不可替代的作用。同时,软件测试工作 的实施又是一个非常复杂的过程,需要考虑人员、技术、管理、工具等众多因素, 这些因素在软件生产活动中起着极其重要的作用,软件测试人员不仅仅要知道“做 什么”,还要知道“为什么这么做”,以及“如何做”。随着软件业的发展,对于 优秀的测试员的需求也越来越多。国内软件行业的不断发展,国外的外包项目,甚 至于本土项目都转移到中国来开发测试。 龙象之争一书提出了中国软件与印度 软件的关系,国外很多的公司在考虑将公司的主要业务转移到中国来,中国越来越 趋向世界工厂,中国的劳动力成本与他们本国的成本相对来说要少了很多,这样的 趋势就带来巨大的就业缺口。最新

18、中国软件产业发展环境调查报告预测,未来 5 年, 中国的软件市场销售规模将保持 19.4%的复合增长率。 不断发展的软件市场, 带来了很多的就业机会,在未来的一段相当长的时间内,软件测试工程师作为软件 生产活动中必不可少的角色,需求量将会非常大。 目前我国软件测试人才严重匮乏, 当前 120万软件从业者中具备软件测试专业第 1章 软件测试理论基础 2 技术的人员不超过 5 万,人才缺口达到 30万。 “在国内很多软件企业中,软件开发 和测试人员数量之比仅能达到 8: 1, ”清华大学计算机教育专家谭浩强教授介绍说, “而与此同时,国际先进软件企业的同类数据却在 1:1 到 1:2 之间,差距十

19、分明 显。”造成这一结果的主要原因是国内软件测试人才教育相对滞后。据统计,目前 我国开设计算机类专业的高校已超过 1000所,而其中设立“软件测试”细分专业 的高校几乎没有,绝大多数计算机专业的学生对软件测试都不了解。软件测试的发 展陷入人才饥荒的困境。 根据前程无忧()数据显示,2008 年 3 月全国 IT 行业总的需 求量达到了 12万以上,与 2 月相比增加了近 2 万个职位,占据 IT行业有效职位数 城市榜单前五位的依次是:上海、北京、深圳、广州、杭州等。在企业类型方面, 除去其他类型企业,以民营/私营/非上市公司的需求量最大,其次为外商独资(欧 美企业)。而纵观 07年到现今,各大

20、招聘网站如前程无忧、中华英才,每月的职 位排行榜中,IT类的职位几乎月月折桂,软件测试工程师的需求量在 IT类职位中 又占据相当大的比例。种种现象、数据显示,软件测试工程师已经成为选择职业时 不可不考虑一门职业了。 在市场需求量不断增大的环境下,软件测试工程师的待遇也在不断提高。据不 完全统计,北京地区的薪资趋势大致如图 1-1所示: 图 1- 1薪资趋势图 测试工程师的薪资高低主要受工作经验、技术能力以及外语因素所制约,而与 学历、年龄无关。一般的软件测试工程师,在无多少工作经验,技术能力与外语水 平一般的情况下,基本能拿到 2000 到 3000左右的待遇,随着工作年限的推移以及 技术能力

21、的提升,待遇会逐步提升。时间越久,技术能力越深厚的软件测试人员, 待遇将与软件开发人员持平,甚至于高过开发人员。所以说,选择软件测试和其他 职业一样,都能达到自身的职业要求,甚至于优于其他职业,只要坚持,相信自己 的选择,同样可以达到自己心中所期望的高度。 从自身的职业发展来看,软件测试工程师一般有以下几个方向可走: 目 录 3 图 1- 2职业发展规划图 如图 1-2所示,有些软件测试工程师在工作几年后,会从技术路线来规划设计 自己的职业发展,也可能选择管理路线,甚至于转向软件开发,这些都是可以的, 最重要的是要看自己适应哪种角色,能否坚持。 一个理想的测试人员是应该有开发经验的,至少要有开

22、发的概念。仅仅发现 Bug 是测试的初步,而分析出 Bug 的根本原因,却要有很深的功底。有了开发经 历的测试人员工作起来就会更加得心应手,能够容易定位问题、发现潜在的缺陷。 软件测试活动中本身就有测试工具的开发以及自动测试的开发, 这些脚本的编写比 写一个商品化应用系统简单不了多少。而测试人员是开发人员中精通业务的佼佼 者, 再加上良好的测试观念和开发概念, 这些都是一个合格的开发人员应该具备的, 从软件测试转为开发,也是一个非常不错的选择。一般企业需要什么样的软件测试 人才呢?他们对软件测试人员的技术技能有哪些要求呢? 一般地公司在招聘时都会提出以下几点要求: 一年以上测试经验; 计算机相

23、关专业大专以上学历; 了解软件工程,熟悉软件测试过程和标准、熟悉配置管理技术和工具; 能够编制测试计划、设计测试用例、编写 Bug报告和测试总结报告、使用测 试工具、开发测试脚本; 熟练使用 Windows 或 Unix 或 Linux操作系统; 熟悉 C、C+、Java、VB、Delphi、C#中的一种以上; 熟练使用 SQL Server 或 Oracle数据库; 了解业务领域(ERP、OA、电子商务、税务系统、电信计费系统.)优先; 熟练掌握至少一种以上的测试工具, 如 TestDirector、 QTP、 LoadRunner、 Robot 等; 进取、合作、表达、沟通、责任心、耐心、

24、认真程度。 在这些招聘要求中,我们试着对照一下,自己具备哪些能力呢? 由于新劳工合同法对员工的福利待遇提出了更高的要求, 这点使得大多数公司 在选择人才的时候更为慎重。企业希望招聘进来的员工能在短时间内适应工作环第 1章 软件测试理论基础 4 境,并投入到工作中去。由于现在职业培训的成本在增加,企业很少愿意对新进的 员工进行培训,于是便提高应聘要求,希望应聘者具备一定的能力,以减少公司企 业的培训成本。而这些要求对于没有工作经验,或者想转行的人来说,无疑是一个 巨大的困难。企业的要求这么高,我们该如何才能克服这种困难,那么就需要我们 有勤奋学习的精神,同时也需要一定的学习方法。 本教程将由浅入

25、深,理论和项目案例交互,理论为辅、实践为重的教学方式, 浅显通俗的理论解释,结合常见实用的项目实战,使学者具备成为优秀的软件测试 工程师的条件,并可与具有丰富实际经验和理论知识的老师进行双向交流,结合软 件测试实践中遇到的问题进行研讨。 对于软件测试初学者,我们提供了切合实际、循序渐进的学习线路,读者在实 际学习过程中, 可参考图 1-3所示的软件测试学习路线图, 从软件测试的理论基础, 到项目实战,逐步学会软件测试的知识,掌握一定的技术技能,最终能够胜任公司 的软件测试工作。 图 1- 3软件测试学习路线图 在学习过程中如果遇到了问题,可以访问 http:/ 软件测试频道,将所遇到的问题发布

26、上去,我们会及时给予解答。同时,还提供了 教程相关章节的教学视频,可访问 下载。 1.2软件测试概述 1.2.1软件测试由来 1950 年左右,软件伴随着第一台电子计算机的问世诞生了。上世纪中叶,软 件产业从零开始起步,在短短的 50多年的时间里迅速发展成为推动人类社会发展 的龙头产业,造就了一批百万、亿万富翁。随着信息产业的发展,软件对人类社会 的发展越来越重要。 目 录 5 过去,软件仅由懂一些开发知识的程序员编写。程序员不仅担负着编写代码的 工作,还肩负着程序代码测试、保证代码质量的职责。实际上,程序员此时所做的 测试工作并非真正意义上的软件测试。他们所做的测试,从本质上来说,应该称作

27、“调试”。 那么,什么是调试呢?通俗的理解,就是在已知错误的情况下,对软件程序代 码做出的一系列检查,校正的过程,而软件测试则是在未知错误的情况下,检查程 序代码是否有问题的过程。真正区分测试与调试的意义在于,软件测试从软件质量 保证的角度来检查程序代码是否有错误,而调试则是为了解决当前已知的错误,调 试活动根本无法替代软件测试活动。以前,在大多数的企业、公司里往往把开发人 员的调试过程当作测试, 而不招聘专职的软件测试工程师, 这样的观点是不正确的。 由于早期的软件只有少量的代码,程序员完全可以应付。开发、调试、直至最 后的发布使用。然而,随着真正的商用软件的出现,程序的规模经历了一次又一次

28、 的爆炸式的增长。程序规模从最初的几行或几十行类机器语言,到现在的代码行数 达到千万数量级,软件的复杂度不断增加,开发的难度也越来越难,随之而来的问 题就是如何保证程序的正确性和可用性。此刻,软件再也不是一个只有程序员自己 能够理解的黑盒子了, 如何在软件程序自身的技术内涵和用户特定领域的需求间找 到平衡点,成为学者和实践者们追寻的目标。此时,区别于调试的软件测试活动作 为度量软件与用户需求间差距的手段登上了历史舞台。 软件测试活动的出现,解放了程序员,使程序员能够专心的开发代码,优化算 法,并能及时的修复测试人员所发现的代码缺陷,提高其工作效率。同时,各司其 职的分工方式,也更适合于当今社会

29、的发展模式。 1.2.2软件测试定义 在学习软件测试定义之前,我们先来了解一下什么是软件。 软件这个词在我们的生活中出现的太多太多啦。财务软件,办公软件,聊天软 件,播放软件等等,都不陌生,可有多少人能说出什么软件的定义吗?从软件的诞 生到现在,经过了半个多世纪,他的发展从早期的简陋模式,到现在复杂模式。说 简陋,是因为先前的软件定义仅限于代码,大多数人概念中的软件,是由一些可以 运行的,可以实现某些特定功能的代码的集合。这种认识,其实忽略了软件所在的 特定的社会环境,在一个真正的商业环境中,我们所生产的不仅仅只是程序代码, 而是一个完整的产品,包括实现用户特定需求的程序代码,支撑程序代码运行

30、的一 切与之相关的文档, 以及程序代码运行所必须的一切数据。 就像我们购买一部手机, 不仅仅只是手机,还有手机的使用说明书、保修单等等。简单的理解就是软件是一 个集合,包含上述的三个部分:程序代码、文档、数据。如 图 1- 4所示。 第 1章 软件测试理论基础 6 图 1- 4软件构成结构图 在了解软件的定义之后,我们再来学习什么是软件测试,前面介绍了测试与调 试的区别,那么到底什么是软件测试呢? 软件测试就是为了发现错误而审查软件文档、 检查软件数据和执行程序代码的 过程, 其目的在于在软件交付使用前充分发现缺陷并协助相关部门定位、 解决缺陷, 最后交付一个高质量的软件给用户。软件测试是软件

31、生存周期的一个重要阶段,其 主要任务是对被测对象,从初期的需求规格说明书,到最后的系统交付使用,整个 过程进行检查、验证,以确保软件质量。 基于不同的立场,存在着两种完全不同的测试目的。从用户的角度出发,普遍 希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。而从 软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证 被测软件已正确地实现了用户的需求,确立人们对软件质量的信心。那么我们软件 测试人员在实际的工作过程中应该如何处理呢? 根据软件测试的定义, 我们不难得知, 软件测试的目的是通过科学的测试方法, 找出软件中存在的缺陷,最终得到一个高质量的软件产

32、品,那么确保用户满意将是 我们的服务宗旨,如何找到更多的软件缺陷,是我们工作的重点。所以,我们需要 从客户的角度出发,按照正确的业务流程尽最大可能去模拟用户的行为习惯,从客 户角度出发,找出产品中的缺陷。在此过程中,应以需求规格说明书为基本依 据,结合软件产品的设计文档,以及项目经验设计高效的测试用例,只有这样,才 能达到我们测试的目的。 从广义上讲, 软件测试是指软件产品生存周期内所有的检查、 评审和确认活动。 如:设计评审、文档审查、单元测试、集成测试、系统测试、验收测试等。从狭义 上讲,软件测试是对软件产品质量的检验和评价。它一方面检查、揭露软件产品质 量中存在的质量问题,同时又需对产品

33、质量进行客观的评价并能提出改进意见。 目 录 7 在软件测试工作中我们经常接触到这样一个名词:Bug。软件测试活动中称寻 找软件缺陷的过程为找 Bug,那么到底什么是 Bug呢? 从字面来看,Bug就是小虫、臭虫的意思,这跟软件中的缺陷有什么关系呢? 这里有个典故。 第一代的计算机是由许多庞大且昂贵的真空管组成, 并利用大量的电力来使真 空管发 光。可能正是由于计算机运行产生的光和热,引得一只小虫子(Bug) 钻进了一 支真空管内,导致整个计算机无法工作。研究人员费了半天时间,总算发现原因 所在,把这只小虫子从真空管中取出后,计算机又恢复正常。后来,Bug 这个名 词就沿用下来,表示电脑系统或

34、程序中隐藏的错误、缺陷或问题。 Bug 的定义很广泛,在软件使用过程中所出现的任何一个可疑问题,或者导 致软件不 能符合设计要求或者不能满足消费者需求的问题都是 Bug,即 使 这 个 Bug 在实践 中是可行 的。有时候,Bug 并不是程序错误。例如,软件没有按照一般用户的使用习惯来 运行,此 时也可以把这个问题看成是该软件的一个 Bug。 从另外一个方面来理解,Bug 就是缺陷、不完美的意思。一切不完美的地方, 我们都可以认为其是一个 Bug。 Bug有很多种分类方法,可以按软件的生命周期分,比如需求分析阶段、产品 设计阶段、产品维护阶段等,也可以按照软件的构成分,比如软件文档、软件代码、

35、 软件数据等,同样可以按照软件测试的工作点来分,比如 UI界面、功能、性能等。 不管使用哪种分类方法,都是为了有效的区分 Bug 所处的位置,便于尽快定位问 题,并解决问题。 1.2.3软件测试基本分类 在了解了软件测试定义后,我们来看看软件测试都有哪些分类。一般地,我们 将软件测试活动分为以下几类:黑盒测试、白盒测试、灰盒测试、静态测试、动态 测试、手动测试、自动测试等等。 黑盒测试 软件测试行业,最常听到的名词就是黑盒测试,那么到底什么是黑盒测试呢? 黑盒测试又叫功能测试、数据驱动测试或基于需求规格说明书的功能测试。该 测试类别注重于测试软件的功能性需求。 采用这种测试方法,测试工程师把测

36、试对象看作一个黑盒子,完全不考虑程序 内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否 符合它的功能说明。如 图 1- 5所示,测试工程师无须了解程序代码的内部构造,第 1章 软件测试理论基础 8 完全模拟软件产品的最终用户使用该软件,检查软件产品是否达到了用户的需求。 举个例子,我们购买了手机以后,很少有人拆开手机观察其内部的结构,大多数情 况下,我们只是使用该手机的功能,从某种意义上说,此时这部手机就是我们的测 试对象,所采用的测试方法就是黑盒测试。 黑盒测试方法能更好更真实的从用户角度来考察被测系统的功能性需求实现 情况。在软件测试的各个阶段,如单元测试、集成测试

37、、系统测试及确认测试等阶 段中都发挥着重要作用,尤其在系统测试和确认测试中,其作用是其他测试方法无 法取代的。 图 1- 5黑盒测试示例图 白盒测试 与黑盒测试相对的软件测试方法,称为白盒测试。白盒测试又称结构测试、逻 辑驱动测试或基于程序代码内部构成的测试。此时,测试工程师将深入考查程序代 码的内部结构,逻辑设计等等。就像前面的例子,我们拆开手机,观察手机电路板 的设计,液晶屏的构成等等。白盒测试需要测试工程师具备很深的软件开发功底, 精通相应的开发语言,一般的软件测试工程难以胜任该工作。图 1- 6是白盒测试 的示例图,相对于白盒测试工程师来说,软件产品的内部构成是敞开。 图 1- 6白盒

38、测试示例图 灰盒测试 与前面的黑盒测试、白盒测试相比,灰盒测试介于两者之间。黑盒测试仅关注 程序代码的功能性表现,不关注内部的逻辑设计、构成情况,白盒测试则仅从程序 代码的内部构成考虑,检查其内部代码设计结构,方法调用等。而灰盒测试结合这 两种测试方法,一方面考虑程序代码的功能性表现,另一方面,又需要考虑程序代 买的内部结构。通俗的讲,灰盒测试就是白加黑,像我们的性能测试,自动化功能 测试就采用了灰盒测试的方法。图 1- 7是灰盒测试的示例图。 目 录 9 图 1- 7灰盒测试示例图 静态测试 静态测试,顾名思义,就是静态的、不执行被测对象程序代码而寻找缺陷的过 程。通俗的讲,静态测试就是用眼

39、睛看,阅读程序代码,文档资料等,与需求规格 说明书中的客户需求进行比较,找出程序代码中设计不合理,以及文档资料有错误 的地方。 一般在企业、公司里会召开正规的评审会,通过评审的方式,找出文档资料、 程序代码中存在缺陷的地方,并加以修改。 在进行代码的静态测试时,可以采用一些代码走查的工具,如 QA C+、 C+Test等。 动态测试 动态测试即为实际的执行被测对象的程序代码,输入事先设计好的测试用例, 检查程序代码运行得到的结果与测试用例中设计的预期结果之间是否差异, 判定实 际结果与预期结果是否一致,从而检验程序的正确性、可靠性和有效性,并分析系 统运行效率和健壮性等性能状况。 动态测试有四

40、部分组成:设计测试用例、执行测试用例、分析比较输出结果、 输出测试报告。 动态测试有三种主要的方法:黑盒测试、白盒测试以及灰盒测试。 手动测试 在未真正接触软件测试之前,很多人都认为,软件测试工作就是执行一些鼠标 点击的动作来查找缺陷。的确,在手动测试阶段,大部分的测试工作就是模拟用户 的业务流程,来使用软件产品,从而发现软件产品中的缺陷。手动测试是最传统的 测试方法,也是现在大多数公司都使用测试形式。它是测试人员设计测试用例并执 行测试用例,然后根据实际的结果去和预期的结果相比较并记录测试结果,最终输 出测试报告的测试活动。 这样的测试方法, 可以充分发挥测试工程师的主观能动性, 将其智力活

41、动体现于测试工作中,能发现很多的缺陷,但同时这样的测试方法又有 一定的局限性与单调枯燥性。 自动化测试 随着软件行业的不断发展,软件测试技术也在不断地更新,出现了众多的自动第 1章 软件测试理论基础 10 化测试工具,如 HP 的 QucikTestProfessional、LoadRunner,微软的 WAS,IBM 的 Rational一套等等。所谓的自动化测试,就是利用一些测试工具,模拟用户的业务 使用流程,让他们自动运行来查找缺陷。也可以编写一些代码,设定特定的测试场 景,来自动寻找缺陷。自动化测试的引入,大大的提高了测试的效率和测试的准确 性,而且写出的比较好的测试脚本,还可以在软件

42、生命周期的各个阶段重复使用。 自动化测试的优点是能够很快、很广泛地查找缺陷,同时可以做很多重复性的 工作,在回归测试阶段,我们可以利用 QuickTestProfessional自动化功能测试工具 进行,而无须大量的软件测试人员手动的再次执行测试用例,极大的提高了工作效 率。有时候我们常常需要做一种压力测试,需要几万甚至几十万个用户同时访问某 个站点,以保证网站的服务器不会出现死机或崩溃的现象。一般来说,要几万人同 时打开一个网不现实的,就算能够找到那么多的测试者,成本也很高。但是,利用 测试工具,比如 LoadRunner,就可以非常容易地做到,并且测试工具还可以自动 判断浏览结果是否正确。

43、 然而,自动化测试的缺点也很明显,它们只能检查一些比较主要的问题,如崩 溃、死机,但是却无法发现一些一般的日常错误,这些错误通过人眼很容易找到, 但机器却往往找不到。另外,在自动测试中编写测试脚本工作量也很大,有时候该 工作量甚至超过了手动测试的时间。 如今很多的软件产品生产,我们都是追求短(项目周期短)、平(成本低)、 快(市场反应快),根本没有那么多的时间留给我们做测试,在这种情况下,如果 我们不识适宜的盲目追求自动化测试,可能带来的不是好处,而是项目的失败。 需要注意的是,在自动化测试活动中,测试工具的应用可以提高测试的质量、 测试的效率。 但是在选择和使用测试工具的时候, 我们也应该看

44、到, 在测试过程中, 并不是所有的测试工具都适合我们使用,同时,有了测试工具、会使用测试工具并 不等于测试工具真正能在测试中发挥作用。因此,我们应该根据实际情况选择或者 不选择测试工具,选择使用何种测试工具,千万不能为了使用工具而刻意的去使用 工具。 1.2.4软件测试人员职业要求 人力资源是各项工作中最重要也是最有价值的资源,测试工作也同样。一个项 目想开展有效的测试活动,就需要有一个积极的、合格的测试组。 在国内软件测试刚起步的时候, 有一个普遍的现象就是让那些经验最少的新手 去做测试工作。没有人愿意做测试,公司觉得养测试人员是一件高成本的事情,不 合适。但实际上测试工作是一项重要的工作,

45、因为测试部门是软件发布的出口,又 可能是客户意见反馈的入口。如今,这种观点已经改变,很多公司都需要优秀的软 件测试工程师, 然而, 因为以前的不重视, 导致了优秀的软件测试工程师非常难得。 经验表明,对系统进行有效的测试所需要的技能绝对不比进行软件开发需要的少。 测试工程师需要对系统有较全面的了解, 而开发者可能只对自己的模块理解的较深目 录 11 入。一个优秀的测试工程师要对于一些不易重复出现的错误找到规律,要能够帮助 开发人员定位问题,能够对代码进行一定的检查,将错误尽可能的在项目测试的早 期阶段发现,同时,测试工程师还要对各种编程语言、数据库都有一定的了解,有 编程的概念。下面,我们从个

46、人素质要求角度来阐述一下软件测试工程师所需具备 的素质。 1责任心 由于目前的软件测试行业处于初级阶段, 还没有很好的量化指标对软件测试活 动做出衡量。有些企业、公司将测试工程师发现缺陷的多少作为绩效考核的指标, 然而这种方法有很大的弊端,软件测试工作本身就是一个主观色彩很强的工作,测 试工程师在测试活动中需尽可能地模拟软件产品最终用户的业务流程来进行测试, 但实际工作中,是不太可能做到的。大多数情况下,测试结果都是基于测试工程师 根据项目文档和自己对软件产品的理解基础上得出的。 我们知道,在我们思维定势的时候,即使是再简单的错误,我们也可能无法找 到。俗语说“当局者迷,旁观者清”,我想用在这

47、里一点都不为过。在测试工作开 展的初期,可能软件产品中存在大量的缺陷,即使测试工程师不花费太多的精力, 就可以找到很多的缺陷, 而随着测试工作的不断深入, 即使测试工程师再怎么用心, 也不一定能找到多少缺陷。 所以, 以缺陷的多少来衡量软件测试工程师的工作质量, 并非一种明智、公平的考核方法。 我在测试工作中就遇到这样的问题,记得当时的总监跟我说,对软件测试人员 的要求是每天至少提交 8 个 bug,我认为这样的量化指标是不合理的。在实际工作 中,软件测试活动在很大程度上依赖于测试人员的责任心,能够主动去做测试去完 成工作,而无法绝对的以缺陷的多少来衡量。所以,就需要我们软件测试人员有极 强的

48、责任心,确保自己的工作质量。 2沟通能力 说到沟通,可能大家都会说“这个简单,我沟通能力不错,八面玲珑,什么人 我都能搞定”。其实,在我们软件测试活动中,沟通能力并不是我们通常意义上所 讲的交流,这里包含的更多成份是技术含量以及服务意识。 这里的沟通不是耍嘴皮,测试是连接开发和客户的接口,与开发人员沟通,我 们需要从专业知识角度考虑,比如当我们发现的缺陷开发人员不认可的时候,我们 如何从理论、实际应用以及缺陷可能引发的后果等角度去阐述缺陷,使他们认同我 们的观点。所做出的阐述要有理有据,而不是强词夺理,更不是争吵。 实际工作中,开发人员与测试人员在某种角度上来讲是对立的。表面看来,软 件测试的

49、目的和软件工程活动的所有其他的工作目的都是相反的:其他工作是“建 设性”的,而测试工作是“破坏性”的尽最大可能证明程序中有错误,不能按 照预定的要求正确工作。从这点来说,软件测试与软件开发是相对的,有冲突的。第 1章 软件测试理论基础 12 就像生活中,如果有一帮人专门挑你的刺,不知道你的感受如何。所以,在这个角 度上看,开发人员与测试人员是对立。不过,这仅仅是从表面来看。实际上,发现 问题,揭露问题并不是软件测试的最终目的。发现问题是为了解决问题,软件测试 的根本目标是尽可能多、尽可能早地发现软件生产过程中的问题,并与其他部门一 起定位问题、 排除问题, 最终把一个高质量的软件系统交给用户使用。 从这点来说, 软件测试与软件开发又是统一的, 所以软件测试与软件开发从整个软件生产过程来 看他们是一个利益的共同体,只是在这个过程中扮演了两个不同的角色。 一句话,我们的共同目标都是为了提交一个高质量的软件产品给用户,所以我 们在实际工作中需要将我们最大的可能去理解

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报