BlackBerry 应用程序开发者指南 第一卷:基础--第13章 测试和调试
作者:Confach 发表于2006-04-28 21:50
版权信息:可以任意转载, 转载时请务必以超链接形式标明文章原始出处 和作者信息.
http://www.cnblogs.com/confach/articles/387920.html
13
第13章 测试和调试
测试应用程序 使用调试工具 |
测试应用程序
通过在BlackBerry设备模拟器或在一个已连接的BlackBerry设备上运行应用程序来测试它们。
1. 在BlackBerry IDE的Debug菜单中,点击Go.
2. 将应用程序部署到设备。为获得更多信息,参看166页的”使用BlackBerry桌面软件部署应用程序”。
3. 在模拟器或一个BlackBerry使用应用程序。
4. 在BlackBerry IDE的Debug菜单中,点击Break Now。
5. 进行下列任何操作:
操作 |
过程 |
重新运行应用程序 |
在Debug菜单,单击Continue。 |
完成调试 |
在Debug菜单,单击Stop Debugging。 |
使用设备模拟器测试应用程序
在BlackBerry IDE中,当运行应用程序时,设备模拟器会自动启动。
在访问BES下,模拟器设计为模拟一个在BlackBerry设备上运行应用程序的各个方面,包括email状况,浏览器状况,HTTP/TCP连接,以及push功能.
在没有访问BES的情况下,你需要使用BlackBerry MDS模拟器来模拟浏览器状况,第三方应用程序的http/tcp连接,以及push功能.为获得更多信息,参看176页的”测试HTTP网络连接”.
你需要一个BlackBerry邮件服务器模拟器(邮件模拟器)来发送和接收BlackBerry设备模拟器以及一个计算机邮件应用程序之间的消息.为获得更多信息,参看173页的”使用邮件服务器模拟器”.
动作 |
鼠标过程 |
键盘过程 |
滚动滑轮 |
滚动鼠标的滑轮. |
在键盘上按UP ARROW和DOWN ARROW键 |
点击滑轮 |
点击鼠标的滑轮按钮. |
按回车键. |
运行一个应用程序 |
选择适合的图标,点击鼠标滑轮按钮. |
按回车键. |
按键 |
- |
按键盘上的键. |
分配Escape按钮给滑轮 |
1.在设备模拟器中的Edit菜单,点击Map Cursor Key To Escape. 2.完成下面的一个操作:
|
|
测试BES API和IT策略
注:设备模拟器需要的版本为4.0以及更高的BES.
设备模拟器可以连接到BES上的一个帐户.如果你可以访问一个BES,可以把一个模拟的BlackBerry设备连接到BES.使用选项来模拟BES API以及应用的IT策略.这个选项需要有BES管理员的知识,并且它为测试应用了网络依赖.你不需要一个BlackBerry MDS模拟器或一个邮件服务器模拟器.你可以模拟BES 扩展API的使用,应用的IT策略,邮件和浏览器消息,HTTP/TCP连接以及push功能.
1. 启动设备模拟器.
2. 在主屏幕上,单击”Turn Wireless Off”.
3. 在微软窗口的任务栏,点击开始>程序>BlackBerry>Desktop Manager.
4. 在模拟器菜单,完成下面任一操作:
动作 |
过程 |
模拟USB连接. |
点击Simulate>USBConnected |
模拟序列端口连接 |
点击Simulate>Serial Connected |
5. 单击Yes.
6. 完成执导操作生成一个新的加密键.
7. 在初始的插件中:Verifying Application对话框,点击Cancel.
当和计算机的初始同步完成时,企业激活就启动了.
使用邮件服务器模拟器(ESS)
ESS允许你发送和接收设备模拟器和任意一个计算机邮件程序,例如Microsoft Outlook Express或者邮件服务器如POP3和SMTP,之间的消息.使用ESS代替连接一个设备模拟器到BES来进行测试单机上的本地应用程序..
1. 在任务栏,单击开始>程序>Research In Motion>BlackBerry JDE 4.1.0>ESS.
2. 完成下面任一操作:
- Standalone mode(单机模式):存储消息到本地文件系统,和一个计算机邮件程序直接通信.你不需要一个POP3或SMTP服务器.
- 打开计算机邮件程序,
- 设置POP3服务器到本地的110端口号.
- 设置SMTP服务器到本地的25端口号.
- Connected mode.邮件模拟器为接收消息poll用户POP3邮件服务器,并且使用SMTP服务器发送消息.邮件模拟器需要有效的POP3和SMTP服务器.
3. 为了从本地文件系统移除邮件模拟器,单击Clean FS。
- 在Outgoing域,输入你的帐户使用的SMTP服务器的主机名。
- 在Incoming域,输入你的帐户使用的POP3服务器的主机名。
- 在User name域,输入用户名连接到你的帐户。
- 在Password域,输入密码连接你的消息帐户。
- 在Poll inbox域,指定邮件模拟器检查收件箱新消息的频率(以秒为单位)。
- 在Name域,输入一个名字,它显示在设备模拟器发出的消息中。
- 在Email域,输入消息帐户地址,它显示在BlackBerry设备模拟器发出的消息中。
- 在PIN域,输入设备模拟器使用的PIN(Personal Identification Number,个人验证码)(缺省值为0x2100000A)。
4 点击Launch。
如果你在ESS窗口中改变了参数值,一个对话框将提示你保存修改。
5 检查命令行窗口中的启动信息,它也包含了任何错误日志。
当邮件模拟器启动时,使用模拟器里的消息列表来发送和接收带有一个帐户的消息。
注:如果你从命令行启动设备模拟器,指定/rport=0x4d4e参数和ESS通讯。
在模拟器中使用同步来测试一个应用程序
1. 退出BlackBerry桌面软件。
2. 在你的计算机的COM1和COM2之间连接一个空的modem线。
3. 在BlackBerry IDE的Edit菜单,单击Preferences。
4. 在首选项窗口,挡架Basic标签。
5. 选择Set Serial port for device(s)选项,输入1。
6. 单击OK。
7. 在BlackBerry IDE中,编译和允许应用程序。
8. 在模拟器启动后,启动BlackBerry桌面软件。
9. 在BlackBerry桌面管理窗口的Options菜单里,单击Connection Settings。
10. 点击Detect检测模拟器。
注:如果BlackBerry桌面软件没有检测到模拟器,重启计算机。重复步骤7到10。
使用一个已连接的BlackBerry设备测试应用程序
当你将一个BlackBerry设备连接到一台计算机时,在BlackBerry设备上运行应用程序,并且利用BlackBerry IDE调试工具来完成测试以及优化。
注:为了将BlackBerry IDE附加到一个序列化端口连接的BlackBerry设备,需要安装Java通信API v2.0,在http://java.sun.com/products/javacomm/可得到它。当BlackBerry设备连接到USB端口时此API则不需要。
安装.debug文件
为了使用BlackBerry设备调试应用程序,BlackBerry IDE中的.debug文件必须和BlackBerry设备的版本号相匹配。
1. 从BlackBerry开发区 http://blackBerry.com/developers为BlackBerry设备软件版本号下载.debug文件。
2. 在BlackBerry IDE的Edit菜单,单击Preferences。
3. 单击Debug标签。
4. 单击Other标签。
5. 在Handheld debug file location域,输入下载的.debug文件的路径。
加载一个应用程序进行测试
注:在加载一个应用程序进行测试之前,请备份你的BlackBerry设备应用程序信息.
JavaLoader.exe工具允许你使用命令行增加或更新BlackBerry设备上的应用程序.仅当以开发和测试目的时使用本工具.对于产品应用程序,使用BlackBerry桌面软件.
注:你必须按照依赖关系的正确顺序加载应用程序. 如果项目A依赖项目B,在加载项目A之前先加载项目B.
1. 退出桌面软件.
2. 将BlackBerry设备连接到计算机.
3. 在命令行里,找到BlackBerry JDE安装目录下的Bin文件夹.
4. 输入下面的命令:
JavaLoader [-usb] [-p<port> [-b<bps>] [-w<password>] load <files>
选项 |
描述 |
port |
BlackBerry设备连接的COM端口(缺省为1).如果BlackBerry使用USB端口连接,为BlackBerry设备的PIN(-usb选项必须指定). |
bps |
到序列端口的位速率(缺省为115200). |
password |
BlackBerry的设备密码,如果你设置了一个的话. |
files |
加载到BlackBerry设备中的一个或多个.cod文件名,它们分别以空格分开. |
从BlackBerry删除应用程序
在命令行,输入下面的命令行:
JavaLoader [-usb] [-p<port>] [-b<bps>] [-w<password>] erase [-f] <files>
在这里,-f选项删除应用程序,甚至此应用程序正在使用.
将BlackBerry IDE调试器和BlackBerry设备相连
1. 为了将BlackBerry IDE调试器与使用USB端口连接的BlackBerry设备连接,启动BBDevMgr.exe.BlackBerry桌面软件3.5.1以及后续版本安装BBdevMgr.exe工具.
C:\program files\Common Files\Research In Motion\USB Drivers.
1. 完成下面任一操作:
操作 |
过程 |
BlackBerry IDE调试器连接一个使用序列端口的BlackBerry设备 |
单击Attach to>Handheld>COM n,在这里n是你的BlackBerry设备连接的序列端口. |
BlackBerry IDE调试器连接一个使用USB端口的BlackBerry设备 |
单击Attach to>Handheld>USB(PIN),在这里PIN是已连接的BlackBerry设备的PIN.. |
- 对于一个连接到序列端口的BlackBerry设备, 单击Attach to>Handheld>COM n,在这里n是你的BlackBerry设备连接的序列端口.
- 对于一个连接到USB端口的BlackBerry设备, 单击Attach to>Handheld>USB(PIN),在这里PIN是已连接的BlackBerry设备的PIN.
测试HTTP网络连接
为了测试一个需要HTTP网络连接的应用程序,使用BlackBerry MDS模拟器,它是一个BlackBerry JDE的组件.
> 在任务栏里,单击开始>程序>Research In Motion>BlackBerry JDE 4.1.0>MDS.
注:当设备模拟器启动时,为了启动MDS服务模拟器,在BlackBerry IDE的Eidt菜单,单击Preferences.点击Simulator标签,选择Launch Mobile Data Service(MDS) with simulator选项.
使用一个WAP网关
你可以使用服务商提供的一个WAP网关来配置HTTP连接.BlackBerry设备支持WAP 1.1.
注:WAP服务仅在你所选的无线网络可以得到.在你开始开发之前,联系你的服务商获得更多关于WAP网关的信息.
>为了使用WAP建立一个HTTP连接,在Connector.open()的URL后的末尾包含WAPGatewayIP以及WAPGetwayAPN参数.
Connector.open("http://host;WAPGatewayIP=127.0.0.1; WAPGatewayAPN=rim.net.gprs");
使用分号(;)分隔WAP参数,验证WAP参数没有空格.
参数 |
描述 |
缺省 |
WapGatewayIP |
网关的IP地址 |
- |
WapGatewayAPN |
APN(仅为GPRS),为了测试,使用net.rim.gprs |
- |
WapGatewayPort |
网关端口值 |
9201 |
WAP_GETWAY_PORT_DEFAULT |
|
|
WapSourceIP |
源IP地址 |
127.0.0.1 |
WAP_SOURCE_IP _DEFAULT |
|
|
WapSourcePort |
源端口值 |
8205 |
WAP_SOURCE_PORT_DEFAULT |
|
|
TunnelAuthUserName |
APN对话或PAP或CHAP验证的用户名. |
无 |
TunnelAuthPassword |
APN对话或PAP或CHAP验证的密码. |
无 |
WapEnableWTLS |
打开或关闭WTLS(如果你没有指定这个参数,那么到端口8203的连接将使用WTLS).BlackBerry设备支持WTLS级别1(仅加密,没有认证)和级别2(加密和服务器验证). |
无 |
注:在BlackBerry设备模拟器中,当你测试一个需要APN连接的应用程序,增加命令行选项/rport=<wap_source_port>,一般为/rport=8205.模拟器的APN是net.rim.gprs.
增加模拟器命令行选项
在BlackBerry IDE的Edit菜单里,单击Preferences.
单击Simulator标签.
点击Advanced标签
在Simulator Command Line域里,增加命令行选项.
配置BlackBerry MDS模拟器
1. 在文本编辑器中,打开rimpublic.property文件(在MDS\Config文件夹下).
2. 编辑参数,配置下列特性:
- 参看178页的”日志级别参数”获得更多信息.
- 参看178页的”HTTP支持参数”获得更多信息.
- 参看178页的”HTTPS支持参数”获得更多信息.
- 参看179页的”Push支持参数”获得更多信息.
- 参看179页的”Internet消息的地址-PIN映射”获得更多信息.
3. 重起BlackBerry MDS模拟器.
注:在产品环境中,BES系统管理员通过使用BlackBerry管理器来配置MDS服务参数.联系你的管理员获得更多信息.
日志级别参数
参数 |
描述 |
缺省 |
Logging.level |
如果启用日志,这个参数指定记录写到日志中的信息类型. l 1:仅写入事件信息,例如MDS服务的启动和停止. l 2:写事件和错误 l 3:写事件,错误和警告. l 4:写事件,错误,警告以及调试信息. |
4 |
Logging.console.log.level |
如果启用日志,这个参数指定在控制台输出的信息类型.参看Logging.level参数的描述. |
4 |
HTTP支持参数
参数 |
描述 |
缺省 |
application.handler.http. logging |
此参数打开(TRUE)或关闭(FALSE)HTTP标准日志(仅HTTP头) |
TRUE |
application.handler.http. logging.verbose |
此参数打开(TRUE)或关闭(FALSE)HTTP调试日志(HTTP数据和头).当需要调试一个特殊的问题时,此参数设置为TRUE. |
FALSE |
application.handler.http. cookieSupport |
此参数打开(TRUE)或关闭(FALSE)cookie的存储。如果选择TRUE,BlackBerry MDS服务代替BlackBerry设备来管理cookie存储。这明显减少了BlackBerry上的加载。 |
TRUE |
application.handler.http .AuthenticationSupport |
此参数打开(TRUE)或关闭(FLASE)用户验证信息的存储。 |
TRUE |
application.handler.http. AuthenticationTimeout |
如果HTTP验证设为TRUE,在验证信息无效之前此参数决定时间的长短。无论何时,当用户发布一个为某一域调用验证信息的时候,这个计时器都会重置。 |
3600000 |
application.handler.http. device.connection.timeout |
在一个连接试图访问BlackBerry设备时,如果BlackBerry不可用,此参数设定过期时间的长短(以毫秒计) |
140000 |
application.handler.http. server.connection.timeout |
在一个连接试图访问服务器时,如果服务器不可用,此参数设定过期时间的长短(以毫秒计) |
150000 |
HTTP支持参数
参数 |
描述 |
缺省 |
application.handler.https.logging |
此参数打开(TRUE)或关闭(FALSE)测试目的的HTTPS日志 |
TRUE |
application.handler.https. allowUntrustedServer |
此参数允许MDS服务连接到一个不信任的服务器(TRUE),或者仅受限访问一个可信任的服务器(FALSE),如果服务器的证书安装在MDS服务主机上,那么服务器是信任的。参看190页的“使用keytool安装一个证书”获得更多信息。 |
FALSE |
PUSH支持参数
不要改变这些参数。
参数 |
描述 |
缺省 |
WebServer.listen.host |
此参数定义了MDS服务监听发送HTTP POST请求的PUSH应用程序所在的计算机。 |
localhost |
WebServer.listen.port |
此参数定义了MDS服务监听发送HTTP POST请求的PUSH应用程序所在的端口。 |
8080 |
Internet消息的地址-PIN映射
在一个产品环境里,BES自动将用户的internet消息地址映射到BlackBerry设备的PIN上。在BlackBerry JDE,你可以模拟internet消息地址和PIN之间的映射。
注:如果你正在测试一个push应用程序,你仅需要配置internet消息地址到PIN之间的映射。为获得更多信息,参看137页的“创建一个client/server push应用程序。
在rimpublic.property文件里,在你的BlackBerry JDE安装目录下的MDS/config子目录下,增加或修改【simulator】部分的入口。入口使用下面的格式:
Simulator. <PIN>=<host> :< port>, <messaging_address>
例如:
Simulator.2100000a=<local machine IP>:81, user2100000a@blackberry.com
改变internet消息地址,以致你可以测试使用实际的internet消息地址的应用程序。发送push的数据到一明确的BlackBerry设备模拟器。
模拟器缺省的PIN是2100000a。
为了改变模拟器PIN,设置/rsim选项。在BlackBerry IDE的Edit菜单,单击Preferences。单击Simulator标签,然后单击Advanced标签。在Simuator Command Line域里,修改为/rsim-0x2100000A.
端口必须和IPPP.push.listen.tcp.port参数里的值相匹配。缺省是81。
使用调试工具
注:本部分提供BlackBerry IDE中一些可用调试工具的概括。参看BlackBerry IDE在线帮助获得更多关于使用BlackBerrry IDE的详情。
分析代码覆盖
为了显示已经运行代码的概括,使用覆盖工具。当你设计和运行测试案例时,一个概括是有用的,因为你可以看到什么已经精确的测试了。
1. 设置2个或多个断点。
2.在blackBerry IDE的View菜单中,点击Coverage。
3. 为将信息重置为0,在覆盖(coverage)区域,点击Clear。
4. 运行你的程序到下一个断点。
5. 为了显示你单击Clear后运行的代码的覆盖率,在覆盖区域,单击Refresh。
使用profiler
使用BlackBerry IDE profiler工具优化你的代码。Profiler工具显示了每个代码区所花费的时间百分比,一直到当前运行点。
注:当你运行profiler时,为了改善结果的可信度,退出其他的Microsoft windows应用程序。
运行profiler
1. 在代码段的开始,按F9设置一个断点。
2. 在代码段的末尾,按F9设置一个断点。
3.在Debug菜单里,单击Go。
4. 在模拟器里使用应用程序运行合适的代码,直到它达到断点。
5. 在View菜单,单击Profile。
6. 在profile区域,单击Options。
7. 选择方法属性的类型,一个有序的方法,以及信息的类型给Profile。为获得更多信息,参看181页的“设置profle选项”。
8. 单击OK。
9. 为删除profiler数据,并且重设运行时时间,在profile区域,单击Clear。
10. 在Debug菜单,单击Go。
11. 在模拟器里使用应用程序运行合适的代码,直到它达到断点。
12. 如果profile区域不可见,在View菜单里单击Profile。
13. 为了获得所有精确的profile数据,在profile区域里,单击Refresh。
14. 单击Save将profile区的内容保存到. 以逗号分割的csv文件中。
Profile视图 |
描述 |
Summary |
Summary视图显示关于系统和垃圾回收的普通统计。它显示了Java VM空闲时间,运行代码,以及完成快速和完全垃圾回收的时间的比例。Percent列显示了总的VM运行时间,包括空闲和回收时间的比例。 |
Methods |
Methods视图显示了一列模块,他们要么根据你正在profile的信息排序,要么根据每项运行的次数排序, |
Source |
Source视图显示了单个方法的源代码行。它允许你通过调用的或被调用的方法来找到那个方法。单击Back和Forward按钮来跟踪你在Source视图里访问过的方法的历史记录。 在这个视图里,ercent列显示了总的VM运行时间,不包括空闲和回收时间的比例。 |
设置Profile选项
1. 单击Options标签
1 在Method attribution下拉列表中,选择下列任一选项
- 为了计算执行方法和它调用的方法里字节代码所花费的时间,选择Cumulative。
- 为了只计算执行方法里字节代码所花费的时间,选择In Method only。当调用另外的方法时,计时器停止。
2 在Sort method by下拉列表中,选择Count根据项运行的次数将Profile视图里的方法进行排序,或者选择其他选项根据profile的数据将方法排序。
3 从What to profile下列列表中,选择profile的数据类型。
查找内存泄漏
使用内存统计和对象来查找和修正内存泄漏.
使用内存统计工具
内存统计工具显示了对象数以及对象处理,RAM,以及闪存用到的字节数的统计.
1 在View菜单,单击Memory statistics.
2 在你的代码中设置2个或多个断点.
3 运行你的程序到第一个断点.
4 单击Refresh刷新内存统计.
5 单击Snapshot得到一个快照.
6 将程序运行到下一个断点.
7 单击Refresh.
8 单击Compare to Snapshot.
9 为了将内存统计的内容存储到一个逗号分隔的.csv文件中,单击Save.
使用对象工具
对象工具显示了内存中所有的对象,它帮助你定位到发生泄漏的对象.对象泄漏可能导致VM在闪存的外部运行,它将重新设置你的BlackBerry设备.
1 在BlackBerry IDE的Debug菜单,单击Go.
2 在Debug菜单中,单击Break Now.
3 在View菜单中,单击Objects
4 单击GC.
5 单击Snapshot.
6 在Debug菜单,单击Continue.
7 在程序里完成的任务不应增加可达到的对象的数量;例如,创建一个新的联系人,然后再删除它.
8 在Debug菜单,单击Continue.
9 在对象域里,单击GC.
单击Compare to Snapshot.对象域,它将显示自上一次快照以来删除和增加的对象数.如果增加的对象数和删除的对象数不一样,你可能有一个对象泄漏.使用Type和Process过滤项查看特定的对象.
10 为了将内存统计的内容存储到一个逗号分隔的.csv文件中,单击Save.