数据库压力测试方法小结

1前言

在前面的压力测试过程中,主要关注的是对接口以及服务器硬件性能进行压力测试,评估请求接口和硬件性能对服务的影响。但是对于多数Web应用来说,整个系统的瓶颈在于数据库。

原因很简单:Web应用中的其他因素,例如网络带宽、负载均衡节点、应用服务器(包括CPU、内存、硬盘、连接数等)、缓存,都很容易通过水平的扩展(俗称加机器)来实现性能的提高。而对于MySQL,由于数据一致性的要求,无法通过增加机器来分散向数据库写数据带来的压力;虽然可以通过前置缓存(Redis等)、读写分离、分库分表来减轻压力,但是与系统其它组件的水平扩展相比,受到了太多的限制

2常见的数据库压测指标

与接口压测指标类似,数据库相关指标如下:

  • TPS/QPS:衡量吞吐量。
  • 响应时间:包括平均响应时间、最小响应时间、最大响应时间、时间百分比等,其中时间百分比参考意义较大,如前95%的请求的最大响应时间。。
  • 并发量:同时处理的查询请求的数量。

3使用sybench进行数据库压测

1、基本介绍

sysbench是跨平台的基准测试工具,支持多线程,支持多种数据库;主要包括以下几种测试:

  • cpu性能
  • 磁盘io性能
  • 调度程序性能
  • 内存分配及传输速度
  • POSIX线程性能
  • 数据库性能(OLTP基准测试)

该工具可以自动帮你在数据库里构造出来大量的数据,你想要多少数据,就自动给你构造出来多少条数据。同时还可以模拟几千个线程并发的访问数据库,模拟使用各种各样的 SQL 语句,包括模拟出来各种事务提交到你的数据库里去,甚至可以模拟出几十万的 TPS 去压测数据库。

2、安装sysbench:

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash 
sudo yum -y install sysbench 
sysbench --version

3、基于 sysbench 构造测试表和测试数据:

  • 首先需要在自己的数据库里创建好一个测试库,我们可以取个名字叫做 test,同时创建好对应的测试账号,可以叫做 root,密码是 123456,让这个用户有权限可以访问 test。
  • 基于 sysbench 构建 20 个测试表,每个表里有 100 万条数据,接着使用 100 个并发线程去对这个数据库发起访问,连续访问 5 分钟,也就是 300 秒。命令如下:
sysbench --db-driver=mysql --time=300 --threads=100 --report-interval=1 --
mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-
password=123456 --mysql-db=test --tables=20 --
table_size=1000000 oltp_read_write --db-ps-mode=disable prepare

4、执行测试:

(1)测试数据库的综合读写 TPS,使用的是 oltp_read_write 模式:

sysbench --db-driver=mysql --time=300 --threads=100 --report-interval=1 --
mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test_user --mysql-
password=test_user --mysql-db=test_db --tables=20 --table_size=1000000 
oltp_read_write --db-ps-mode=disable run

(2)测试数据库的只读性能,使用的是 oltp_read_only模式:

sysbench --db-driver=mysql --time=300 --threads=100 --report-interval=1 --
mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test_user --mysql-
password=test_user --mysql-db=test_db --tables=20 --table_size=1000000 
oltp_read_only --db-ps-mode=disable run

(3)测试数据库的写入性能,使用的是 oltp_write_only 模式:

sysbench --db-driver=mysql --time=300 --threads=100 --report-interval=1 --
mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test_user --mysql-
password=test_user --mysql-db=test_db --tables=20 --table_size=1000000 
oltp_write_only --db-ps-mode=disable run

使用上面的命令,sysbench 工具会根据你的指令构造出各种各样的 SQL 语句去更新或者查询你的 20 张测试表里的数据,同时监测出你的数据库的压测性能指标,最后完成压测之后,可以执行 cleanup 命令,清理数据。

5、压测结果分析:

按照我们上面的命令,我们是让它每隔 1 秒都会输出一次压测报告的,此时它每隔一秒会输出类似下面的一段东西:

[ 10s ] thds: 100 tps: 500 qps: 5000 (r/w/o: 3500/1000/500) lat (ms, 95%): 
20 err/s: 0.00 reconn/s: 0.00
  • thds:100,这个意思就是有 100 个线程在压测
  • tps:500,这个意思就是每秒执行了 500 个事务
  • qps:5000,这个意思就是每秒可以执行 5000 个请求
  • (r/w/o: 3500/1000/500):这个意思就是说,在每秒 5000 个请求中,有 3500 个请求是读请求,1000 个请求是写请求,500 个请求是其他的请求,就是对 QPS 进行了拆解
  • lat (ms, 95%):20,这个意思就是说,95% 的请求的延迟都在 20 毫秒以下
  • err/s: 0.00 reconn/s: 0.00:这两个的意思就是说,每秒有 0 个请求是失败的,发生了 0 次网络重连

4结论

使用sysbench工具可以直接对数据库性能进行评价,但是在结果展示方面还有待进一步提升。当然后续可以对结果进行进一步处理,比如写入表格或作图,会更加直观。

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

  • 29
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 一 软件测试 从零开始 5 1.1 引言 5 1.2 测试准备工作 5 1.2.1 向有经验的测试人员学习 5 1.2.2 阅读软件测试的相关书籍 6 1.2.3 走读缺陷跟踪库中的问题报告单 6 1.2.4 走读相关产品的历史测试用例 6 1.2.5 学习产品相关的业务知识 6 1.3 识别测试需求 7 1.3.1 主动获取需求 7 1.3.2 确认需求的优先级 8 1.3.3 加入开发小组的邮件群组 8 1.3.4 与开发人员为邻 8 1.4 测试用例设计 8 1.4.1 测试用例的基本格式 8 1.4.2 重用同类型项目的测试用例 9 1.4.3 利用已有的软件 Checklist 9 1.4.4 加强测试用例的评审 10 1.4.5 定义测试用例的执行顺序 10 1.5 测试用例执行 10 1.5.1 搭建软件测试环境,执行测试用例 10 1.5.2 测试执行过程应注意的问题 11 1.5.3 及时更新测试用例 11 1.5.4 提交一份优秀的问题报告单 12 1.6 测试结果分析 12 1.7 总结 13 二 软件测试的常识 13 2.1 引言 13 2.2 软件测试常识 13 2.2.1 测试是不完全的(测试不完全) 13 2.2.2 测试具有免疫性(软件缺陷免疫性) 14 2.2.3 测试是 “ 泛型概念 ” (全程测试) 14 2.2.4 80-20 原则 14 2.2.5 为效益而测试 15 2.2.6 缺陷的必然性 15 2.2.7 软件测试必须有预期结果 15 2.2.8 软件测试的意义 - 事后分析 15 2.2.9 结论: 15 三 浅谈软件开发中的注意事项 16 3.1 项目设计 16 3.2 设计变化和需求变化 16 3.3 代码编写 17 3.3.1 源程序文件结构 17 3.3.2 界面设计风格的一致性 17 3.3.3 编辑风格 17 3.3.4 命名规范 18 3.4 BUG修补 18 3.5 开发人员的测试 18 四 软件测试的若干问题 19 4.1 前言 19 4.2 博弈的各方 19 4.3 测试的过程 20 4.4 测试所具备的素质 20 4.5 自动化测试 20 4.6 测试的误区 21 五 浅谈功能测试用例模板设计 21 5.1 Excel 模版 21 5.2 测试用例状态转换分析 23 六 如何提高软件质量 23 6.1 什么是质量 24 6.2 流程对质量的贡献 25 6.3 流程与技术 27 6.4 全面质量管理 28 6.5 关注测试 29 6.6 成功的铁三角 30 6.7 国际上流行的质量标准 30 6.8 如何起步 32 七 ISO和CMM,我们该选择谁 32 7.1 管理水平的适用性 33 7.2 复杂度的适用性 33 7.2.1何谓研发过程复杂度 34 7.2.2 何谓组织机构复杂度 34 7.3 量化管理的适用性上 35 7.4 结论 36 八 如何做好单元测试 36 8.1 前言 36 8.2 组织结构应该保证测试组参与单元测试 36 8.3 加强单元测试流程规范性 37 8.3.1 制订单元测试的过程定义 37 8.3.2 单元测试工作产品必须纳入配置管理 38 8.3.3 必须制订覆盖率指标和质量目标来指导和验收单元测试 38 8.3.4 加强详细设计文档评审 39 8.4 单元测试者技能的提高 39 8.4.1 加强对单元测试人员的技能培训 39 8.4.2 必须引入工具进行辅助 40 8.4.3 单元测试者加强对被测软件的全面了解 40 8.5 结尾 40 九 漫谈人机界面测试 41 9.1 一致性测试 41 9.2 信息反馈测试 42 9.3 界面简洁性测试 42 9.4 界面美观度测试 42 9.5 用户动作性测试 43 9.6 行业标准测试 43 9.7 小结 44 十 基于Web的系统测试方法 44 10.1 功能测试 45 10.1.1 链接测试 45 10.1.2 表单测试 45 10.1.3 Cookies测试 45 10.1.4 设计语言测试 45 10.1.5 数据库测试 46 10.2 性能测试 46 10.2.1 连接速度测试 46 10.2.2 负载测试 46 10.2.3 压力测试 46 10.3 可用性测试 47 10.3.1 导航测试 47 10.3.2 图形测试 47 10.3.3 内容测试 47 10.3.4 整体界面测试 47 10.4 客户端兼容性测试 48 10.4.1 平台测试 48 10.4.2 浏览器测试 48 10.5 安全性测试 48 10.6 总结 49 十一 为盈利而测试 49 11.1 引言 49 11.2 什么是软件测试 50 11.3 六个误区 50 11.3.1 误区一:忽视对正常输入的测试 50 11.3.2 误区二:忽视设计阶段的参与与评估 50 11.3.3 误区三:忽视测试计划与测试文档的建立及维护 51 11.3.4 误区四:忽视缺陷的分析,报告及跟踪 51 11.3.5 误区五:错误的测试目标及测试终止条件 51 11.3.6 误区六:不懂得合理调配使用测试人员的知识技能结构 51 11.4 软件质量与软件测试 52 11.5 软件测试的经济目的 54 11.5.1 满足用户需求,提高产品的竞争力,最终提高产品的销售量 54 11.5.2 尽早发现缺陷,降低后继质量成本 54 11.6 何时应当停止测试 56 十二 整体性能测试剖析 57 十三 性能测试工具之研究 62 13.1 性能测试的意义 62 13.2 性能测试工具综述 63 13.3 性能测试工具的体系架构 64 13.4 虚拟用户产生器 Vugen 65 13.5 Proxy 二次捕获的问题 67 13.6 关联的问题 68 13.7 脚本的问题 70 13.8 Conductor 和 Player 部分 71 13.9 Conductor 和 Player 的技术要点 72 13.10 数据分析工具 Analysis 72 13.11 结束语 72 十四 性能测试原理及性能测试实例分析 73 14.1 软件测试中的性能测试 73 14.1.1 性能测试的含义 73 14.1.2 性能测试的分解 73 14.2 一个性能测试实例 74 14.2.1 被测系统 74 14.2.2 对被测系统进行性能测试 75 14.5 总结 80 十五 软件GUI测试中的关注点 80 15.1 不能不说的二个问题 81 15.1.1 软件测试中的“二八”原则 81 15.1.2 软件黑盒测试解决的问题 81 15.2 软件黑盒测试常见错误类型及说明 81 15.2.1 用户界面错误 81 15.2.2 功能性 81 15.2.3 人机交互 82 15.3 命令结构和录入 87 15.3.1 不一致性 87 15.3.2 “最优化” 87 15.3.3 菜单 89 15.4 遗漏的命令 90 15.4.1 状态转换 90 15.4.2 危机预防 90 15.4.3 由用户进行的错误处理 91 15.4.4 其他问题 91 15.5 程序僵化 92 15.5.1 用户可调整性 92 15.5.2 控制方式 93 15.6 性能 94 15.6.1 降低程序速度 94 15.6.2 缓慢回应 94 15.6.3 如何减少用户吞吐量 94 15.6.4 反应拙劣 94 15.6.5 没有提前输入 95 15.6.6 没有给出某个操作会花很长时间的警告 95 15.6.7 程序太多提示和询问 95 15.6.8 尽量使用简单命令和提示 95 15.7 输出 95 15.7.1 不能输出某种数据 95 15.7.2 不能重定向输出 95 15.7.3 与一个后续过程不兼容的格式 96 15.7.4 必须输出的很少或很多 96 15.7.5 不能控制输出布局 96 15.7.6 荒谬的精度输出级别 96 15.7.7 不能控制表或图的标记 96 15.7.8 不能控制图形的缩放比例 96 15.8 错误处理 96 15.8.1 错误预防 96 15.8.2 错误检测 97 15.8.3 错误恢复 98 15.8.4 边界相关的错误 99 15.8.5 计算错误 100 15.9 小结 100 十六 软件测试技术 100 16.1 软件测试基础 101 16.1.1 测试目标 101 16.1.2 测试原则 101 16.1.3 可测试性 102 16.2 测试用例设计 104 16.3 白盒测试 104 16.4 基本路径测试 105 16.4.1 流图符号 105 16.4.2 环形复杂性 106 16.4.3 导出测试用例 106 16.4.4 图矩阵 108 16.5 控制结构测试 108 16.5.1 条件测试 108 16.5.2 数据流测试 110 16.5.3 循环测试 111 16.6 黑盒测试 112
基于JSP酒店管理系统设计软件程序源码+数据库+WORD毕业设计论文文档。介绍思路 1 《酒店管理系统》 资源目录介绍 2 安装配置 1)前期准备 a、安装好MySQL数据库,用户名root,密码root b、安装配置java环境(JDK1.7+,当前JDK1.8.0_152) c、安装配置好Tomcat(Tomcat7+,当前Tomcat7.0.69) 2)初始化数据库 a、创建db_jiudian数据库 b、执行数据库脚本文件,初始化数据库 3)部署酒店系统 4)启动测试 3 功能介绍 1)基本操作 2)客户管理 3)客房管理 4)菜品管理 5)餐桌预定 6)餐饮消费管理 目 录 摘要 i ABSTRACT ii 1 .绪论 1 1.1课题背景 1 1.2目的和意义 1 1.3开发工具及技术 1 1.3.1开发工具 1 1.3.2 JSP 2 1.3.4 MVC简介 2 1.4软件和硬件需求 3 1.5本章小结 3 2 .需求分析 4 2.1需求调研 4 2.2可行性分析 4 2.2.1技术的可行性 4 2.2.2经济的可行性 4 2.2.3操作可行性 4 2.2.4法律的可行性 4 2.3系统用户用例图 5 2.3.1管理员用例图 5 2.4功能模块需求分析 5 2.5性能需求 6 2.5.1系统的安全性 6 2.5.2数据的完整性 6 2.6本章小结 6 3. 系统分析与设计 7 3.1系统模块设计 7 3.1.1总体设计框架 7 3.1.2总体设计模块 7 3.2数据库的分析与设计 8 3.2.1 数据库的概念结构设计 8 3.2.2数据库的逻辑结构设计 9 3.2.2数据库的连接原理 11 3.3设计思想 12 3.4详细设计 12 3.4.1 登录模块设计 12 3.4.2客房管理模块设计 12 3.4.3客户模块设计 13 3.4.4 特色菜品介绍模块设计 13 3.4.5餐桌预订模块设计 14 3.4.6餐饮消费管理模块设计 14 3.5本章小结 14 4. 系统功能实现 15 4.1系统登陆页面实现 15 4.2总体功能模块 16 4.2.1管理员管理 16 4.2.2客房类别管理 18 4.2.3客房信息管理 20 4.2.4客房预订信息管理 22 4.2.5客户信息管理 23 4.2.6特色餐饮管理 24 4.2.7餐桌预订管理 25 4.2.8客户消费管理 26 4.3本章小结 28 5. 系统测试 ..29 5.1系统测试的目的和意义 29 5.2测试原则 29 5.3测试目标 29 5.4测试用例设计的原则 29 5.5测试过程 30 5.5.1主页面的登录模块测试 30 5.5.2修改密码测试 31 5.5.3客户添加测试 32 5.5.4客房预订添加测试 33 5.5.5客户信息查询测试 33 5.5.6其余模块测试 34 5.6中文乱码问题 34 5.7其他错误 34 结 论 36 参考文献 37 致 谢 38 外文文献及翻译 39 1 绪论 1.1课题背景 中国改革开放以后,我国大力发展经济、教育、旅游等等先进产业链,人们对于外出旅游和群体聚餐的需求越来越大。而且我国的良好的科学教育水平和人民文化素质的提高,为酒店管理系统提供了良好的机遇和前景。 采用现代化开发模式,能够方便快捷的对酒店进行有效的管理了解酒店的具体情况,同时提供令顾客满意的服务,提高了效率。顾客可以方便地了解酒店的客房情况和餐饮情况,进行提前预订消费。目前,由于中小型酒店缺少必要的资金和人员,仍采用手工记录和打电话咨询的方式,对酒店管理和顾客预订都很不方便,而且极其容易出错。所以开发一套适合的用于中小酒店的酒店管理系统是非常符合当代的条件,既可以节约软件开发成本预算,也可以提高酒店服务水平。 1.2目的和意义 人们现在越来越注重精神上的满足,排除了学习读书等消遣方式之外,外出参加旅游和组织聚餐也成为当下放松心情,缓解压力的重要环节。因此对酒店的入住情况和餐饮服务质量的及时了解是十分有必要的。而且随着顾客对酒店的需求越来大,和酒店有关的信息也就越来越多,单靠人力已经无法完成必要的信息记忆和信息整理,由此得出,我们必须要一套完善的酒店管理系统满足顾客的需求,提供对酒店管理的效率。酒店管理系统可以帮助我们完成对信息的有效存储和永不丢失,也能对信息进行有效整理,极大缓解了人员的工作负担。而且能够知道所需要的具体信息,执行效率也是非常方便快捷,几乎不会出错。以上种种可以看出来,通过使用酒店管理系统能够更加有效的对酒店进行管理和有效的进行信息处理,这样就可以达到
第1章 Java EE的基本知识 1 1.1 Java EE的出现及其特点 1 1.2 Java EE的分层模型和平台组成 4 1.2.1 Java EE的分层模型 4 1.2.2 Java EE的结构变形 5 1.2.3 Java EE平台的组成 7 1.3 Java EE参与人员的角色 9 1.4 开发工具Eclipse 10 1.5 小结 13 第2章 使用Jakarta Commons来简化开发 14 2.1 Jakarta Commons的功能和用法 14 2.2 小结 18 第3章 Java EE容器 19 3.1 什么是容器 19 3.2 Tomcat的安装和使用 20 3.3 小结 25 第4章 在Java EE中使用XML 26 4.1 什么是XML 26 4.1.1 理解XML 26 4.1.2 XML的语法 27 4.1.3 XML命名空间 31 4.2 XML能用来干什么 32 4.3 用DTD验证XML文档 33 4.4 用Schema验证XML文档 35 4.4.1 使用XML Schema 35 4.4.2 Schema的语法 37 4.5 用JAXP读写XML 44 4.6 Java EE中的JAXB 55 4.7 小结 64 第5章 使用Java Servlet开发动态网页 65 5.1 Servlet的概念和生命周期 65 5.2 如何编写Servlet 67 5.3 使用Eclipse和Tomcat开发Servlet实例——输出字符串响应 72 5.4 小结 77 第6章 JSP——前后台更好地分离 79 6.1 JSP的概念 79 6.2 JSP页面的组成 80 6.2.1 JSP的指令元素 82 6.2.2 JSP的脚本元素 83 6.2.3 JSP的标准动作元素 85 6.2.4 JSP中的内置对象 87 6.3 实例——利用JSP制作图片缩略图 87 6.4 小结 90 第7章 JSTL——JSP标准标签库 91 7.1 JSTL基础 91 7.1.1 JSTL的核心标签库 92 7.1.2 JSTL中使用表达式语言 93 7.2 实例——利用JSTL标签生成数字序列 95 7.3 小结 97 第8章 JavaBean组件 98 8.1 JavaBean是什么 98 8.2 实例——在JSP中调用JavaBean 99 8.3 小结 106 第9章 开源Web开发框架Struts 107 9.1 Struts框架基础 107 9.1.1 Struts框架的出现及其优点 107 9.1.2 Struts的MVC框架 108 9.2 Struts的配置 110 9.2.1 配置Web.xml 110 9.2.2 配置Struts-config.xml 111 9.2.3 多个配置文件的使用 120 9.3 Struts的各种组件 121 9.3.1 Struts的处理流程 122 9.3.2 ActionServlet 123 9.3.3 Action类 123 9.3.4 ActionForm 125 9.3.5 ActionMapping 126 9.4 Struts标签 127 9.4.1 如何使用Struts标签 127 9.4.2 HTML标签 128 9.4.3 Bean标签 134 9.4.4 Logic标签 136 9.4.5 Nested标签 137 9.5 小结 138 第10章 新一代的Struts 2 139 10.1 Struts 2框架的特点 140 10.2 实例——Struts 2的“Hello World” 143 10.3 小结 151 第11章 利用JDBC访问数据库 152 11.1 JDBC基础 152 11.1.1 如何用JDBC访问数据库 152 11.2 实例——利用JDBC访问SQL Server数据库 154 11.3 小结 156 第12章 利用Hibernate访问数据库 157 12.1 ORM——关系-对象映射的概念 157 12.2 Hibernate基础 158 12.2.1 POJO对象 158 12.2.2 Hibernate映射文件 159 12.2.3 Hibernate配置文件 159 12.3 使用Hibernate 161 12.4 小结 165 第13章 Struts和Hibernate实例——两个与登录有关的实例 166 13.1 Struts和Hibernate的开发环境配置 166 13.1.1 数据库的安装和管理 166 13.1.2 Hibernate的安装 168 13.1.3 Struts的安装 169 13.2 实例一:用户密码验证和登录 170 13.2.1 总体设计 170 13.2.2 具体实现 170 13.2.3 实例小结 185 13.3 实例二:用户密码修改 185 13.3.1 总体设计 186 13.3.2 具体实现 186 13.3.3 运行实例 201 13.4 小结 201 第14章 JSF——类Swing的Web开发框架 202 14.1 JSF基础 202 14.2 实例——JSF处理用户登录 209 14.3 小结 215 第15章 利用JavaMail收发电子邮件 217 15.1 电子邮件协议和JavaMail 217 15.2 JavaMail核心类 218 15.2.1 Session类 218 15.2.2 Message类 218 15.2.3 Address类 219 15.2.4 Authenticator类 220 15.2.5 Transport类 220 15.2.6 Store和Folder类 220 15.3 实例——利用JavaMail收发邮件 221 15.3.1 准备阶段 221 15.3.2 编写发送邮件的实例 223 15.3.3 编写接收邮件的实例 235 15.4 小结 241 第16章 基于良好设计模式的Spring 243 16.1 Spring简介 243 16.2 实例——用Spring来打招呼 246 16.3 小结 248 第17章 JNDI和Java RMI远程调用 249 17.1 用Java RMI实现远程调用 250 17.2 利用JNDI定位资源 256 17.3 实例——分布式的HelloWorld 260 17.4 小结 264 第18章 Java消息服务 265 18.1 消息系统和JMS 265 18.1.1 JMS API 265 18.1.2 点对点消息模式 266 18.1.3 发布者/订阅者模式 267 18.1.4 同步和异步方式 268 18.2 编程模型 268 18.2.1 管理对象 269 18.2.2 连接对象 270 18.2.3 会话 270 18.2.4 消息产生者 270 18.2.5 消息消费者 271 18.2.6 消息 272 18.2.7 异常处理 272 18.3 实例——利用JMS收发消息 273 18.3.1 一个简单的点对点模式消息实例 273 18.3.2 一个简单的发布者/订阅者模式消息实例 279 18.4 小结 285 第19章 利用JXTA编写P2P应用 286 19.1 P2P模型 286 19.2 JXTA框架 288 19.3 实例——JXTA开发P2P实例 292 19.4 小结 296 第20章 实现业务逻辑的EJB 297 20.1 EJB基础知识 297 20.2 实例——利用EJB转换字符串 301 20.3 小结 307 第21章 Web Service 308 21.1 Web Service基础 308 21.2 实例——利用AXIS开发一个简单的Web Service 310 21.3 小结 314 第22章 Java EE的安全 315 22.1 利用JAAS进行验证和授权 315 22.2 利用JSSE进行安全传输 317 22.3 小结 317 第23章 Java EE的测试 319 23.1 开发者为什么需要学习测试 319 23.2 测试的基本概念 320 23.3 利用JUnit进行单元测试 324 23.4 利用StrutsTestCase对Struts进行测试 328 23.5 压力测试和JMeter 334 23.6 其他开源测试工具 339 23.7 小结 343
目录 第1章 Android计算平台简介  1.1 面向新PC的全新平台  1.2 Android的历史  1.3 Dalvik VM剖析  1.4 理解Android软件栈  1.5 使用Android SDK开发最终用户应用程序  1.5.1 Android模拟器  1.5.2 Android UI  1.5.3 Android基础组件  1.5.4 高级UI概念  1.5.5 Android Service组件  1.5.6 Android媒体和电话组件  1.5.7 Android Java包  1.6 利用Android源代码  1.7 本书的示例项目  1.8 小结  第2章 设置开发环境  2.1 设置环境  2.1.1 下载JDK 6  2.1.2 下载Eclipse 3.6  2.1.3 下载Android SDK  2.1.4 命令行窗口  2.1.5 安装ADT  2.2 了解基本组件  2.2.1 View  2.2.2 Activity  2.2.3 Intent  2.2.4 ContentProvider  2.2.5 Service  2.2.6 AndroidManifest.xml  2.2.7 AVD  2.3 Hello World!  2.4 AVD  2.5 剖析Android应用程序的结构  2.6 分析Notepad应用程序  2.6.1 加载和运行Notepad应用程序  2.6.2 分解应用程序  2.7 了解应用程序生命周期  2.8 调试应用程序  2.8.1 启动模拟器  2.8.2 StrictMode  2.8.3 参考资料  2.9 小结  第3章 使用Android资源  3.1 资源  3.1.1 字符串资源  3.1.2 布局资源  3.1.3 资源引用语法  3.1.4 定义资源ID供以后使用  3.1.5 已编译和未编译的Android资源  3.2 Android关键资源  3.3 使用任意XML资源文件  3.4 使用原始资源  3.5 使用资产  3.6 了解资源目录结构  3.7 资源和配置更改  3.8 参考资料URL  3.9 小结  第4章 ContentProvider  4.1 探索Android内置的ContentProvider  4.2 ContentProvider的架构  4.3 实现ContentProvider  4.4 练习图书提供程序  4.4.1 添加图书  4.4.2 删除图书  4.4.3 获取图书数量  4.4.4 显示图书列表  4.5 资源  4.6 小结  第5章 Intent  5.1 Android Intent基础知识  5.2 Android中可用的Intent  5.3 Intent的组成  5.3.1 Intent和数据URI  5.3.2 一般操作  5.3.3 使用extra信息  5.3.4 使用组件直接调用活动  5.3.5 Intent类别  5.3.6 将Intent解析为组件的规则  5.4 练习使用ACTION_PICK  5.5 练习使用GET_CONTENT操作  5.6 挂起的Intent  5.7 资源  5.8 小结  第6章 构建用户界面和使用控件  6.1 Android中的UI开发  6.1.1 完全利用代码来构建UI  6.1.2 完全使用XML构建UI  6.1.3 使用XML结合代码构建UI  6.2 Android中的常见控件  6.2.1 文本控件  6.2.2 按钮控件  6.2.3 ImageView控件  6.2.4 日期和时间控件  6.2.5 MapView控件  6.3 适配器  6.3.1 SimpleCursorAdapter  6.3.2 了解ArrayAdapter  6.4 结合使用适配器和AdapterView  6.4.1 基本的列表控件:ListView  6.4.2 GridView控件  6.4.3 Spinner控件  6.4.4 Gallery控件  6.4.5 创建自定义适配器  6.4.6 Android中的其他控件  6.5 样式和主题  6.5.1 使用样式  6.5.2 使用主题  6.6 布局管理器  6.6.1 LinearLayout布局管理器  6.6.2 TableLayout布局管理器  6.6.3 RelativeLayout布局管理器  6.6.4 FrameLayout布局管理器  6.6.5 为各种设备配置自定义布局  6.7 使用Hierarchy Viewer调试和优化布局  6.8 参考资料  6.9 小结  第7章 使用菜单  7.1 Android菜单  7.1.1 创建菜单  7.1.2 使用菜单组  7.2 响应菜单项  7.3 创建测试工具来测试菜单  7.4 使用其他菜单类型  7.4.1 展开的菜单  7.4.2 使用图标菜单  7.4.3 使用子菜单  7.4.4 配置系统菜单  7.4.5 使用上下文菜单  7.4.6 使用交替菜单  7.4.7 使用菜单响应数据变化  7.5 通过XML文件加载菜单  7.5.1 XML菜单资源文件的结构  7.5.2 填充XML菜单资源文件  7.5.3 响应基于XML的菜单项  7.5.4 其他XML菜单标记简介  7.6 资源  7.7 小结  第8章 使用对话框  8.1 使用Android中的对话框  8.1.1 设计提醒对话框  8.1.2 设计提示对话框  8.1.3 Android对话框的特性  8.1.4 重新设计提示对话框  8.2 使用托管对话框  8.2.1 理解托管对话框协议  8.2.2 将非托管对话框重新转换为托管对话框  8.2.3 简化托管对话框协议  8.3 使用Toast  8.4 资源  8.5 小结  第9章 管理和组织首选项  9.1 探索首选项框架  9.1.1 ListPreference  9.1.2 CheckBoxPreference  9.1.3 EditTextPreference  9.1.4 RingtonePreference  9.2 组织首选项  9.3 以编程方式操作首选项  9.4 使用首选项保存状态  9.5 参考资料  9.6 小结  第10章 探索安全性和权限  10.1 理解Android安全性模型  10.1.1 安全性概念概述  10.1.2 为部署签名应用程序  10.2 执行运行时安全性检查  10.2.1 进程边界上的安全性  10.2.2 声明和使用权限  10.2.3 理解和使用自定义权限  10.2.4 理解和使用URI权限  10.3 参考资料  10.4 小结  第11章 构建和使用服务  11.1 使用HTTP服务  11.1.1 将HttpClient用于HTTPGET请求  11.1.2 将HttpClient用于HTTPPOST请求(多部分POST请求示例)  11.1.3 SOAP、JSON和XML分析程序  11.1.4 处理异常  11.1.5 解决多线程问题  11.1.6 有趣的超时  11.1.7 使用HttpURLConnection  11.1.8 使用AndroidHttpClient  11.1.9 使用后台线程(AsyncTask)  11.1.10 使用AsyncTask处理配置更改  11.1.11 使用DownloadManager获取文件  11.2 使用Android服务  11.2.1 Android中的服务  11.2.2 本地服务  11.2.3 AIDL服务  11.2.4 在AIDL中定义服务接口  11.2.5 实现AIDL接口  11.2.6 从客户端应用程序调用服务  11.2.7 向服务传递复杂的类型  11.3 使用服务的真实示例  11.3.1 Google翻译API  11.3.2 使用Google翻译API  11.4 参考资料  11.5 小结  第12章 包  12.1 包和进程  12.1.1 包规范的细节  12.1.2 将包名称转换为进程名称  12.1.3 列出安装的包  12.1.4 通过包浏览器删除包  12.2 包签名过程回顾  12.2.1 理解数字签名:场景1  12.2.2 理解数字签名:场景2  12.2.3 一种理解数字签名的模式  12.2.4 数字签名执行方式  12.2.5 签名过程的影响  12.3 在包之间共享数据  12.3.1 共享用户ID的性质  12.3.2 共享数据的代码模式  12.4 库项目  12.4.1 库项目的概念  12.4.2 库项目的性质  12.4.3 创建库项目  12.4.4 创建使用库的Android项目  12.5 参考资料  12.6 小结  第13章 处理程序  13.1 Android组件和线程  13.1.1 活动在主线程上运行  13.1.2 广播接收程序在主线程上运行  13.1.3 服务在主线程上运行  13.1.4 ContentProvider在主线程上运行  13.1.5 单一主线程的影响  13.1.6 线程池、ContentProvider、外部服务组件  13.1.7 线程实用程序:发现线程  13.2 处理程序  13.2.1 持有主线程的影响  13.2.2 使用处理程序延迟主线程上的工作  13.2.3 延迟工作的处理程序源代码示例  13.2.4 构造合适的Message对象  13.2.5 将Message对象发送给队列  13.2.6 响应handleMessage回调  13.3 使用工作线程  13.3.1 从菜单调用工作线程  13.3.2 在工作线程与主线程之间通信  13.3.3 线程行为概述  13.4 处理程序示例驱动程序类  13.4.1 驱动程序活动文件  13.4.2 布局文件  13.4.3 菜单文件  13.4.4 描述文件  13.5 组件和进程寿命  13.5.1 活动生命周期  13.5.2 服务生命周期  13.5.3 接收程序生命周期  13.5.4 提供程序生命周期  13.6 代码编译说明  13.6.1 从ZIP文件创建项目  13.6.2 从代码清单创建项目  13.7 参考资料  13.8 小结  第14章 广播接收程序和长期运行的服务  14.1 广播接收程序  14.1.1 发送广播  14.1.2 编写简单的接收程序:示例代码  14.1.3 在描述文件中注册接收程序  14.1.4 发送测试广播  14.1.5 容纳多个接收程序  14.1.6 进程外接收程序项目  14.2 从接收程序使用通知  14.2.1 通过通知管理器监控通知  14.2.2 发送通知  14.3 长期运行的接收程序和服务  14.3.1 长期运行的广播接收程序协议  14.3.2 IntentService  14.3.3 IntentService源代码  14.4 为广播接收程序扩展IntentService  14.4.1 长期运行的广播服务抽象  14.4.2 长期运行的接收程序  14.4.3 使用LightedGreenRoom抽象唤醒锁  14.5 长期运行的服务的实现  14.5.1 非粘滞性服务的细节  14.5.2 粘滞性服务的细节  14.5.3 非粘滞性的变体:重传送(redeliver)Intent  14.5.4 在onStartCommand中指定服务标志  14.5.5 挑选合适的粘滞性  14.5.6 从两个位置控制唤醒锁  14.5.7 长期运行的服务的实现  14.5.8 测试长期运行的服务  14.6 代码编译说明  14.6.1 从ZIP文件创建项目  14.6.2 通过代码清单创建项目  14.7 参考资料  14.8 小结  第15章 闹钟管理器  15.1 闹钟管理器基本知识:设置一个简单的闹钟  15.1.1 获取闹钟管理器  15.1.2 设置闹钟时间  15.1.3 设置闹钟接收程序  15.1.4 创建适合闹钟的PendingIntent  15.1.5 设置闹钟  15.1.6 测试项目  15.2 探索其他闹钟管理器场景  15.2.1 设置重复闹钟  15.2.2 取消闹钟  15.2.3 使用多个闹钟  15.2.4 Intent在设置闹钟时的首要职责  15.2.5 闹钟的持久化  15.3 闹钟管理器事实  15.4 参考资料  15.5 小结  第16章 2D动画揭秘  16.1 逐帧动画  16.1.1 计划逐帧动画  16.1.2 创建活动  16.1.3 将动画添加到活动  16.2 布局动画  16.2.1 基本的补间动画类型  16.2.2 计划布局动画测试工具  16.2.3 创建活动和ListView  16.2.4 将ListView制作成动画  16.2.5 使用插值器  16.3 视图动画  16.3.1 理解视图动画  16.3.2 添加动画  16.3.3 使用Camera实现2D图像的深度效果  16.3.4 探索AnimationListener类  16.3.5 关于变换矩阵的一些说明  16.4 资源  16.5 小结  第17章 地图和基于位置的服务  17.1 地图包  17.1.1 从Google获取map-api密钥  17.1.2 MapView和MapActivity  17.1.3 使用覆盖图添加标记  17.2 位置包  17.2.1 使用Android进行地理编码  17.2.2 使用后台线程进行地理编码  17.2.3 LocationManager服务  17.2.4 使用MyLocationOverlay显示位置  17.2.5 使用接近提醒  17.3 参考资料  17.4 小结  第18章 电话API  18.1 使用SMS  18.1.1 发送SMS消息  18.1.2 监视传入的SMS消息  18.1.3 使用SMS文件夹  18.1.4 发送电子邮件  18.2 使用电话管理器  18.3 SIP  18.4 参考资料  18.5 小结  第19章 媒体框架  19.1 使用媒体API  19.2 播放媒体  19.2.1 播放音频内容  19.2.2 播放视频内容  19.3 录制媒体  19.3.1 使用MediaRecorder录制音频  19.3.2 使用AudioRecord录制音频  19.3.3 视频录制  19.3.4 MediaStore类  19.3.5 使用Intnet录制音频  19.3.6 将媒体内容添加到媒体存储  19.3.7 为整个SD卡触发MediaScanner  19.3.8 参考资料  19.4 小结  第20章 使用OpenGL进行3D图形编程  20.1 了解OpenGL的历史和背景  20.1.1 OpenGL ES  20.1.2 OpenGL ES与Java ME  20.1.3 M3G:另一种Java ME 3D图形标准  20.2 OpenGL的基本原理  20.2.1 使用OpenGL ES进行基本绘制  20.2.2 OpenGL照相机和坐标  20.3 在Android中使用OpenGL ES  20.3.1 使用GLSurfaceView和相关类  20.3.2 实现Renderer  20.3.3 通过Activity使用GLSurfaceView  20.3.4 更改照相机设置  20.3.5 使用索引添加另一个三角形  20.3.6 为简单的OpenGL三角形制作动画  20.4 OpenGL的运用:形状和纹理  20.4.1 绘制矩形  20.4.2 使用形状  20.4.3 使用纹理  20.4.4 绘制多个图形  20.5 OpenGL ES 2.0  20.5.1 针对OpenGL ES 2.0的Java绑定  20.5.2 呈现步骤  20.5.3 着色器  20.5.4 将着色器编译到程序中  20.5.5 访问着色器程序变量  20.5.6 简单的ES 2.0三角形  20.5.7 关于OpenGL ES 2.0的更多阅读材料  20.6 代码编译说明  20.7 小结  第21章 活动文件夹  21.1 探索活动文件夹  21.1.1 用户如何使用活动文件夹  21.1.2 构建活动文件夹  21.2 代码编译说明  21.3 参考资料  21.4 小结  第22章 主屏幕部件  22.1 主屏幕部件的架构  22.1.1 什么是主屏幕部件  22.1.2 主屏幕部件的用户体验  22.1.3 部件的生命周期  22.2 示例部件应用程序  22.2.1 定义部件提供程序  22.2.2 定义部件尺寸  22.2.3 与部件布局相关的文件  22.2.4 实现部件提供程序  22.2.5 实现部件模型  22.2.6 实现部件配置活动  22.3 部件局限性和扩展  22.4 资源  22.5 小结  第23章 Android搜索  23.1 Android搜索体验  23.1.1 探索Android全局搜索  23.1.2 为全局搜索启用建议提供程序  23.2 活动与搜索键交互  23.2.1 常规活动上的搜索键行为  23.2.2 禁用了搜索的活动的行为  23.2.3 通过菜单显式调用搜索  23.2.4 本地搜索和相关活动  23.2.5 启用键入搜索  23.3 实现简单建议提供程序  23.3.1 计划简单建议提供程序  23.3.2 简单建议提供程序实现文件  23.3.3 实现SimpleSuggestion-Provider类  23.3.4 简单建议提供程序搜索活动  23.3.5 搜索调用方活动  23.3.6 简单建议提供程序用户体验  23.4 实现自定义建议提供程序  23.4.1 计划自定义建议提供程序  23.4.2 SuggestURLProvider项目实现文件  23.4.3 实现SuggestUrlProvider类  23.4.4 实现自定义建议提供程序的搜索活动  23.4.5 自定义建议提供程序描述文件  23.4.6 自定义建议用户体验  23.5 使用操作键和应用程序特有的搜索数据  23.5.1 在Android搜索中使用操作键  23.5.2 使用应用程序特定的搜索上下文  23.6 资源  23.7 对平板电脑的意义  23.8 小结  第24章 文本到语音转换  24.1 Android中的文本到语音转换  24.2 使用语段跟踪语音  24.3 使用音频文件代替话音  24.4 TTS引擎的高级功能  24.4.1 设置音频流  24.4.2 使用耳标  24.4.3 播放静音  24.4.4 选择不同的文本到语音转换引擎  24.4.5 使用语言方法  24.5 参考资料  24.6 小结  第25章 触摸屏  25.1 MotionEvent  25.1.1 MotionEvent 对象  25.1.2 回收MotionEvent  25.1.3 使用VelocityTracker  25.1.4 探索拖放操作  25.2 多点触摸  25.2.1 Android2.2之前的多点触摸  25.2.2 自Android 2.2开始的多点触摸  25.3 触摸地图  25.4 手势  25.4.1 捏合手势  25.4.2 GestureDetector和OnGestureListener  25.4.3 自定义手势  25.4.4 Gestures Builder应用程序  25.5 参考资料  25.6 小结  第26章 传感器  26.1 什么是传感器  26.1.1 检测传感器  26.1.2 可以了解的传感器信息  26.2 获取传感器事件  26.3 解释传感器数据  26.3.1 光线传感器  26.3.2 接近传感器  26.3.3 温度传感器  26.3.4 压力传感器  26.3.5 陀螺仪传感器  26.3.6 加速度计  26.3.7 磁场传感器  26.3.8 结合使用加速度计和磁场传感器  26.3.9 方向传感器  26.3.10 磁偏角和GeomagneticField  26.3.11 重力传感器  26.3.12 直线加速度传感器  26.3.13 旋转矢量传感器  26.3.14 近场通信传感器  26.4 参考资料  26.5 小结  第27章 联系人API  27.1 账户  27.1.1 账户屏幕概览  27.1.2 账户与联系人的相关性  27.1.3 枚举账户  27.2 联系人应用程序  27.2.1 显示联系人  27.2.2 显示联系人详细信息  27.2.3 编辑联系人详细信息  27.2.4 设置联系人的照片  27.2.5 导出联系人  27.2.6 各种联系人数据类型  27.3 联系人  27.3.1 内容SQLite数据库  27.3.2 原始联系人  27.3.3 数据表  27.3.4 聚合联系人  27.3.5 view_contacts  27.3.6 contact_entities_view  27.4 联系人API  27.4.1 浏览账户  27.4.2 浏览聚合联系人  27.4.3 浏览原始联系人  27.4.4 浏览原始联系人数据  27.4.5 添加联系人和它的详细信息  27.5 控制聚合  27.6 同步的影响  27.7 参考资料  27.8 小结  第28章 使用Android Market  28.1 成为发布者  28.1.1 遵守规则  28.1.2 开发人员控制台  28.2 准备销售应用程序  28.2.1 针对不同设备进行测试  28.2.2 支持不同的屏幕尺寸  28.2.3 准备上传AndroidManifest.xml  28.2.4 本地化应用程序  28.2.5 准备应用程序图标  28.2.6 付费应用程序考虑因素  28.2.7 将用户引导至Market  28.2.8 Android授权服务  28.2.9 准备上传.apk文件  28.3 上传应用程序  28.4 Android Market上的用户体验  28.5 更多发布途径  28.6 参考资料  28.7 小结  第29章 多用途的碎片  29.1 什么是碎片  29.1.1 何时使用碎片  29.1.2 碎片的结构  29.1.3 碎片的生命周期  29.1.4 展示生命周期的示例碎片应用程序  29.2 FragmentTransactions和碎片后退栈  29.3 FragmentManager  29.3.1 引用碎片时的注意事项  29.3.2 ListFragments和  29.3.3 在需要时调用独立的活动  29.3.4 碎片的持久化  29.4 对话框碎片  29.4.1 DialogFragment基础知识  29.4.2 DialogFragments示例应用程序  29.5 碎片之间的更多通信方式  29.6 使用ObjectAnimator自定义动画  29.7 参考资料  29.8 小结  第30章 ActionBar  30.1 ActionBar剖析  30.2 选项卡导航操作栏活动  30.2.1 实现基础活动类  30.2.2 为ActionBar分配统一的行为  30.2.3 实现选项卡监听器  30.2.4 实现选项卡操作栏活动  30.2.5 可滚动的调试文本视图布局  30.2.6 操作栏和菜单交互  30.2.7 Android描述文件  30.2.8 测试选项卡操作栏活动  30.3 列表导航操作栏活动  30.3.1 创建SpinnerAdapter  30.3.2 创建列表监听器  30.3.3 设置列表操作栏  30.3.4 更改BaseActionBar-Activity  30.3.5 更改AndroidManifest.xml  30.3.6 测试列表操作栏活动  30.4 标准导航操作栏活动  30.4.1 标准导航操作栏活动  30.4.2 更改BaseActionBar-Activity  30.4.3 更改AndroidManifest.xml  30.4.4 测试标准操作栏活动  30.5 参考资料  30.6 小结  第31章 3.0版中的更多主题  31.1 基于列表的主屏幕部件  31.1.1 3.0版中新的远程视图  31.1.2 在远程视图中使用列表  31.1.3 应用示例:测试主屏幕列表部件  31.1.4 对测试列表部件进行测试  31.2 拖放  31.2.1 3.0版中拖放的基础知识  31.2.2 拖放示例应用程序  31.2.3 测试示例拖放应用程序  31.3 参考资料  31.4 小结 
软件性能测试过程详解与案例剖析  第一部分 基础篇   第1章 软件性能测试基本概念   1.1什么是软件性能   1.1.1用户视角的软件性能   1.1.2管理员视角的软件性能   1.1.3开发视角的软件性能   1.1.4总结   1.2软件性能的几个主要术语   1.2.1响应时间   1.2.2并发用户数   1.2.3吞吐量   1.2.4性能计数器   1.2.5思考时间   1.3软件性能测试方法论   1.3.1SEI负载测试计划过程   1.3.2RBI方法   1.3.3性能下降曲线分析法   1.3.4LoadRunner的性能测试过程   1.3.5Segue提供的性能测试过程   1.3.6本书提供的PTGM模型   1.4本章小结    第2章 性能测试的应用领域   2.1性能测试的方法   2.1.1性能测试   2.1.2负载测试   2.1.3压力测试   2.1.4配置测试   2.1.5并发测试   2.1.6可靠性测试   2.1.7失效恢复测试   2.2性能测试应用领域分析   2.2.1能力验证   2.2.2规划能力   2.2.3性能调优   2.2.4发现缺陷   2.2.5总结   2.3本章小结    第3章 性能计数器及性能分析方法   3.1操作系统计数器及分析   3.1.1Windows操作系统的主要计数器   3.1.2UNIX操作系统的主要计数器   3.1.3内存分析方法   3.1.4处理器分析方法   3.1.5磁盘I/O分析方法   3.1.6进程分析方法   3.1.7网络分析方法   3.2应用服务器计数器   3.2.1IIS应用服务器计数器   3.2.2J2EE应用服务器计数器   3.3数据库计数器   3.4本章小结    第4章 性能测试工具原理   4.1性能测试工具模型   4.2性能测试脚本录制时的协议类型   4.3性能测试工具的选择与评估   4.4本章小结    第5章 性能测试的组织   5.1性能测试团队的人员构成   5.2性能测试的过程模型   5.2.1测试前期准备   5.2.2测试工具引入   5.2.3测试计划   5.2.4测试设计与开发   5.2.5测试执行与管理   5.2.6测试分析   5.3本章小结    第二部分 实践篇   第6章 案例一某制造型企业信息化项目的性能测试   6.1项目背景   6.2项目特点   6.3性能测试过程   6.3.1测试前期准备   6.3.2测试工具引入   6.3.3测试计划   6.3.4测试设计与开发   6.3.5测试执行与管理   6.3.6测试分析   6.4案例小结    第7章 案例二某省电信公司业务系统的性能测试   7.1项目背景   7.2项目特点   7.3性能测试过程   7.3.1测试前期准备   7.3.2测试工具引入   7.3.3测试计划   7.3.4测试设计与开发   7.3.5测试执行与管理   7.3.6测试分析   7.4案例小结    第8章 案例三某通信企业的Web业务系统性能测试   8.1项目背景   8.2项目特点   8.3性能测试过程   8.3.1测试前期准备   8.3.2测试工具引入   8.3.3测试计划   8.3.4测试设计与开发   8.3.5测试执行与管理   8.3.6测试分析   8.4案例小结    第9章 案例四某集成商的性能选型测试   9.1项目背景   9.2项目特点   9.3性能测试过程   9.3.1测试前期准备   9.3.2测试工具引入   9.3.3测试计划   9.3.4测试设计与开发   9.3.5测试执行与管理   9.3.6测试分析   9.4案例小结
第1章 性能调整概述 1.1 性能概述 1.2 性能评估 1.3 建立性能目标 1.4 什么时候需要做性能调整 1.5 性能调整准则 1.6 性能调整的方法和过程 1.7 性能调整总结 第2章 存储I/O设计 2.1 存储基本概念 2.2 存储架构 2.3 存储相关性能调整案例 2.4 存储I/O设计总结 第3章 操作系统相关性能问题 3.1 HP-UX系统性能监控综述 3.2 AIX性能监控综述 3.3 操作系统性能优化 3.4 逻辑卷和lvmo优化 3.5 总结 第4章 数据库物理设计和逻辑设计 4.1 数据库物理设计 4.2 数据库逻辑设计 4.3 使用Autoconfig设计数据库 4.4 其他高级设计技术 4.5 数据库设计总结 第5章 DB2性能监控 5.1 快照监视器案例 5.2 事件监视器及监控案例 5.3 利用表函数监控 5.4 性能管理视图及案例 5.5 db2pd 5.6 db2mtrk及监控案例 5.7 本章小结 第6章 数据库配置参数调整 6.1 数据库配置参数 6.2 监控和调优实例(DBM)配置参数 6.3 监控和调优DB配置参数 6.4 调整DB2概要注册变量 6.5 内存自动调优 6.6 总结 第7章 锁和并发 7.1 锁等待及调整案例 7.2 锁升级及调整案例 7.3 死锁及调整案例 7.4 隔离级别与锁 7.5 最大化并发性 7.6 锁相关的性能问题总结 7.7 锁与应用程序开发 7.8 本章小结 第8章 索引设计与优化 8.1 索引概念 8.2 索引结构 8.3 理解索引访问机制 8.4 索引设计 8.5 索引创建原则与示例 8.6 影响索引性能的相关配置 8.7 索引维护 8.8 DB2 Design Advisor(db2advis) 8.9 索引调整总结 第9章 DB2优化器 9.1 DB2优化器介绍 9.2 SQL语句执行过程 9.3 优化器组件和工作原理 9.4 扫描方式 9.5 连接方法 9.6 优化级别 9.7 如何影响优化器来提高性能 9.8 优化器总结 第10章 统计信息更新与碎片整理 10.1 统计信息更新 10.2 碎片整理 10.3 重新绑定程序包 10.4 本章小结 第11章 SQL语句调优 11.1 通过监控找出最消耗资源的SQL语句 11.2 通过解释工具分析SQL语句执行计划 11.3 理解SQL语句如何工作 11.4 SQL调优案例 11.5 提高应用程序性能 第12章 DB2调优案例、问题总结和技巧 12.1 调优案例一:某移动公司存储设计不当和SQL引起的I/O瓶颈 12.2 调优案例二:某银行知识库系统锁等待、锁升级引起性能瓶颈 12.3 调优案例三:某汽车制造商ERP系统通过调整统计信息提高性能 12.4 调优案例四:某农信社批量代收电费批处理慢调优案例 12.5 调优学习案例:利用压力测试程序学习DB2调优 后记
基于Java的物管系统设计与实现 目 录 摘 要 I Abstract II 引 言 1 1 相关技术介绍 3 1.1 JSP介绍 3 1.2 MySQL介绍 3 1.3 B/S开发模式 3 1.4 Java介绍 4 2 系统分析 5 2.1 可行性研究 5 2.1.1技术可行性 5 2.2.2经济可行性 5 2.3.1操作可行性 5 2.2 需求分析 6 2.2.1系统用例图 6 2.2.2系统功能模块需求分析 6 2.3 系统流程 8 3 系统设计 9 3.1 系统设计目标 9 3.2 系统功能设计 9 3.3 数据库设计 9 3.3.1数据库的概念结构设计 9 3.3.2数据库的逻辑结构设计 10 4 系统实现 15 4.1开发环境 15 4.2开发规范 15 4.3数据库实现 15 4.4 整体结构设计 15 4.5 系统登陆界面实现 16 4.6 管理员登陆界面后台 17 4.7 业主登陆界面后台 19 5 系统测试 21 5.1 测试定义 21 5.2 测试目的 21 5.3 测试用例 21 5.4 压力测试 22 5.5 测试结论 22 结 论 23 致 谢 24 参考文献 25 摘 要 在如今的这个网络覆盖的社会生活中,老旧小区的物业管理都是人工来实现的,工作实施起来会非常的复杂而且不方便,管理层非常不利于管理。而现在计算机都可以轻松实现。现在随着小区的规模越来越大,物业公司需要进行管理的数据也就越来越多,所以说原本简单的信息管理系统也就已经不可以满足管理者对物业处理的需求,其中的问题主要表现在系统功能的单一,对物业公司相关业务数据信息的检索与统计操作不便等许多问题,而且在部署局域网之中的管理系统,不仅极大的增加了日常维护的成本,而且在一些有着多个小区需要管理的大型物业公司使用时,增加了工作量。 目前社会伴随着城市人口栖身的集中化越来越严重,老旧小区的人工管理模式也慢慢跟不上现在经济发达的社会,我们在这种情况下应该通过计算机网络来提供一个方便快捷的物业管理系统,来加大小区物业管理的工作效率,为业主们提供更好的便民服务。在这种情况之下,急需对小区物业管理系统进行整体改造升级,进而来提升管理者对小区物业管理的办公效率。对于小区物业管理系统来说,主要采用Java开发平台,采用MVC架构进行开发。目前主要预想实现的功能有管理员后台管理模块和业主用户后台管理模块。其中管理员后台角色分为四个,分别是主管、经理、安全管理员、收费管理员。 关键词:Java;物业管理;MySql;servlet;javaScript Abstract In today's social life covered by the network, the property management of the old community is realized manually. The implementation of the work will be very complex and inconvenient, and the management is not conducive to management. Now computers can be easily implemented. Now with the growing size of the community, the property companies need more and more data to manage, so the original simple information management system has not been able to meet the needs of managers for property processing. The main problems are the single function of the system, the inconvenience of retrieval and statistical operation of relevant business data and information of the property companies and many other problems, And in the deployment of the management system in the LAN, not only greatly increased the cost of daily maintenance, but also increased the workload in some large property companies that have multiple c
第1章 Android计算平台简介  1.1 面向新PC的全新平台  1.2 Android的历史  1.3 Dalvik VM剖析  1.4 理解Android软件栈  1.5 使用Android SDK开发最终用户应用程序  1.5.1 Android模拟器  1.5.2 Android UI  1.5.3 Android基础组件  1.5.4 高级UI概念  1.5.5 Android Service组件  1.5.6 Android媒体和电话组件  1.5.7 Android Java包  1.6 利用Android源代码  1.7 本书的示例项目  1.8 小结  第2章 设置开发环境  2.1 设置环境  2.1.1 下载JDK 6  2.1.2 下载Eclipse 3.6  2.1.3 下载Android SDK  2.1.4 命令行窗口  2.1.5 安装ADT  2.2 了解基本组件  2.2.1 View  2.2.2 Activity  2.2.3 Intent  2.2.4 ContentProvider  2.2.5 Service  2.2.6 AndroidManifest.xml  2.2.7 AVD  2.3 Hello World!  2.4 AVD  2.5 剖析Android应用程序的结构  2.6 分析Notepad应用程序  2.6.1 加载和运行Notepad应用程序  2.6.2 分解应用程序  2.7 了解应用程序生命周期  2.8 调试应用程序  2.8.1 启动模拟器  2.8.2 StrictMode  2.8.3 参考资料  2.9 小结  第3章 使用Android资源  3.1 资源  3.1.1 字符串资源  3.1.2 布局资源  3.1.3 资源引用语法  3.1.4 定义资源ID供以后使用  3.1.5 已编译和未编译的Android资源  3.2 Android关键资源  3.3 使用任意XML资源文件  3.4 使用原始资源  3.5 使用资产  3.6 了解资源目录结构  3.7 资源和配置更改  3.8 参考资料URL  3.9 小结  第4章 ContentProvider  4.1 探索Android内置的ContentProvider  4.2 ContentProvider的架构  4.3 实现ContentProvider  4.4 练习图书提供程序  4.4.1 添加图书  4.4.2 删除图书  4.4.3 获取图书数量  4.4.4 显示图书列表  4.5 资源  4.6 小结  第5章 Intent  5.1 Android Intent基础知识  5.2 Android中可用的Intent  5.3 Intent的组成  5.3.1 Intent和数据URI  5.3.2 一般操作  5.3.3 使用extra信息  5.3.4 使用组件直接调用活动  5.3.5 Intent类别  5.3.6 将Intent解析为组件的规则  5.4 练习使用ACTION_PICK  5.5 练习使用GET_CONTENT操作  5.6 挂起的Intent  5.7 资源  5.8 小结  第6章 构建用户界面和使用控件  6.1 Android中的UI开发  6.1.1 完全利用代码来构建UI  6.1.2 完全使用XML构建UI  6.1.3 使用XML结合代码构建UI  6.2 Android中的常见控件  6.2.1 文本控件  6.2.2 按钮控件  6.2.3 ImageView控件  6.2.4 日期和时间控件  6.2.5 MapView控件  6.3 适配器  6.3.1 SimpleCursorAdapter  6.3.2 了解ArrayAdapter  6.4 结合使用适配器和AdapterView  6.4.1 基本的列表控件:ListView  6.4.2 GridView控件  6.4.3 Spinner控件  6.4.4 Gallery控件  6.4.5 创建自定义适配器  6.4.6 Android中的其他控件  6.5 样式和主题  6.5.1 使用样式  6.5.2 使用主题  6.6 布局管理器  6.6.1 LinearLayout布局管理器  6.6.2 TableLayout布局管理器  6.6.3 RelativeLayout布局管理器  6.6.4 FrameLayout布局管理器  6.6.5 为各种设备配置自定义布局  6.7 使用Hierarchy Viewer调试和优化布局  6.8 参考资料  6.9 小结  第7章 使用菜单  7.1 Android菜单  7.1.1 创建菜单  7.1.2 使用菜单组  7.2 响应菜单项  7.3 创建测试工具来测试菜单  7.4 使用其他菜单类型  7.4.1 展开的菜单  7.4.2 使用图标菜单  7.4.3 使用子菜单  7.4.4 配置系统菜单  7.4.5 使用上下文菜单  7.4.6 使用交替菜单  7.4.7 使用菜单响应数据变化  7.5 通过XML文件加载菜单  7.5.1 XML菜单资源文件的结构  7.5.2 填充XML菜单资源文件  7.5.3 响应基于XML的菜单项  7.5.4 其他XML菜单标记简介  7.6 资源  7.7 小结  第8章 使用对话框  8.1 使用Android中的对话框  8.1.1 设计提醒对话框  8.1.2 设计提示对话框  8.1.3 Android对话框的特性  8.1.4 重新设计提示对话框  8.2 使用托管对话框  8.2.1 理解托管对话框协议  8.2.2 将非托管对话框重新转换为托管对话框  8.2.3 简化托管对话框协议  8.3 使用Toast  8.4 资源  8.5 小结  第9章 管理和组织首选项  9.1 探索首选项框架  9.1.1 ListPreference  9.1.2 CheckBoxPreference  9.1.3 EditTextPreference  9.1.4 RingtonePreference  9.2 组织首选项  9.3 以编程方式操作首选项  9.4 使用首选项保存状态  9.5 参考资料  9.6 小结  第10章 探索安全性和权限  10.1 理解Android安全性模型  10.1.1 安全性概念概述  10.1.2 为部署签名应用程序  10.2 执行运行时安全性检查  10.2.1 进程边界上的安全性  10.2.2 声明和使用权限  10.2.3 理解和使用自定义权限  10.2.4 理解和使用URI权限  10.3 参考资料  10.4 小结  第11章 构建和使用服务  11.1 使用HTTP服务  11.1.1 将HttpClient用于HTTPGET请求  11.1.2 将HttpClient用于HTTPPOST请求(多部分POST请求示例)  11.1.3 SOAP、JSON和XML分析程序  11.1.4 处理异常  11.1.5 解决多线程问题  11.1.6 有趣的超时  11.1.7 使用HttpURLConnection  11.1.8 使用AndroidHttpClient  11.1.9 使用后台线程(AsyncTask)  11.1.10 使用AsyncTask处理配置更改  11.1.11 使用DownloadManager获取文件  11.2 使用Android服务  11.2.1 Android中的服务  11.2.2 本地服务  11.2.3 AIDL服务  11.2.4 在AIDL中定义服务接口  11.2.5 实现AIDL接口  11.2.6 从客户端应用程序调用服务  11.2.7 向服务传递复杂的类型  11.3 使用服务的真实示例  11.3.1 Google翻译API  11.3.2 使用Google翻译API  11.4 参考资料  11.5 小结  第12章 包  12.1 包和进程  12.1.1 包规范的细节  12.1.2 将包名称转换为进程名称  12.1.3 列出安装的包  12.1.4 通过包浏览器删除包  12.2 包签名过程回顾  12.2.1 理解数字签名:场景1  12.2.2 理解数字签名:场景2  12.2.3 一种理解数字签名的模式  12.2.4 数字签名执行方式  12.2.5 签名过程的影响  12.3 在包之间共享数据  12.3.1 共享用户ID的性质  12.3.2 共享数据的代码模式  12.4 库项目  12.4.1 库项目的概念  12.4.2 库项目的性质  12.4.3 创建库项目  12.4.4 创建使用库的Android项目  12.5 参考资料  12.6 小结  第13章 处理程序  13.1 Android组件和线程  13.1.1 活动在主线程上运行  13.1.2 广播接收程序在主线程上运行  13.1.3 服务在主线程上运行  13.1.4 ContentProvider在主线程上运行  13.1.5 单一主线程的影响  13.1.6 线程池、ContentProvider、外部服务组件  13.1.7 线程实用程序:发现线程  13.2 处理程序  13.2.1 持有主线程的影响  13.2.2 使用处理程序延迟主线程上的工作  13.2.3 延迟工作的处理程序源代码示例  13.2.4 构造合适的Message对象  13.2.5 将Message对象发送给队列  13.2.6 响应handleMessage回调  13.3 使用工作线程  13.3.1 从菜单调用工作线程  13.3.2 在工作线程与主线程之间通信  13.3.3 线程行为概述  13.4 处理程序示例驱动程序类  13.4.1 驱动程序活动文件  13.4.2 布局文件  13.4.3 菜单文件  13.4.4 描述文件  13.5 组件和进程寿命  13.5.1 活动生命周期  13.5.2 服务生命周期  13.5.3 接收程序生命周期  13.5.4 提供程序生命周期  13.6 代码编译说明  13.6.1 从ZIP文件创建项目  13.6.2 从代码清单创建项目  13.7 参考资料  13.8 小结  第14章 广播接收程序和长期运行的服务  14.1 广播接收程序  14.1.1 发送广播  14.1.2 编写简单的接收程序:示例代码  14.1.3 在描述文件中注册接收程序  14.1.4 发送测试广播  14.1.5 容纳多个接收程序  14.1.6 进程外接收程序项目  14.2 从接收程序使用通知  14.2.1 通过通知管理器监控通知  14.2.2 发送通知  14.3 长期运行的接收程序和服务  14.3.1 长期运行的广播接收程序协议  14.3.2 IntentService  14.3.3 IntentService源代码  14.4 为广播接收程序扩展IntentService  14.4.1 长期运行的广播服务抽象  14.4.2 长期运行的接收程序  14.4.3 使用LightedGreenRoom抽象唤醒锁  14.5 长期运行的服务的实现  14.5.1 非粘滞性服务的细节  14.5.2 粘滞性服务的细节  14.5.3 非粘滞性的变体:重传送(redeliver)Intent  14.5.4 在onStartCommand中指定服务标志  14.5.5 挑选合适的粘滞性  14.5.6 从两个位置控制唤醒锁  14.5.7 长期运行的服务的实现  14.5.8 测试长期运行的服务  14.6 代码编译说明  14.6.1 从ZIP文件创建项目  14.6.2 通过代码清单创建项目  14.7 参考资料  14.8 小结  第15章 闹钟管理器  15.1 闹钟管理器基本知识:设置一个简单的闹钟  15.1.1 获取闹钟管理器  15.1.2 设置闹钟时间  15.1.3 设置闹钟接收程序  15.1.4 创建适合闹钟的PendingIntent  15.1.5 设置闹钟  15.1.6 测试项目  15.2 探索其他闹钟管理器场景  15.2.1 设置重复闹钟  15.2.2 取消闹钟  15.2.3 使用多个闹钟  15.2.4 Intent在设置闹钟时的首要职责  15.2.5 闹钟的持久化  15.3 闹钟管理器事实  15.4 参考资料  15.5 小结  第16章 2D动画揭秘  16.1 逐帧动画  16.1.1 计划逐帧动画  16.1.2 创建活动  16.1.3 将动画添加到活动  16.2 布局动画  16.2.1 基本的补间动画类型  16.2.2 计划布局动画测试工具  16.2.3 创建活动和ListView  16.2.4 将ListView制作成动画  16.2.5 使用插值器  16.3 视图动画  16.3.1 理解视图动画  16.3.2 添加动画  16.3.3 使用Camera实现2D图像的深度效果  16.3.4 探索AnimationListener类  16.3.5 关于变换矩阵的一些说明  16.4 资源  16.5 小结  第17章 地图和基于位置的服务  17.1 地图包  17.1.1 从Google获取map-api密钥  17.1.2 MapView和MapActivity  17.1.3 使用覆盖图添加标记  17.2 位置包  17.2.1 使用Android进行地理编码  17.2.2 使用后台线程进行地理编码  17.2.3 LocationManager服务  17.2.4 使用MyLocationOverlay显示位置  17.2.5 使用接近提醒  17.3 参考资料  17.4 小结  第18章 电话API  18.1 使用SMS  18.1.1 发送SMS消息  18.1.2 监视传入的SMS消息  18.1.3 使用SMS文件夹  18.1.4 发送电子邮件  18.2 使用电话管理器  18.3 SIP  18.4 参考资料  18.5 小结  第19章 媒体框架  19.1 使用媒体API  19.2 播放媒体  19.2.1 播放音频内容  19.2.2 播放视频内容  19.3 录制媒体  19.3.1 使用MediaRecorder录制音频  19.3.2 使用AudioRecord录制音频  19.3.3 视频录制  19.3.4 MediaStore类  19.3.5 使用Intnet录制音频  19.3.6 将媒体内容添加到媒体存储  19.3.7 为整个SD卡触发MediaScanner  19.3.8 参考资料  19.4 小结  第20章 使用OpenGL进行3D图形编程  20.1 了解OpenGL的历史和背景  20.1.1 OpenGL ES  20.1.2 OpenGL ES与Java ME  20.1.3 M3G:另一种Java ME 3D图形标准  20.2 OpenGL的基本原理  20.2.1 使用OpenGL ES进行基本绘制  20.2.2 OpenGL照相机和坐标  20.3 在Android中使用OpenGL ES  20.3.1 使用GLSurfaceView和相关类  20.3.2 实现Renderer  20.3.3 通过Activity使用GLSurfaceView  20.3.4 更改照相机设置  20.3.5 使用索引添加另一个三角形  20.3.6 为简单的OpenGL三角形制作动画  20.4 OpenGL的运用:形状和纹理  20.4.1 绘制矩形  20.4.2 使用形状  20.4.3 使用纹理  20.4.4 绘制多个图形  20.5 OpenGL ES 2.0  20.5.1 针对OpenGL ES 2.0的Java绑定  20.5.2 呈现步骤  20.5.3 着色器  20.5.4 将着色器编译到程序中  20.5.5 访问着色器程序变量  20.5.6 简单的ES 2.0三角形  20.5.7 关于OpenGL ES 2.0的更多阅读材料  20.6 代码编译说明  20.7 小结  第21章 活动文件夹  21.1 探索活动文件夹  21.1.1 用户如何使用活动文件夹  21.1.2 构建活动文件夹  21.2 代码编译说明  21.3 参考资料  21.4 小结  第22章 主屏幕部件  22.1 主屏幕部件的架构  22.1.1 什么是主屏幕部件  22.1.2 主屏幕部件的用户体验  22.1.3 部件的生命周期  22.2 示例部件应用程序  22.2.1 定义部件提供程序  22.2.2 定义部件尺寸  22.2.3 与部件布局相关的文件  22.2.4 实现部件提供程序  22.2.5 实现部件模型  22.2.6 实现部件配置活动  22.3 部件局限性和扩展  22.4 资源  22.5 小结  第23章 Android搜索  23.1 Android搜索体验  23.1.1 探索Android全局搜索  23.1.2 为全局搜索启用建议提供程序  23.2 活动与搜索键交互  23.2.1 常规活动上的搜索键行为  23.2.2 禁用了搜索的活动的行为  23.2.3 通过菜单显式调用搜索  23.2.4 本地搜索和相关活动  23.2.5 启用键入搜索  23.3 实现简单建议提供程序  23.3.1 计划简单建议提供程序  23.3.2 简单建议提供程序实现文件  23.3.3 实现SimpleSuggestion-Provider类  23.3.4 简单建议提供程序搜索活动  23.3.5 搜索调用方活动  23.3.6 简单建议提供程序用户体验  23.4 实现自定义建议提供程序  23.4.1 计划自定义建议提供程序  23.4.2 SuggestURLProvider项目实现文件  23.4.3 实现SuggestUrlProvider类  23.4.4 实现自定义建议提供程序的搜索活动  23.4.5 自定义建议提供程序描述文件  23.4.6 自定义建议用户体验  23.5 使用操作键和应用程序特有的搜索数据  23.5.1 在Android搜索中使用操作键  23.5.2 使用应用程序特定的搜索上下文  23.6 资源  23.7 对平板电脑的意义  23.8 小结  第24章 文本到语音转换  24.1 Android中的文本到语音转换  24.2 使用语段跟踪语音  24.3 使用音频文件代替话音  24.4 TTS引擎的高级功能  24.4.1 设置音频流  24.4.2 使用耳标  24.4.3 播放静音  24.4.4 选择不同的文本到语音转换引擎  24.4.5 使用语言方法  24.5 参考资料  24.6 小结  第25章 触摸屏  25.1 MotionEvent  25.1.1 MotionEvent 对象  25.1.2 回收MotionEvent  25.1.3 使用VelocityTracker  25.1.4 探索拖放操作  25.2 多点触摸  25.2.1 Android2.2之前的多点触摸  25.2.2 自Android 2.2开始的多点触摸  25.3 触摸地图  25.4 手势  25.4.1 捏合手势  25.4.2 GestureDetector和OnGestureListener  25.4.3 自定义手势  25.4.4 Gestures Builder应用程序  25.5 参考资料  25.6 小结  第26章 传感器  26.1 什么是传感器  26.1.1 检测传感器  26.1.2 可以了解的传感器信息  26.2 获取传感器事件  26.3 解释传感器数据  26.3.1 光线传感器  26.3.2 接近传感器  26.3.3 温度传感器  26.3.4 压力传感器  26.3.5 陀螺仪传感器  26.3.6 加速度计  26.3.7 磁场传感器  26.3.8 结合使用加速度计和磁场传感器  26.3.9 方向传感器  26.3.10 磁偏角和GeomagneticField  26.3.11 重力传感器  26.3.12 直线加速度传感器  26.3.13 旋转矢量传感器  26.3.14 近场通信传感器  26.4 参考资料  26.5 小结  第27章 联系人API  27.1 账户  27.1.1 账户屏幕概览  27.1.2 账户与联系人的相关性  27.1.3 枚举账户  27.2 联系人应用程序  27.2.1 显示联系人  27.2.2 显示联系人详细信息  27.2.3 编辑联系人详细信息  27.2.4 设置联系人的照片  27.2.5 导出联系人  27.2.6 各种联系人数据类型  27.3 联系人  27.3.1 内容SQLite数据库  27.3.2 原始联系人  27.3.3 数据表  27.3.4 聚合联系人  27.3.5 view_contacts  27.3.6 contact_entities_view  27.4 联系人API  27.4.1 浏览账户  27.4.2 浏览聚合联系人  27.4.3 浏览原始联系人  27.4.4 浏览原始联系人数据  27.4.5 添加联系人和它的详细信息  27.5 控制聚合  27.6 同步的影响  27.7 参考资料  27.8 小结  第28章 使用Android Market  28.1 成为发布者  28.1.1 遵守规则  28.1.2 开发人员控制台  28.2 准备销售应用程序  28.2.1 针对不同设备进行测试  28.2.2 支持不同的屏幕尺寸  28.2.3 准备上传AndroidManifest.xml  28.2.4 本地化应用程序  28.2.5 准备应用程序图标  28.2.6 付费应用程序考虑因素  28.2.7 将用户引导至Market  28.2.8 Android授权服务  28.2.9 准备上传.apk文件  28.3 上传应用程序  28.4 Android Market上的用户体验  28.5 更多发布途径  28.6 参考资料  28.7 小结  第29章 多用途的碎片  29.1 什么是碎片  29.1.1 何时使用碎片  29.1.2 碎片的结构  29.1.3 碎片的生命周期  29.1.4 展示生命周期的示例碎片应用程序  29.2 FragmentTransactions和碎片后退栈  29.3 FragmentManager  29.3.1 引用碎片时的注意事项  29.3.2 ListFragments和  29.3.3 在需要时调用独立的活动  29.3.4 碎片的持久化  29.4 对话框碎片  29.4.1 DialogFragment基础知识  29.4.2 DialogFragments示例应用程序  29.5 碎片之间的更多通信方式  29.6 使用ObjectAnimator自定义动画  29.7 参考资料  29.8 小结  第30章 ActionBar  30.1 ActionBar剖析  30.2 选项卡导航操作栏活动  30.2.1 实现基础活动类  30.2.2 为ActionBar分配统一的行为  30.2.3 实现选项卡监听器  30.2.4 实现选项卡操作栏活动  30.2.5 可滚动的调试文本视图布局  30.2.6 操作栏和菜单交互  30.2.7 Android描述文件  30.2.8 测试选项卡操作栏活动  30.3 列表导航操作栏活动  30.3.1 创建SpinnerAdapter  30.3.2 创建列表监听器  30.3.3 设置列表操作栏  30.3.4 更改BaseActionBar-Activity  30.3.5 更改AndroidManifest.xml  30.3.6 测试列表操作栏活动  30.4 标准导航操作栏活动  30.4.1 标准导航操作栏活动  30.4.2 更改BaseActionBar-Activity  30.4.3 更改AndroidManifest.xml  30.4.4 测试标准操作栏活动  30.5 参考资料  30.6 小结  第31章 3.0版中的更多主题  31.1 基于列表的主屏幕部件  31.1.1 3.0版中新的远程视图  31.1.2 在远程视图中使用列表  31.1.3 应用示例:测试主屏幕列表部件  31.1.4 对测试列表部件进行测试  31.2 拖放  31.2.1 3.0版中拖放的基础知识  31.2.2 拖放示例应用程序  31.2.3 测试示例拖放应用程序  31.3 参考资料  31.4 小结
目录 一 软件测试 从零开始 5 1.1 引言 5 1.2 测试准备工作 5 1.2.1 向有经验的测试人员学习 5 1.2.2 阅读软件测试的相关书籍 6 1.2.3 走读缺陷跟踪库中的问题报告单 6 1.2.4 走读相关产品的历史测试用例 6 1.2.5 学习产品相关的业务知识 6 1.3 识别测试需求 7 1.3.1 主动获取需求 7 1.3.2 确认需求的优先级 8 1.3.3 加入开发小组的邮件群组 8 1.3.4 与开发人员为邻 8 1.4 测试用例设计 8 1.4.1 测试用例的基本格式 8 1.4.2 重用同类型项目的测试用例 9 1.4.3 利用已有的软件 Checklist 9 1.4.4 加强测试用例的评审 10 1.4.5 定义测试用例的执行顺序 10 1.5 测试用例执行 10 1.5.1 搭建软件测试环境,执行测试用例 10 1.5.2 测试执行过程应注意的问题 11 1.5.3 及时更新测试用例 11 1.5.4 提交一份优秀的问题报告单 12 1.6 测试结果分析 12 1.7 总结 13 二 软件测试的常识 13 2.1 引言 13 2.2 软件测试常识 13 2.2.1 测试是不完全的(测试不完全) 13 2.2.2 测试具有免疫性(软件缺陷免疫性) 14 2.2.3 测试是 “ 泛型概念 ” (全程测试) 14 2.2.4 80-20 原则 14 2.2.5 为效益而测试 15 2.2.6 缺陷的必然性 15 2.2.7 软件测试必须有预期结果 15 2.2.8 软件测试的意义 - 事后分析 15 2.2.9 结论: 15 三 浅谈软件开发中的注意事项 16 3.1 项目设计 16 3.2 设计变化和需求变化 16 3.3 代码编写 17 3.3.1 源程序文件结构 17 3.3.2 界面设计风格的一致性 17 3.3.3 编辑风格 17 3.3.4 命名规范 18 3.4 BUG修补 18 3.5 开发人员的测试 18 四 软件测试的若干问题 19 4.1 前言 19 4.2 博弈的各方 19 4.3 测试的过程 20 4.4 测试所具备的素质 20 4.5 自动化测试 20 4.6 测试的误区 21 五 浅谈功能测试用例模板设计 21 5.1 Excel 模版 21 5.2 测试用例状态转换分析 23 六 如何提高软件质量 23 6.1 什么是质量 24 6.2 流程对质量的贡献 25 6.3 流程与技术 27 6.4 全面质量管理 28 6.5 关注测试 29 6.6 成功的铁三角 30 6.7 国际上流行的质量标准 30 6.8 如何起步 32 七 ISO和CMM,我们该选择谁 32 7.1 管理水平的适用性 33 7.2 复杂度的适用性 33 7.2.1何谓研发过程复杂度 34 7.2.2 何谓组织机构复杂度 34 7.3 量化管理的适用性上 35 7.4 结论 36 八 如何做好单元测试 36 8.1 前言 36 8.2 组织结构应该保证测试组参与单元测试 36 8.3 加强单元测试流程规范性 37 8.3.1 制订单元测试的过程定义 37 8.3.2 单元测试工作产品必须纳入配置管理 38 8.3.3 必须制订覆盖率指标和质量目标来指导和验收单元测试 38 8.3.4 加强详细设计文档评审 39 8.4 单元测试者技能的提高 39 8.4.1 加强对单元测试人员的技能培训 39 8.4.2 必须引入工具进行辅助 40 8.4.3 单元测试者加强对被测软件的全面了解 40 8.5 结尾 40 九 漫谈人机界面测试 41 9.1 一致性测试 41 9.2 信息反馈测试 42 9.3 界面简洁性测试 42 9.4 界面美观度测试 42 9.5 用户动作性测试 43 9.6 行业标准测试 43 9.7 小结 44 十 基于Web的系统测试方法 44 10.1 功能测试 45 10.1.1 链接测试 45 10.1.2 表单测试 45 10.1.3 Cookies测试 45 10.1.4 设计语言测试 45 10.1.5 数据库测试 46 10.2 性能测试 46 10.2.1 连接速度测试 46 10.2.2 负载测试 46 10.2.3 压力测试 46 10.3 可用性测试 47 10.3.1 导航测试 47 10.3.2 图形测试 47 10.3.3 内容测试 47 10.3.4 整体界面测试 47 10.4 客户端兼容性测试 48 10.4.1 平台测试 48 10.4.2 浏览器测试 48 10.5 安全性测试 48 10.6 总结 49 十一 为盈利而测试 49 11.1 引言 49 11.2 什么是软件测试 50 11.3 六个误区 50 11.3.1 误区一:忽视对正常输入的测试 50 11.3.2 误区二:忽视设计阶段的参与与评估 50 11.3.3 误区三:忽视测试计划与测试文档的建立及维护 51 11.3.4 误区四:忽视缺陷的分析,报告及跟踪 51 11.3.5 误区五:错误的测试目标及测试终止条件 51 11.3.6 误区六:不懂得合理调配使用测试人员的知识技能结构 51 11.4 软件质量与软件测试 52 11.5 软件测试的经济目的 54 11.5.1 满足用户需求,提高产品的竞争力,最终提高产品的销售量 54 11.5.2 尽早发现缺陷,降低后继质量成本 54 11.6 何时应当停止测试 56 十二 整体性能测试剖析 57 十三 性能测试工具之研究 62 13.1 性能测试的意义 62 13.2 性能测试工具综述 63 13.3 性能测试工具的体系架构 64 13.4 虚拟用户产生器 Vugen 65 13.5 Proxy 二次捕获的问题 67 13.6 关联的问题 68 13.7 脚本的问题 70 13.8 Conductor 和 Player 部分 71 13.9 Conductor 和 Player 的技术要点 72 13.10 数据分析工具 Analysis 72 13.11 结束语 72 十四 性能测试原理及性能测试实例分析 73 14.1 软件测试中的性能测试 73 14.1.1 性能测试的含义 73 14.1.2 性能测试的分解 73 14.2 一个性能测试实例 74 14.2.1 被测系统 74 14.2.2 对被测系统进行性能测试 75 14.5 总结 80 十五 软件GUI测试中的关注点 80 15.1 不能不说的二个问题 81 15.1.1 软件测试中的“二八”原则 81 15.1.2 软件黑盒测试解决的问题 81 15.2 软件黑盒测试常见错误类型及说明 81 15.2.1 用户界面错误 81 15.2.2 功能性 81 15.2.3 人机交互 82 15.3 命令结构和录入 87 15.3.1 不一致性 87 15.3.2 “最优化” 87 15.3.3 菜单 89 15.4 遗漏的命令 90 15.4.1 状态转换 90 15.4.2 危机预防 90 15.4.3 由用户进行的错误处理 91 15.4.4 其他问题 91 15.5 程序僵化 92 15.5.1 用户可调整性 92 15.5.2 控制方式 93 15.6 性能 94 15.6.1 降低程序速度 94 15.6.2 缓慢回应 94 15.6.3 如何减少用户吞吐量 94 15.6.4 反应拙劣 94 15.6.5 没有提前输入 95 15.6.6 没有给出某个操作会花很长时间的警告 95 15.6.7 程序太多提示和询问 95 15.6.8 尽量使用简单命令和提示 95 15.7 输出 95 15.7.1 不能输出某种数据 95 15.7.2 不能重定向输出 95 15.7.3 与一个后续过程不兼容的格式 96 15.7.4 必须输出的很少或很多 96 15.7.5 不能控制输出布局 96 15.7.6 荒谬的精度输出级别 96 15.7.7 不能控制表或图的标记 96 15.7.8 不能控制图形的缩放比例 96 15.8 错误处理 96 15.8.1 错误预防 96 15.8.2 错误检测 97 15.8.3 错误恢复 98 15.8.4 边界相关的错误 99 15.8.5 计算错误 100 15.9 小结 100 十六 软件测试技术 100 16.1 软件测试基础 101 16.1.1 测试目标 101 16.1.2 测试原则 101 16.1.3 可测试性 102 16.2 测试用例设计 104 16.3 白盒测试 104 16.4 基本路径测试 105 16.4.1 流图符号 105 16.4.2 环形复杂性 106 16.4.3 导出测试用例 106 16.4.4 图矩阵 108 16.5 控制结构测试 108 16.5.1 条件测试 108 16.5.2 数据流测试 110 16.5.3 循环测试 111 16.6 黑盒测试 112

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值