
编辑推荐
《软件测试工程师成长之路:掌握软件测试九大技术主题》适用于已经学过软件测试基本理论,知道软件研发基本流程的读者,非常适合目前正在软件测试工程师岗位任职或将要进入软件测试工程师行列的人,同时适合软件开发工程师、软件项目管理师、软件系统架构师阅读。 作者简介
王顺(Roy)
十年以上计算机软件从业经验,资深软件开发工程师,系统架构师。创建学习型组织——言若金叶软件研究中心:一个以网络形式组织的软件研究团队,致力于网络软件研究与开发、计算机专著编写,为加快祖国信息化发展进程而努力!
个人新浪微博:http://weibo.com/roywang123
个人腾讯微博:http://t.qq.com/roywang123 目录
第1章Web测试专题技术分享1
1.1Web测试的特点1
1.2Web测试基础点2
1.2.1获取软件版本号2
1.2.2修改浏览器的代理设置4
1.2.3修改hosts配置文件6
1.2.4测试网上付费购物7
1.2.5截图软件FSCapture的使用8
1.2.6截图软件Jing的使用10
1.3用户界面测试12
1.3.1文字或图片重叠12
1.3.2文字或图片剪裁13
1.3.3文字或图片没对齐14
1.3.4重复菜单项或链接15
1.3.5提示信息错误15
1.3.6界面测试其他问题16
1.4功能测试18
1.4.1Tooltip不显示18
1.4.2JS错误问题19
1.4.3页面链接错误20
1.4.4页面访问资源不可用21
1.4.5出现“404页面错误”22
1.4.6按钮不工作23
1.4.7功能未实现24
1.4.8错误信息提示不合理25
1.4.9数据库访问错误26
1.4.10文档无法下载27
1.5表单测试28
1.5.1文本框测试常见验证点28
1.5.2特殊输入域测试常见验证点29
1.5.3单选按钮测试常见验证点31
1.5.4复选框测试常见验证点32
1.5.5大块文字区域测试常见验证点32
1.5.6下拉列表框测试常见验证点33
1.5.7排序测试常见验证点33
1.5.8分页测试常见验证点33
1.5.9搜索框填充域测试常见验证点34
1.5.10用户登录测试常见验证点35
1.5.11特殊字符处理常见验证点35
1.5.12转义字符处理常见验证点37
1.5.13多次快速提交问题37
1.5.14共用页面Session问题37
1.5.15页面刷新问题38
1.5.16浏览器前进/后退按钮问题38
第2章Client测试专题技术分享39
2.1Client测试的特点39
2.2如何进行Client测试40
2.2.1安装测试40
2.2.2卸载测试42
2.2.3UI测试43
2.2.4功能测试45
2.2.5字符输入测试47
2.2.6Tooltip测试48
2.2.7链接测试49
2.2.8操作按钮测试50
2.2.9菜单测试51
2.2.10音频测试51
2.2.11视频测试53
2.2.12程序运行权限测试54
2.3如何获取测试需要的Trace55
第3章Mobile测试专题技术分享57
3.1Mobile特点57
3.2Mobile测试基础58
3.2.1手机测试常见类型58
3.2.2手机测试与传统测试的区别59
3.2.3监控手机流量60
3.2.4获取手机的Root权限60
3.3实现手机与计算机的联系61
3.3.1“豌豆荚”的基本操作62
3.3.2“360手机助手”的基本操作62
3.3.3“腾讯手机管家”的基本操作63
3.3.4实现iPhone/iPad/iPadMini与计算机的联系63
3.3.5备份手机中的数据64
3.3.6截取手机屏幕内容65
3.3.7记录手机的ErrorLog66
3.3.8手机数据信息68
3.4手机设备的自身测试68
3.5手机应用软件测试72
3.6手机Web应用测试73
3.7手机测试问题集锦73
第4章国际化、本地化软件测试专题技术分享77
4.1软件国际化77
4.1.1国际化概述78
4.1.2软件国际化误区78
4.2软件本地化80
4.2.1软件本地化概述80
4.2.2软件本地化误区81
4.3国际化软件测试82
4.3.1在本地化机器上安装使用程序82
4.3.2正确的字符集编码83
4.3.3伪本地化测试发现文本扩展问题85
4.3.4测试区域文化和传统特征87
4.3.5保证文本与代码分离87
4.4本地化软件测试89
4.4.1翻译问题89
4.4.2数据格式问题90
4.4.3快捷键问题91
4.4.4本地化后的排序问题92
4.4.5常用本地化测试技巧93
第5章跨平台跨浏览器专题技术分享95
5.1跨平台测试特点96
5.2软件平台的分类96
5.2.1Windows平台97
5.2.2MacOSX平台97
5.2.3Linux平台98
5.2.4Solaris平台98
5.2.5HP—UX平台98
5.2.6IBM—AIX平台98
5.3跨平台测试需要具备的知识99
5.3.1Windows平台99
5.3.2MacOSX平台103
5.3.3UNIX平台107
5.4跨平台测试技术分享111
5.4.1安装应用程序112
5.4.2应用程序运行114
5.4.3程序运行界面测试115
5.4.4程序功能测试116
5.5浏览器的分类118
5.5.1IE118
5.5.2Firefox119
5.5.3Chrome119
5.5.4Safari120
5.6跨浏览器测试技术分享120
第6章Web安全测试专题技术分享123
6.1Web安全测试123
6.1.1Web前端工具Firebug的使用124
6.1.2Web前端工具Fiddler的使用125
6.1.32010年Web应用十大安全攻击127
6.1.42010年与2007年Web应用十大安全攻击对比129
6.2未验证的重定向和转发129
6.2.1攻击说明129
6.2.2攻击举例130
6.2.3开发人员防范方法131
6.3传输层保护不足131
6.3.1攻击说明131
6.3.2攻击举例131
6.3.3开发人员防范方法131
6.4URL访问控制不当132
6.4.1攻击说明132
6.4.2攻击举例132
6.4.3开发人员的防范方法132
6.5不安全的加密存储133
6.5.1攻击说明133
6.5.2攻击举例133
6.5.3开发人员防范方法133
6.6安全配置错误134
6.6.1攻击说明134
6.6.2攻击举例134
6.6.3开发人员防范方法134
6.7CSRF135
6.7.1攻击说明135
6.7.2攻击举例135
6.7.3开发人员防范方法136
6.8不安全的直接对象引用136
6.8.1攻击说明136
6.8.2攻击举例137
6.8.3开发人员防范方法137
6.9失效的身份认证和会话管理137
6.9.1攻击说明137
6.9.2攻击举例137
6.9.3开发人员防范方法138
6.10跨站脚本138
6.10.1攻击说明138
6.10.2攻击举例139
6.10.3开发人员防范方法140
6.11SQL注入141
6.11.1攻击说明141
6.11.2攻击举例141
6.11.3开发人员防范方法143
6.12OWASP143
6.12.1OWASP定义143
6.12.2OWASP上最新的Web安全攻击与防范技术143
6.12.3WiKi上最新的Web安全攻击与防范技术145
第7章敏捷项目测试专题技术分享146
7.1敏捷软件开发简介147
7.1.1敏捷开发的流程147
7.1.2敏捷开发的质量管理148
7.1.3敏捷开发中的关键概念149
7.2敏捷测试的定义152
7.3敏捷测试的实质152
7.4敏捷测试与普通测试的区别153
7.5敏捷项目测试实例介绍154
7.5.1实例项目介绍154
7.5.2用户故事设计和发布计划阶段156
7.5.3Sprint阶段158
7.5.4Sprint结束和下一个Sprint开始162
第8章软件自动化测试专题技术分享165
8.1引入自动化测试165
8.2什么是自动化测试171
8.2.1自动化测试是怎样工作的172
8.2.2自动化测试有哪些类别174
8.2.3设计一个常见的自动化测试框架175
8.3持续集成自动化测试177
8.4自动化测试工具——JMeter178
8.4.1JMeter是什么178
8.4.2JMeter的安装和运行178
8.4.3JMeter自动化脚本设计策略181
8.4.4抓取一个简单的请求182
8.4.5设置配置文件186
8.5设计一个简单的脚本196
8.5.1添加学生——HTTPRequest196
8.5.2查看运行结果——ViewResultsTree200
8.5.3访问数据库——JDBCRequest202
8.5.4验证测试结果——ResponseAssertion204
8.5.5清理数据206
第9章压力与性能测试专题技术分享209
9.1什么是压力、性能测试209
9.2压力测试和性能测试用例设计211
9.3压力测试和性能测试——JMeter214
9.3.1单线程添加多个学生215
9.3.2多线程添加多个学生221
9.4生成测试报告225
9.4.1生成测试报告的方法225
9.4.2分析测试报告226
第10章自己动手完成软件测试实践232
10.1中心在线网站测试实践232
10.2国内知名网站或应用测试实践234
10.3如何设计测试案例235
10.3.1看清项目测试范围(TestScope)236
10.3.2编写测试案例237
10.4准确汇报BUG的技巧243
10.4.1准确汇报BUG的几条基本准则243
10.4.2描述BUG中需要注意的事项244
10.4.3在汇报英文BUG时用专业英文描述244
10.4.4与外国人进行项目交流时的常用英语246
10.5寻找软件产品缺陷获奖作品欣赏248
10.5.1全国大学生寻找产品缺陷(FindBUG)技能大赛说明248
10.5.2汇报产品缺陷模板250
10.5.3参赛选手提交的作品内容250
10.5.4大赛组委会审阅评价260
第11章网页编程语言HTML261
11.1HTML编辑工具262
11.2读者如何参与实践263
11.3HTML语法教学265
11.3.1网页架构标记265
11.3.2排版标记268
11.3.3字体标记271
11.3.4清单标记274
11.3.5表格标记277
11.3.6图形标记281
11.3.7表单标记284
11.3.8链接标记290
11.3.9框架标记291
11.3.10多媒体标记294
11.3.11跑马灯标记296
11.3.12特殊字符297
第12章JavaScript299
12.1JavaScript的特点及作用300
12.1.1JavaScript是被嵌入到HTML中的300
12.1.2JavaScript运行的环境301
12.1.3JavaScript是解释执行的301
12.1.4JavaScript是一种弱类型语言302
12.1.5JavaScript以对象为基础302
12.1.6JavaScript通过事件驱动执行302
12.1.7JavaScript的作用是多方面的303
12.1.8JavaScript是不断发展和广泛应用的303
12.2JavaScript的基本语法303
12.2.1基本数据结构303
12.2.2运算符和表达式306
12.2.3控制结构和循环309
12.3window对象314
12.3.1window窗口对象的属性314
12.3.2window窗口对象的方法316
12.4document对象320
12.4.1document对象的属性321
12.4.2document对象的write()和writeIn()方法323
12.4.3document对象的close()方法323
12.4.4document对象的getSelection()方法323
12.5文本对象324
12.5.1文本对象的defaultValue属性324
12.5.2文本对象的name属性326
12.5.3文本对象的value属性326
12.5.4文本对象的focus()方法326
12.5.5文本对象的select()方法327
12.6按钮对象329
12.6.1button、submit、reset对象329
12.6.2checkbox对象330
12.6.3radio对象330
12.7location对象332
12.7.1hash属性332
12.7.2href属性333
12.7.3pathname属性334
12.7.4protocol属性334
12.8history对象335
12.9字符串对象335
12.9.1转义字符335
12.9.2字符串对象的属性336
12.9.3字符串对象的“+”连接方法337
12.9.4字符串对象charAt方法337
12.9.5字符串对象indexOf方法338
12.9.6字符串对象lastIndexOf方法338
12.9.7字符串对象substring339
12.9.8字符串对象toLowerCase方法339
12.9.9字符串对象toUpperCase方法340
12.10日期对象340
12.10.1日期对象的属性340
12.10.2new方法340
12.10.3getYear()方法341
12.10.4getMonth()方法342
12.10.5getDate()方法342
12.10.6getDay()方法343
12.10.7getTime()方法344
12.10.8setTime()方法344
12.10.9setYear()方法345
12.10.10getTimezoneOffset()方法345
12.10.11toGMTString()方法346
12.10.12toLocaleString()方法347
12.11数学对象347
12.11.1Math对象的属性347
12.11.2Math对象的abs方法348
12.11.3Math对象的acos方法349
12.11.4Math对象的max方法350
12.11.5Math对象的round/floor/ceil方法350
12.11.6Math对象的random方法351
12.12数组对象352
12.12.1数组对象的创建352
12.12.2数组对象的扩充353
第13章CSS和XML355
13.1CSS356
13.1.1什么是CSS356
13.1.2CSS的历史357
13.1.3使用CSS的优点357
13.1.4CSS样式解决了一个普遍的问题358
13.1.5使用CSS之前358
13.1.6如何将样式表加入网页359
13.1.7CSS的语法361
13.2XML369
13.2.1XML简介369
13.2.2XML的历史369
13.2.3XML的作用370
13.2.4XML与HTML的主要差异372
13.2.5一个XML文档实例372
13.2.6XML文档形成一种树结构373
13.2.7XML的语法规则374
附录A大学学籍管理系统安装配制说明书376
附录B大学学籍管理系统394
附录C软件测试中常见的中英文对照407
参考文献412 序言
安徽黄山学院胡绵军同学从对软件测试领域一无所知到加入言若金叶软件研究中心全国软件测试工程师培训与国际软件测试项目实训,在初始的半年时间内,胡绵军同学感受到每天都在进步,每天学习许多新技术与测试技巧。国际软件测试项目让胡绵军同学既提高了动手实践能力也获得了许多个人收益,同时也获得了中心软件测试工程师证书。
但是一年后,胡绵军工程师在一次QQ 聊天中透露,初学软件测试技术的半年,个人技术突飞猛进,不过又过了一年,觉得自己没有太多的突破,遇到了成长的瓶颈,虽然进入到了测试工程师行列,但如何迈入资深工程师行列,他没有头绪。
我给他的建议是多总结、多归纳、多关注领域最新的技术动态、找到自己的技术瓶颈并努力克服与突破。
我在给中心国际软件测试团队成员提成长建议时,《软件测试工程师成长之路:掌握软件测试九大技术主题》一书的选材与读者对象也在我的头脑中渐渐清晰,我们需要出一本高级实战教材。
1.使更多工程师不再迷茫,尽快实现从普通工程师向高级工程师的转变,并为其指明今后努力的方向。
2.使高校教师与学生了解作为软件测试工程师需要熟练应用哪些知识技能,为以后的教学与学生实践提供丰富的素材与软件环境。
3.使读者通过学习本书,进入软件测试与软件质量保证领域。
软件测试领域九大技术主题涉及软件测试领域的方方面面,同时紧随国际软件测试最新的技术,有一定的前瞻性,技术研究深入,可引导读者进入高级工程师行列。本书包括Web 测试专题技术分享,Client 测试专题技术分享,Mobile 测试专题技术分享,国际化、本地化软件测试专题技术分享,跨平台跨浏览器专题技术分享,Web 安全测试专题技术分享,敏捷项目测试专题技术分享,软件自动化测试专题技术分享,压力与性能测试专题技术分享等章节。
本书前9 章通过众多全球知名软件公司资深工程师的各大软件测试技术主题分享,让读者更清楚地了解自己目前的水平,如何进行更深层次的提高及怎样跻身资深工程师行列。
同时,前9 章内容看似相互独立、没有关联,实际上测试工程师在做每个软件项目测试时都会用到前9 章中的知识,有的项目可能9 章的技术全部能用到。
下面以国内基本上每个人都使用的即时通信软件腾讯QQ 为例。
◎ QQ 日志、QQ 相册等功能是基于Web 浏览器的,所以用到Web 测试技术。
◎ 大部分使用QQ 的人,是在本机安装一个QQ 客户端软件然后进行聊天、视频等,这就用到Client 测试技术。
◎ QQ 也支持在手机、平板等平台上安装与使用,这就用到Mobile 测试技术。
◎ QQ 在国外的客户也很多,支持多语言,这就用到国际化、本地化测试技术。
◎ QQ 支持Windows、Mac OS X 等系统,QQ 空间能在IE、Firefox、Chrome 等浏览器上访问,这就用到跨平台跨浏览器技术。
同时,Web 安全、自动化测试、压力与性能测试在QQ 中都会应用到,所以针对我们常用的QQ 软件的测试就综合用到九大技术。九大技术主题相辅相成、互为补充,共同推动软件测试技术的发展,提高软件产品的质量。
本书第10 章引导读者立即动手实践,展示自己的专业水平,阅读中心在国际软件测试中积累的经验分享,欣赏全国大学生软件实践能力比赛的获奖作品,使自己更快地适应软件工程师角色。
本书第11 章、第12 章和第13 章分别讲HTML、JavaScript 与CSS 技术,表面上看这些是开发工程师要学习的知识,实际上测试工程师也要懂得并熟悉它们。只有这样,测试工程师在做Web、Client 或Mobile 测试时,才知道为什么在注册一个网站用户时,可能将用户名填写为以下内容之一,从而快速找到产品在代码、Web 安全攻击上潜在的缺陷。
本书附录A 是大学学籍管理系统,安装好系统后,可以用它完成本书第8 章与第9章的动手实践。
附录B 是大学学籍管理系统产品规格说明书,方便测试工程师对照说明书进行测试。
附录C 是将书中或软件测试工作中常用到的英文与中文解释对应,方便读者进入国际软件测试队伍。
主要作者与贡献人
本书第1、3、6、10、11、12、13 章由王顺编写,第2、5、7 章由盛安平编写,第8、9 章由恽菊花编写,第4 章由崔贤编写,附录A、B、C 由王顺编写。
本书的出版同时得到中心官方合作院校和许多高校软件测试专业教师的大力支持,他们是西南科技大学计算机学院潘娅、兰景英老师;四川理工学院软件工程系何海涛主任;广州番禺理工学院孙庚副教授;常州机电职业技术学院印梅老师等。
为配合本书的教学实践,各大在线网站的开发与运维主要由中心系统架构师、资深软件开发工程师、资深软件测试工程师团队、资深项目管理师团队完成,主要成员有:王顺、Waley Zhang(美)、汪红兵、李化、王莉、盛安平、恽菊花、吴治、高轶等。
书籍中使用的各大系统
为了使读者容易复现书中列举的丰富BUG 实例与测试技巧,所举例子主要从中心创建的各大网站中提取(避免其他网站因修改或删除不能访问)。
以上系统是基于Web 的,读者只要能上网,就能对照体验。
为给读者提供自己动手搭建测试环境的场景,练习自动化测试、压力与性能测试,特编写大学学籍管理系统,里面有如何在本机搭建测试环境进行测试,包括JDK 环境、Tomcat服务器、MySQL 数据库等的安装与使用,请参照附录A 进行软件安装与使用。
为给读者Client 测试、跨平台测试的体验,中心编写的跨地域合作项目在线跟踪系统支持三个平台(Windows、Linux 和Mac OS X)的软件下载与安装。
常见问题解答
1.本书适合高校哪些专业师生学习?读者群体有多广?
本书虽然是软件测试工程师成长实践类教程,但因为软件质量是软件产品的生命线,所以全国各大高校计算机学院、信息管理学院、软件学院各专业都可以将其选用为软件实践类教材。教师和学生通过学习本书,能知道软件生产各环节如何避免引入软件缺陷,各种类型软件常出现的软件缺陷在哪里,在软件开发、软件测试及软件项目管理时,如何减少这些缺陷存在的可能性;如何保证开发的软件足够安全,怎样验证所使用的软件是安全的,等等,对各大软件专业都有帮助。
除了全国各大高校信息类师生可以选用本教程外,工程硕士、工程博士、全国各大软件培训机构的软件工程师培训、全国各大软件公司的软件工程师都可以选择本书,学习当前最新的技术、阅读资深工程师带来的各大技术专题分享、增强自己的技术实力,在竞争中展现自我。
2.某重点高校计算机学院反映:学院规定的计算机理论课程每学期都学不完,怎么有时间来学习这个实践教程呢?
中心认为,对学生的教育不是让他们知道所有的既定理论、定理,更主要的是让学生应用这些知识。
本书的出版就是为了取代传统的计算机理论教学,大家都知道经过理论教学之后,实际能记得或用得上的理论总结后可能只有几句话或几页纸。本书从纵深角度出发将目前软件测试领域九大专题技术进行串讲,方便师生了解前沿技术、分享众多资深工程师的经验,引领读者进入软件工程师行列并很快向高级工程师方向成长,体现每一个学习者的主动性与创造性。
3.本书是否适合自学?如果自学过程中遇到不理解的内容怎么办?
中心编写的软件实践类专著,满足自学的要求,完全适合自学。各大高校教师,如果因为只是担心自己经验不够,而没有选用本教程,那就太可惜了,因为你教本书的时间越长,教的班级越多,你的领悟与发现就会越多,技术也会越来越强;你会惊奇地发现几年之后,自己也变成了这方面的专家。
如果你在自学本书时感到吃力,想要参加中心举办的相应级别的工程师培训,则请访问言若金叶研究中心全国软件工程师培训官网。
4.学生学完本教程后,都想展示一下本书中学到的各种技术,有没有什么地方可供学生展示自己的能力呢?
中心从2012 年就开始组织全国大学生软件实践能力比赛,全国大学生软件实践能力比赛官方网址。其中有软件测试工程师技能比赛,也有软件开发工程师技能比赛,欢迎大家来展示自己的实力。名次和相应证书也为大家进入职场提供了一个敲门砖。
同时,每年都有许多全国优秀在校大学生通过中心平台参与到国际软件外包项目和自主研发项目,锻炼自己软件实践能力与实战经验的同时,获得相应的报酬。
随着软件行业的发展,要求软件测试工程师越来越专业,很多学生想从事软件测试的职业,但对这个职业很迷茫,不知道从事这个职业需要具备哪些专业知识,积累哪些经验,从事这个职业后,如何提高自己,等等。深入学习本书,希望你能找到满意的答案。
致谢
感谢电子工业出版社提供的这次合作机会,特别是刘皎老师的指导与帮助,使该实践教程能够早日与大家见面。
感谢团队成员的共同努力,因为大家都为一个共同的信念“为加快祖国的信息化发展步伐而努力!”而紧密团结在一起。感谢团队成员的家人和朋友,是家人和朋友的无私关怀和照顾,最大限度的宽容和付出成就了今天这一教程。
由于作者水平与时间的限制,本书难免会存在一些问题,如果在使用本书过程中有什么疑问,请发送E-mail 到roy.wang123@gmail.com,作者及其团队将及时给予回复。
后记
你也可以到中心的官网及其论坛进行更深层次的学习与讨论,在中心官网,你可以:
◎ 掌握中心最新的专著进展情况。
◎ 报名参加中心的软件工程师培训。
◎ 报名参加中心软件工程师认证。
◎ 报名参加中心自主软件研发。
◎ 报名参加中心软件实训与外包,锻炼自己能力的同时获得应有的报酬。
◎ 加入中心软件各领域QQ 群,和其他高手或同学一起探讨学习中遇到的困难与成长经验。
◎ 加入中心软件外包QQ 群,资深工程师与项目管理师带你参与国际软件外包。
一切成就,只因有你!相信追求梦想的力量!
王顺
2014 年于合肥留学人员创业园
文摘
版权页:
插图:
ISBN | |
---|---|
出版社 | 电子工业出版社 |
尺寸 | 16 |