安装环境:WIN7
1.mgn-mqt82.exe运行失败
解决:由于是WIN7系统,故破解文件应该放在安装目录C:\Program Files\Common Files\Mercury Interactive\下才行。
2.没办法生成lservrc文件
解决:运行破解文件时,要以管理员身份运行
3.注册mercuryinteractive网站成功后,却无法再登陆
解决:注册的用户名重名,重新选择一个复杂点的注册
4.录制的时候,Action显示空白
解决:要以管理员身份运行QTP
解决:开启QTP时,不要加载ACTIVE X插件
在
iphone开发过程中,代码中的内存泄露我们很容易用内存检测工具leaks 检测出来,并一一改之,但有些是因为
ios 的缺陷和用法上的错误,leaks 检测工具并不能检测出来,你只会看到大量的内存被使用,最后收到didReceiveMemoryWarning,最终导致程序崩溃。以下是开发过程中遇到的一些问题和网上的一些资料,总结了一下:
一、[UIImage imageNamed:]只适合与UI界面中的贴图的读取,较大的资源文件应该尽量避免使用
用UIImage加载本地图像最常用的是下面三种:
1.用imageNamed方法
[UIImage imageNamed:ImageName];
2.用 imageWithContentsOfFile 方法
NSString *thumbnailFile = [NSString stringWithFormat:@"%@/%@.png", [[NSBundle mainBundle] resourcePath], fileName];
UIImage *thumbnail = [UIImage imageWithContentsOfFile:thumbnailFile];
3. 用initWithContentsFile方法
UIImage *image = [[UIImage alloc] initWithContentsOfFile:filePath]
第一种方法为常见方法,利用它可以方便加载资源图片。用imageNamed的方式加载时,会把图像数据根据它的名字缓存在系统内存中,以提高imageNamed方法获得相同图片的image对象的性能。即使生成的对象被 autoReleasePool释放了,这份缓存也不释放。而且没有明确的释放方法。如果图像比较大,或者图像比较多,用这种方式会消耗很大的内存。
第二种方法加载的图片是不会缓存的。得到的对象时autoRelease的,当autoReleasePool释放时才释放。
第三种方法要手动release掉。不系统缓存。release后立即释放,一般用在封面等图比较大的地方。
二、 滑动列表的时候,使用UITableView的reuse机制
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
dequeueReusableCellWithIdentifier 方法会把隐藏的界面拿来重用,这样节省很多资源。
三、要大量创建局部变量的时候,可以创建内嵌的autorelease pool来及时释放内存
int main (int argc, const char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];int i, j;for (i = 0; i < 100; i++ )
{
NSAutoreleasePool *loopPool = [[NSAutoreleasePool alloc] init]; for (j = 0; j < 100000; j++ )
[NSString stringWithFormat:@"1234567890"];//产生的对象是autorelease的。 [loopPool release];
}
[pool release];return (0);
} // main
详细查看:iPhone/Mac Objective-C内存管理教程和原理剖析(一)基本原理
四、频繁打开和关闭SQLite,导致内存不断的增长
SQLite的
数据库本质上来讲就是一个磁盘上的文件,频繁打开和关闭是很耗时和浪费资源的,可以设置SQLite的长连接方式;避免频繁的打开和关闭数据库;
五、在UITableView 的cellForRowAtIndexPath 代理中不要使用 stringWithFormat 方法
定义一个字符串变量有很多方法,最简单的就是 NSString *str = @“abc”, 还有initWithString、stringWithFormat和stringWithCString等等。大量的字符操作时,不同的方法消耗不同的内存。
以下
测试代码转自:http://www.cocoachina.com/bbs/read.php?tid-17652-fpage-9.html
//
- ()testStringSpeed:(*pool= testi,testnum= c,tm=(testi=;testi<testnum;testi++*beg= i,n=(i=;i<n;i++
=+=,[textField stringValue],testi+,[textField stringValue],()tm/
由于stringWithFormat 即耗时又耗内存,所以在cellForRowAtIndexPath 绘制cell 的时消耗大量内存和时间,造成界面滑动不流畅。
六、关于 colorWithPatternImage 的内存泄露
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg.png"]];
此方法用图片来设置view的背景颜色,但是某些设备上会导致内存泄露
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答案是:前者错,后者对。相信不管是否经历过java面试过,大家一定对这道题很熟悉。因为这道题确实太经典了,以至于成为了基本每个老师都会拿出来,当作课堂例题来讲。要说清这道题,首先看看java表达式类型转换规则。
【java表达式类型转换】
java是一门强类型语言,不仅每个变量具有指定的数据类型,它的表达式也有指定的数据类型。因此在不同类型之间进行赋值操作很容易遇到到类型转换的问题。
在JAVA表达式中,如果进行运算的几个变量类型不一致,JAVA表达式会采取类型自动提升的操作。Java定义如下的自动提升规则:
1. 所有byte型、short型和char型将被提升到int型。
2. 整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。操作数的等级排列如下图所示,位于箭头右边类型的等级高于位于箭头左边类型的等级。以下是java表达式中类型提升等级。
【复合赋值运算符包含的隐式类型转换】
short s1 = 1; s1 = s1 + 1会引起编译错误,s1+1表达式类型会自动提升为int类型,而s1的声明类型为short类型,所以将一个int类型的值赋给short类型将引起编译错误。
但short s1 = 1; s1 += 1;不会出错,因为表达式中使用了+=复合赋值运算符,复合赋值运算符包含了一个隐式的类型转换。s1 = s1 + 1和s1 += 1实际上并不等价。s1+=1实际上等于s1 = (s1的类型)s1+1,复合赋值运算符会自动将他计算的结果值强制类型转换为其左边变量的类型。
存储过程和函数的区别是什么?
答:存储过程是用户定义的一系列
SQL语句的集合,涉及特定表或其他对象的任务,用户可以调用存储过程。
而函数通常是
数据库已经定义的方法,它接收参数并返回某种类型的值,并且不涉及特定用户表,例如聚集函数avg、max、count等,日期时间单数day、month等。
PL/SQL(Procedural Language/SQL, PL/SQL)是编写数据库存储过程的一种过程语言,它结合了SQL的数据操纵能力
和过程化语言的流程控制能力,是SQL的过程化扩展。
综上PL/SQL就是对数据的操纵过程化
存储过程的优点
它是由PL/SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,因此称它为存储过程,使用时只要调用即可。
1、由于存储过程不像解释执行的SQL语句那样在提出操作请求时才进行语法分析和优化
工作,因而运行效率高,
它提供了在服务器端快速执行SQL语句的有效途径。
2、存储过程降低了客户机和服务器之间的通信量。客户机上的应用程序只要通过网络向服务器发出存储过程的名字和参数,就可以让RDBMS执行许多条的SQL语句,并执行数据处理。只有最终处理结果才返回客户端。
3、方便实施企业规则。可以把企业规则的运算程序写成存储过程放入数据库服务器中,由RDBMS管理,既有利于集中控制,又能方便地进行维护。当用户规则发生变化时,只需要修改存储过程,无需修改其他应用程序。
-----------------------------------------------------------------------------------------
触发器的作用?
触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。
Q1:安装完td后,无法下载插件,提示:cannot register activex server 报错原因(可能):安装td时没有关闭杀毒软件的实时监控,当提示修改注册表是选择了拒绝修改。
解决方法:删除TD2000_80和TDAPICLient这个两个文件夹一般在C:\Program Files\Common Files\Mercury Interactive这个目录下,然后去add-in去下载客户端,问题就能解决了。
Q2:TD登陆时候出现Permission denied:...错误的解决办法
报错原因:权限问题
解决方法:
1.先进入到TD_Dir中
2.比如我的是 C:\TD_Dir\ (域) \ (出现问题的项目) \Settings
3.里面一般会有三个文件 一个是Common 一个是Private 最后一个是_dummy
4.右键点击Private文件夹的属性,然后选择安全,将里面的组和用户的权限选择完全控制(Private文件时写入登录用户的文件)
也许是因为这个,所以TD_dir目录需要开共享(并且设置可写权限,当时我取消了TD_dir的共享,登录出错,后来恢复共享也不行,最后放宽权限才行)
Q3:出现Following client components were not downloaded successfully:
1、tdclientui80.TDFramex
.....
报错原因:客户端组件下载不成功
解决方法:删除C:\Program Files\Common Files\Mercury Interactive\TD2000_80子目录下的文件,然后重新操作
Q4:无法成功创建DB SERVER,ping的时候出现
[DBNETLIB][ConnectionOpen(Connect()).]
sql server does not exist or access denied. |未指定的错误.
报错原因:未知
解决方法:
方法一、清除安装时默认的DB SERVER:TDSQLSERVER,再重新创建一个本机的SQL服务器名。(这个是因为安装是默认的TDSQLSERVE并没有在SQL里创建。)
方法二、既然说TDSQLSERVE在SQL里没有创建,那么我们就可以自己手动创建,步骤如下:
1.打开“SQL的客户端往来实用工具”==“别名”,点击添加按钮,打开“添加网络库配置”,将服务器别名设为TDSQLSERVER,网络库选为TCP/IP,确定。
2.返回http://“IP地址”/TDBIN/SiteAdmin.htm的DB SERVER页面,再次对TDSQLSERVER进行ping操作,失败!继续修改ing。。。
3.在Default Connection String栏显示
Provider=SQLOLEDB.1;Data Source=%DB_SERVER%;User ID=%DB_USER%;Password=%PASSWORD%;Initial Catalog=%DB_NAME%
把Data Source=%DB_SERVER%改为Data Source=(local),再ping,这次提示The connection is OK!
Q5:使用TestDirector Checker进行check,找到了个错误,尝试了并找到了解决办法,具体如下。
The TestDirector installation process creates a virtual directory, which it attempts to places in High (Isolated) Application Protection. If, after the installation process, the virtual directory is otherwise protected, TestDirector cannot work properly. To rectify this situation, you must resynchronize the IWAM_XXXX account passwords, or place the virtual directory in Low (IIS process) Application Protection.For instructions on synchronizing IWAM_XXXX account passwords, refer to Article#324 on the following Web site: www.IISFAQ.com
Execute permissions: Execute (including scripts) permissions necessary.
解决方法:
1)进入“Internet信息服务”对话框,在“默认网站”下选择“TDBIN”,在右键菜单中选择“属性”
2)在“虚拟目录”Tab页中选择将所有权限选中,点击创建网站按钮,将“执行权限”修改为“脚本和可执行文件”,“应用程序保护”选择“高(独立)”
手工同步IIS用户密码,步骤如下:
1)重新设置IIS的IWAM账号密码。右键单击 我的电脑->管理,打开计算机管理界面打开 本地用户和组->用户 右键单击 启动IIS进程帐号 IWAM_****(注:****一般是计算机名)点击设置密码,设置为一个你想要的密码。
2)同步IIS metabase中IWAM_MYSERVER的密码,在CMD中:c:/inetpub/adminscripts>adsutil set w3svc/wamuserpass "yourpassword"
3)同步COM+应用程序所用的IWAM_MYSERVER密码,在CMD中:c:/inetpub/adminscripts>cscript synciwam.vbs -v。
Q6:使用TestDirector Checker进行check,找到了个错误,尝试了并找到了解决办法,具体如下。
Internet Information Server-->Reports Virtual Directory 失败,提示信息为:Web Directory TDBIN/Reports Does Not Exist. TestDirector was installed incorrectly. Please Reinstall it.
解决方法:把reports目录的“执行权限”设置为“纯脚本”,再次执行check,全部通过,并且可以启动TD服务。
以下是win7 client系统中 运行TD出现的问题
Q1: 无法下载控件 下载失败
解决方法:修改IE, 工具--兼容性设置-- 把TD所在服务器的IP写上
工具--选项 勾掉:启用内存保护帮助减少联机攻击这个复选框
大型网站扫描到后边会出现扫不动,大型网站扫描时间过长等情况。但如果要在短时间内扫描完某个大型网站,这样就可以进行分割扫描,把一个大型站点分割为多个较小的再进行扫描分割。
有两种分割扫描的方法:(都可以较短时间内得到扫描结果,并且报告的可读性较强)
Ps、需要先保存一份原始扫描文件(探索文件)。
1、加载扫描文件。
2、打开扫描配置。
3、选择测试 → 测试策略。
4、进一步限制、定制测试策略 “类型”。
5、只勾选“基础结构”。
6、点击确定即可保存修改好的配置。
7、保存该扫描文件为如“1.Scan”,启动扫描即可。
8、重新加载原始扫描文件。
9、打开扫描配置对话,重复上述步骤3、4,在类型中只勾选“应用程序”。
11、保存该扫描文件为如“2.Scan”,当两部分都扫描完之后就是一个完整的扫描。
二、按应用程序逻辑分布
1、加载扫描文件。
2、查看您的网页应用程序,看它本身是否按逻辑分布的。
3、从左边的应用程序树状结构中,选择不希望测试的节点,单击右键并选择“从扫描中排除”。
4、重新保存为如1.Scan并启动扫描。
5、重新加载原始扫描文件,然后对该网页站点中需要扫描测试的节点重复上述过程,重新保存扫描即可(分几个扫描文件可根据具体情况)。
Ps、路径和扫描深度在扫描配置→探索→探索选项设置,可根据具体情况设置以提高扫描效率。一般链接超过5000就可使用分割扫描。
rstat协议允许网络上的用户获得同一网络上各机器的性能参数。
需要下载3个包:
(1)rsh-0.17-14.i386.rpm
(2)rsh-server-0.17-14.i386.rpm
(3)rpc.rstatd-4.0.1.tar.gz
一、安装rsh
查看是否安装并卸载rsh
[root@localhost /]# rpm –qa |grep rsh --查看是否安装rsh
[root@localhost /]# rpm –e + 版本号 --卸载该版本
安装rsh,rsh-server
[root@localhost /]# rpm –ivh rsh-0.17-14.i386.rpm
[root@localhost /]# rpm –ivh rsh-server-0.17-14.i386.rpm
二、安装rstatd
下载并安装rstatd,下载地址:http://sourceforge.net/projects/rstatd,上传至/usr/local
[root@localhost /]# find / -name rpc.rstatd
安装rstatd
[root@localhost /]# tar -xzvf rpc.rstatd-4.0.1.tar.gz
[root@localhost /]# cd rpc.rstatd-4.0.1
[root@localhost /]# ./configure
[root@localhost /]# make
[root@localhost /]# make install
三、安装完成后配置rstatd目标守护进程xinetd,配置文件于/etc/xinet.d目录下
修改/etc/xinetd.d目录下面的3个conf(rogin,rsh,rexec)中的disable均设置为no
[root@localhost /]# cd /etc/xinetd.d --进入到/etc/xinetd.conf目录中
[root@localhost /]# vi rlogin --编辑disable=no,保存
[root@localhost /]# vi rsh --编辑disable=no,保存
[root@localhost /]# vi rexec --编辑disable=no,保存
四、启动rpc.rstatd
[root@localhost /]# rpc.rstatd --启动rpc.rstatd进程
[root@localhost /]# rpcinfo -p --执行此命令检查rpc服务的状态
如果未出现上图的rstatd说明没有安装成功,需要重复以上步骤。
到这里为止,LR监控Linux必要的服务都已安装好了。
五、关闭防火墙
[root@localhost /]# service iptables stop
六、利用LR中的Controller监控Linux资源
在Controller中,将System Resource Graphs中的Unix resources拖到右侧的资源监控区域。
鼠标右键选择Add Measurements,添加被监控Linux的IP地址x.x.x.x,选择需要监控的性能指标,确认。
注意:监控过程中要关闭Linux防火墙,否则可能会监控失败
七、遇到的问题
1. LoadRunner监控Linux资源时弹出如下错误:
Monitor name :UNIX Resources. Cannot initialize the monitoring on 192.168.52.189. Error while creating the RPC client. Ensure that the machine can be connected and that it runs the rstat daemon (use rpcinfo utility for this verification). Detailed error: RPC: Failed to create RPC client.
RPC-TCP: Failed to establish RPC server address.
原因:Linux系统中没有安装rpc.rstatd,服务未开启的原因造成的。
解决办法:照上述方法安装rpc.rstatd并开启即可监控Linux.
2. configure: error: no acceptable C compiler found in $PATH
原因:未安装gcc编译器. 在命令行里敲入gcc –v, 如果提示command not found 就表示你的系统里没有安装gcc编译器
解决办法:yum install gcc
简单介绍监控UNIX
lr监控UNIX ,UNIX先启动一rstatd服务
以下是在IBM AIX系统中启动rstatd服务的方法:
1、 使用telnet以root用户的身份登录入AIX系统
2、 在命令行提示符下输入:vi /etc/inetd.conf
3、 查找rstatd,找到
#rstatd sunrpc_udp udp wait root /usr/sbin/rpc.rstatd rstatd 100001 1-3
4、将#去掉
5、:wq保存修改结果
6、命令提示符下输入:refresh –s inetd 重新启动服务。
这样使用loadrunner就可以监视AIX系统的性能情况了。
注:在HP UNIX系统上编辑完inetd.conf后,重启inetd服务需要输入inetd -c
UNIX上也可以用rup命令查看rstatd程序是否被配置并激活
若rstatd程序已经运行,重启时,先查看进程ps -ef |grep inet,然后杀掉进程,再refresh –s inetd进行重启。
Q1:安装完td后,无法下载插件,提示:cannot register activex server
报错原因(可能):安装td时没有关闭杀毒软件的实时监控,当提示修改注册表是选择了拒绝修改。
解决方法:删除TD2000_80和TDAPICLient这个两个文件夹一般在C:\Program Files\Common Files\Mercury Interactive这个目录下,然后去add-in去下载客户端,问题就能解决了。
Q2:TD登陆时候出现Permission denied:...错误的解决办法
报错原因:权限问题
解决方法:
1.先进入到TD_Dir中
2.比如我的是 C:\TD_Dir\ (域) \ (出现问题的项目) \Settings
3.里面一般会有三个文件 一个是Common 一个是Private 最后一个是_dummy
4.右键点击Private文件夹的属性,然后选择安全,将里面的组和用户的权限选择完全控制(Private文件时写入登录用户的文件)
也许是因为这个,所以TD_dir目录需要开共享(并且设置可写权限,当时我取消了TD_dir的共享,登录出错,后来恢复共享也不行,最后放宽权限才行)
Q3:出现Following client components were not downloaded successfully:
1、tdclientui80.TDFramex
.....
报错原因:客户端组件下载不成功
解决方法:删除C:\Program Files\Common Files\Mercury Interactive\TD2000_80子目录下的文件,然后重新操作
Q4:无法成功创建DB SERVER,ping的时候出现
[DBNETLIB][ConnectionOpen(Connect()).]
sql server does not exist or access denied. |未指定的错误.
报错原因:未知
解决方法:
方法一、清除安装时默认的DB SERVER:TDSQLSERVER,再重新创建一个本机的SQL服务器名。(这个是因为安装是默认的TDSQLSERVE并没有在SQL里创建。)
方法二、既然说TDSQLSERVE在SQL里没有创建,那么我们就可以自己手动创建,步骤如下:
1.打开“SQL的客户端往来实用工具”==“别名”,点击添加按钮,打开“添加网络库配置”,将服务器别名设为TDSQLSERVER,网络库选为TCP/IP,确定。
2.返回http://“IP地址”/TDBIN/SiteAdmin.htm的DB SERVER页面,再次对TDSQLSERVER进行ping操作,失败!继续修改ing。。。
3.在Default Connection String栏显示
Provider=SQLOLEDB.1;Data Source=%DB_SERVER%;User ID=%DB_USER%;Password=%PASSWORD%;Initial Catalog=%DB_NAME%
把Data Source=%DB_SERVER%改为Data Source=(local),再ping,这次提示The connection is OK!
Q5:使用TestDirector Checker进行check,找到了个错误,尝试了并找到了解决办法,具体如下。
The TestDirector installation process creates a virtual directory, which it attempts to places in High (Isolated) Application Protection. If, after the installation process, the virtual directory is otherwise protected, TestDirector cannot work properly. To rectify this situation, you must resynchronize the IWAM_XXXX account passwords, or place the virtual directory in Low (IIS process) Application Protection.For instructions on synchronizing IWAM_XXXX account passwords, refer to Article#324 on the following Web site: www.IISFAQ.com
Execute permissions: Execute (including scripts) permissions necessary.
解决方法:
1)进入“Internet信息服务”对话框,在“默认网站”下选择“TDBIN”,在右键菜单中选择“属性”
2)在“虚拟目录”Tab页中选择将所有权限选中,点击创建网站按钮,将“执行权限”修改为“脚本和可执行文件”,“应用程序保护”选择“高(独立)”
手工同步IIS用户密码,步骤如下:
1)重新设置IIS的IWAM账号密码。右键单击 我的电脑->管理,打开计算机管理界面打开 本地用户和组->用户 右键单击 启动IIS进程帐号 IWAM_****(注:****一般是计算机名)点击设置密码,设置为一个你想要的密码。
2)同步IIS metabase中IWAM_MYSERVER的密码,在CMD中:c:/inetpub/adminscripts>adsutil set w3svc/wamuserpass "yourpassword"
3)同步COM+应用程序所用的IWAM_MYSERVER密码,在CMD中:c:/inetpub/adminscripts>cscript synciwam.vbs -v。
Q6:使用TestDirector Checker进行check,找到了个错误,尝试了并找到了解决办法,具体如下。
Internet Information Server-->Reports Virtual Directory 失败,提示信息为:Web Directory TDBIN/Reports Does Not Exist. TestDirector was installed incorrectly. Please Reinstall it.
解决方法:把reports目录的“执行权限”设置为“纯脚本”,再次执行check,全部通过,并且可以启动TD服务。
以下是win7 client系统中 运行TD出现的问题
Q1: 无法下载控件 下载失败
解决方法:修改IE, 工具--兼容性设置-- 把TD所在服务器的IP写上
工具--选项 勾掉:启用内存保护帮助减少联机攻击这个复选框
前言
公司的iOS测试机快达到
苹果规定的100个上限了,而因为the new iPad新出,我们需要新的quota来
测试新iPad,所以就仔细研究了一下苹果关于100个测试设备上限的规则。在这里分享给大家。规则的详细内容主要来自 苹果的官网文档。
规则
我总结出来的规则如下(附上原文以便对应):
每一个开发者membership year,只能有100次增加设备的名额。如果你增加一个设备,之后又将该设备删除,并不会将用掉的名额恢复.
You can register up to 100 devices per year for development purposes. Any devices added, then later removed, still count towards your maximum number of registered devices per year.
在每一个开发者membership year开始的时候,Team Agent和Admin角色可以选择删掉一些设备来恢复资格, 也可以清空所有设备来恢复到最多100次设备的名额。这个操作在Team Agent和Admin在一次新的membership year开始后即可使用,在使用时,需要注意,先将需要删除的设备删掉,然后才能添加需要新增的设备。一旦开始增加新设备,删除设备以恢复名额的功能将不再可用。
At the start of a new membership year, Team Agents and Admins can remove devices and restore the available device count for their development team to 100 devices.
When Team Agents or Admins first sign in to the iOS Provisioning Portal at the start of a new membership year, they will be presented with the option to remove devices and restore the device count for those removed devices.
Important Note: At the start of your membership year, make sure to remove all devices you no longer use for development prior to adding any new devices.
在以后整个membership year中,删除设备不会增加新的名额。
Removing devices during your membership year will not open these slots to add new devices.
举例
直接看规则比较晦涩,举个例子:
假如第一年,你增加了70个设备,同时删除了10个设备,这个时候,虽然你的设备数是60,但是可用的增加测试机的名额却只有30个了。
到了第二年,你续费了开发者身份,在你第一次登陆进去后,你可以看到你的可用设备恢复成 100 – 60 = 40个了。这个时候,你可以选择删除一些设备,例如你又删除了20个设备,这样你的名额数变成60个。之后你增加了一个设备,因为你选择了增加新设备,苹果认为你已经放弃删除设备以恢复设备数的机会,这样,你的名额就固定成59个。以后删除设备都不会增加新名额了,直到你的下一个membership year开始时才又会有这样的机会来删除设备释放名额。
总结
所以说,不管怎么样,你的账号下的可用测试设备始终不会超过100个。不会象有些人想的那样,每过一年名额就直接变成100了。另外,每年删除设备以恢复名额的机会只有开始的时候,以后删除设备也不会恢复名额。
那如果万一我的设备数达到上限,我又急需要增加新设备怎么办呢?我们不久前就遇到了这种情况。我们的解决办法是给苹果的技术客服发邮件要求他们帮助我们删除所有设备并且恢复到增加100个测试设备的名额。最终在过了2天后,苹果答应并帮助我们解决了问题。
具体做法是访问:https://developer.apple.com/contact/,点击 Program Benefits, 然后在新出来的提交界面中将需求填上。之后苹果会发邮件过来告诉你处理结果,可能需要打电话过去和他们沟通一些细节。在沟通完成后,苹果就可以立即帮助你状态修改到“可删除设备来增加测试设备名额”。这样,你就可以选择性的删除一些不需要的设备来释放一些名额了。
测试内容:采用httpref或者siege(都是免费web压力测试工具),主要针对Web服务器测试指标中的“系统瓶颈”部分进行测试,顺便对系统的通用指标、web服务器专用指标、
数据库等指标作测试。结果出来后,再填入系统瓶颈的表格中,其他的指标选择性地组织到一个表中。
测试方法:
比如说,如果用Httperf测试
httperf --server xx.com \ --port 80 \ --uri /foreground/all_stars \ --rate 100 \ --num-conn 2000 \ --num-call 1 \ --timeout 5 |
rate是指每秒多少个请求数,num-conn指共发多少个请求 ,num-call每次连接发送的请求数通常为1
sina的测试结果之一是:
httperf --server sina.com.cn --num-conn 300 --rate 30 httperf --client=0/1 --server=sina.com.cn --port=80 --uri=/ --rate=30 --send-buffer=4096 --recv-buffer=16384 --num-conns=300 --num-calls=1 Maximum connect burst length: 1 Total: connections 300 requests 300 replies 300 test-duration 10.687 s Connection rate: 28.1 conn/s (35.6 ms/conn, <=5 concurrent connections) Connection time [ms]: min 34.0 avg 98.7 max 4073.1 median 57.5 stddev 314.3 Connection time [ms]: connect 28.9 Connection length [replies/conn]: 1.000 Request rate: 28.1 req/s (35.6 ms/req) Request size [B]: 64.0 Reply rate [replies/s]: min 29.6 avg 29.7 max 29.8 stddev 0.1 (2 samples) Reply time [ms]: response 69.8 transfer 0.0 Reply size [B]: header 379.0 content 231.0 footer 0.0 (total 610.0) Reply status: 1xx=0 2xx=0 3xx=300 4xx=0 5xx=0 CPU time [s]: user 0.31 system 10.32 (user 2.9% system 96.6% total 99.5%) Net I/O: 18.5 KB/s (0.2*10^6 bps) Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0 Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0 |
每秒回应最大请求数为29.7
最大并发数为5
平均响应时间为 69.8毫秒
对国网进行模拟测试
需要Java开发人员提供几个和将来要上线的web应用所需要消耗资源接近的测试程序,然后用工具进行测试,选用的参数可以是可能的最大用户和并发数,然后进行统计。