Fast or Slow

Just another WordPress.com weblog

cygwin tool for statistics analysis

Posted by joychester on October 9, 2007

cygwin是我在进行性能测试结果分析或者是日志分析的时候用到的。Levi兄帮助我用这个工具写了一些脚本,便于我对大数据量的统计处理。

Posted in 测试技术 | Leave a Comment »

护照办好了,签证又成了问题!!

Posted by joychester on October 8, 2007

护照通过家里人的努力,真的办得还算快了,实际的办理时间只用了3天!!!速度之快是我没有办法想到的。在此有一个提醒给大家,如果落户地不满2年的,当地公安局会去发函调查你的上一个户口所在地的情况,一般会花5-10个工作日,大家要记着提前申请护照,也做好心理准备。

今天打电话准备预约美国签证,运气很被,名额已经占光,需要等下批发放的名额!!郁闷,怎么出个门就那么难呢?

主管告诉我要每天打电话去问,我很受鼓舞:)至少还没有放弃我的迹象。但是电话费/。。。。

心都抑郁了。。。。。台风Rosa来了,天气凉快多了

Posted in 生活杂记 | Leave a Comment »

Loadrunner learning–4

Posted by joychester on October 8, 2007

找到了有关Loadrunner的系统流程图,对于理解Loadrunner整个的操作过程还是很有帮助的,故贴之

—–from http://www.wilsonmar.com/1loadrun.htm

Posted in 测试技术 | Leave a Comment »

Forward—performance testing Goal(simpler edtion)

Posted by joychester on October 8, 2007

找到这篇文章,感觉和我目前的做法大体是一致的,所以就不需要我再写了,省去了很多油墨:)

The goal of performance testing is not finding bugs, but to remove the bottlenecks from the application and improve the efficiency.

Before doing a performance testing we basically need to know the following points

    1. Expected no of concurrent users or HTTP connections with your application
    2. Acceptable response time for your pages

For performance tuning basically we have two approach.

In Approach1(white-box), we can do the following,

    Code Analysis, We can search for poor algorithms or looping which is the reason for inefficiency.
    Database Analysis, We can use query optimizers and profilers to optimize the database.
    Hardware & Network, We can use utilities such as top, iostat to monitor hardware resources and ntop, netstat to monitor the network and Sockets.

In Approach2(black-box), for a Web application, testers will use tools that simulate concurrent users/HTTP connections and measure the response times automatically. If the response time does not meet your expectations tuning has to be done at application/hardware/database level.

In Tuning,

First we need to enhance the application code efficiency, then we can optimize the database.

If still your application doesn’t meet your requirements then the following steps will help you.

    1. Using cache mechanisms.
    2. Publish highly requested pages statically, so that they don’t hit the database.
    3. Scaling Web servers horizontally via load balancing.
    4. Scaling database servers horizontally and split them into read/write servers and read-only servers.
    5. Scale the servers vertically by adding more hardware resources (CPU,RAM)

Points to remember,

We should take care such that one variable is modified at a time and redo the measurements.

Functionally the application should be well tested and must be in good quality. i.e., the software under test is already stable enough so that performance testing process can proceed smoothly.

Posted in 测试技术 | Leave a Comment »

playing poker when you do estimation

Posted by joychester on October 5, 2007

今天看到scrum项目中一个很有趣的流程,就是玩扑克:)

当项目需要估计所需时间的时候往往会产生分歧或者成员相互间会彼此影响,假若采用扑克牌,将成员之间彼此分割开来,大家在估计的时候互不影响,只是在最后亮出自己的底牌(分数越高表示估计的时间越长),成员底牌相差最大的两个人,也就是分歧最大的两个人需要阐述自己的出牌的原因,这样做既可以了解不同成员对相同项目的理解的深度,也能较为公平的进行项目度量,不至于过于乐观或者悲观。

这种扑克需要特制,但也可以网上免费得到:)很有意思的一种项目管理方式哦

Posted in 测试技术 | Leave a Comment »

十一,给自己找点事做

Posted by joychester on October 3, 2007

这个十一,小春雷回家了,把我一个人扔在上海:)

我不习惯一个人的长假,因为本身就冷漠的上海,对于一个长假,简直就是像在坐牢,我决定去无锡–扬州,去避难。

先去找了小杨,一个月前就去过他那里,感觉他那里虽然简单,甚至是简陋,但是安静,悠闲,我不断的称赞那里的空气很好,阵阵凉风袭来,吹在身上无比的舒服,在上海很少有空旷的感觉,到处是人。。。。高兴的是他的工资终于涨了,虽然不多,但是毕竟还是对他的一种肯定,信心就是这样一步步的建立起来的。

我们第二天一起到了扬州,还是那样的休闲,熟悉,同学还都是老样子,但显然成熟了许多。转眼间两年过去了,同学逐渐都有了各自的归属,真为他们高兴,小杨要加油了,哈哈。

给春蕾班的孩子们交流自己的经验,感觉到压力很大,不想给他们任何的负面影响,所以有些话还是不要说的直接,更多的是让他们树立自信,坚持梦想。真的很听话的一帮孩子,带他们去参观母校,没有一个人掉队或者是捣乱,而且还主动给我们擦汗,感动。。。。。。祝福他们,生活一开始对他们不公平,但是自己不要服输。

想想自己的事业还没有一个定性,下一步的计划就是要把该做的列个计划,努力去实现。。。

Posted in 生活杂记 | Leave a Comment »

Trust, transparent and commitment

Posted by joychester on September 29, 2007

Develop process:
Sprints: a series of month- long iterations
Product backlog: the work to be done on a scrum project, it is the master list of all functionality desired in the product
Sprint planning meeting: the product owner prioritizes the items in the product backlog and describer to the team.
Scrum team: it consist of dev, QA and maybe other support role from outside of team
Sprint backlog: when the jobs/tasks are picked by the scrum team, then product backlog turn to sprint backlog
Daily scrum: hold on every day, in order to keep on tracking the status about each person and the tasks. It usually takes 15 minutes around; it is just a commitment to each other in the scrum team.
Sprint review meeting: at the end of each sprint, the team demonstrated the completed functionality at this meeting

Allowed:
Product owner set the priority of the product backlog
Daily scrum meeting: what did I do yesterday, what I will do today (if the daily meeting held in the morning), team member should just commit what he will do next.
Scrum master: facilitates the daily scrum should resolve any the blocking issues raised during daily scrum as soon as possible

Not allowed:
Product owner commits that he will not throw new requirements at the team during the sprint, any new changes should added in the next sprint.
Daily scrum meeting: it is not a technical meeting; do not discussion any topic so deep.

Posted in 测试技术 | Leave a Comment »

Loadrunner learning-3

Posted by joychester on September 28, 2007

一、关于参数的定义
在你录制程序运行的过程中,脚本生成器自动生成由函数组成的用户脚本。函数中参数的值就是在录制过程中输入的实际值。
例如,你录制了一个Web应用程序的脚本。脚本生成器生成了一个声明,该声明搜索名称为“UNIX”的图书的数据库。
当你用多个虚拟用户和迭代回放脚本时,也许你不想重复使用相同的值“UNIX”。那么,你就可以用参数来取代这个常量。
结果就是你可以用指定的数据源的数值来取代参数值。数据源可以是一个文件,也可以是内部产生的变量。
用参数表示用户的脚本有两个优点:
① 可以使脚本的长度变短。
② 可以使用不同的数值来测试你的脚本。例如,如果你企图搜索不同名称的图书,你仅仅需要写提交函数一次。在回放的过程中,你可以使用不同的参数值,而不只搜索一个特定名称的值。
参数化包含以下两项任务:
① 在脚本中用参数取代常量值。
② 设置参数的属性以及数据源。
参数化仅可以用于一个函数中的参量。你不能用参数表示非函数参数的字符串。
另外,不是所有的函数都可以参数化的。
二、参数的创建
可以指定名称和类型来创建参数。不存在对脚本中参数个数的限制。
在Web程序的用户脚本中,你可以使用如下过程在基于文本的脚本视图中创建参数。或者,也可以在基于图标的树形视图中创建参数。
要创建一个参数:
1、 将光标定位在要参数化的字符上,点击右键。打开弹出菜单。
2、 在弹出菜单中,选择“Replace with a Parameter”。选择或者创建参数的对话框弹出。
3、 在“Parameter name”中输入参数的名称,或者选择一个在参数列表中已经存在的参数。
4、 在“Parameter type”下拉列表中选择参数类型。
5、 点击“OK”,关闭该对话框。脚本生成器便会用参数中的值来取代脚本中被参数化的字符,参数用一对“{}”括住。
注意:在参数化CORBA或者General-Java 用户脚本的时候,必须参数化整个字符串,而不是其中的部分。
另外注意:除了Web或者WAP,缺省的参数括号对于任何脚本都是 “{}”。你可以在“General Options”对话框中的“Parameterization”标签(Tools>General Options)中定义参数括号种类。
6、 用同样的参数替换字符的其余情况,选中参数,点击右键,弹出菜单。从弹出的菜单中,选择“Replace More Occurrences”。搜索和替换对话框弹出。
“Find What”中显示了你企图替换的值。“Replace With”中显示了括号中参数的名称。
选择适当的检验框来匹配整个字符或者大小写。如果要搜索规则的表达式(.,!,?等等),选中“Regular Expression”检验框,然后点击“Replace”或者“Replace All”。
注意:小心使用“Replace All”,尤其替换数字字符串的时候。脚本生成器将会替换字符出现的所有情况。
7、 如果想用以前定义过的参数来替换常量字符串的话,选中该字符串,点击右键,然后选择“Use Existing Parameter”,子菜单“Use Existing Parameters”弹出。
从子菜单“Use Existing Parameters”选择参数,或者用“Select from Parameter List”来打开参数列表对话框。
注意:如果用以前定义过的参数来替换常量字符串的话,那么,使用“Parameter List”非常方便。同时,还可以查看和修改该参数的属性。
8、 对于已经用参数替换过的地方,如果想取回原来的值,那么,就在参数上点击右键,然后选择“Restore Original Value”。
在Web用户脚本的树形视图中创建参数
在Web用户脚本的树形视图中创建一个参数的步骤
1、将光标定位在企图参数化的地方,点击右键,从弹出的菜单中选择“Properties”。则相关的属性对话框打开。
2、点击在要参数化的参量的旁边的“ABC”形状的图标。“Select or Create Parameter”对话框打开。
3、在“Parameter name”中输入参数的名称,或者从列表中选择一个已经存在的参数。
4、在“Parameter type”中输入参数的类型。
5、点击“OK”关闭该对话框。用户脚本生成器会用参数来替换最初的字符串常量,并用一个表格形状的图标替换“ABC”形状的图标。
6、要恢复参数化以前的值,点击图标,然后从弹出的菜单中选择“Undo Parameter”,则以前的值便会重现。
三、定义参数的属性
创建参数完成后,就可以定义其属性了。参数的属性定义就是定义在脚本执行过程中,参数使用的数据源。
在Web用户脚本中,你既可以在基于文本的脚本视图中定义参数属性,也可以在基于图标的树形视图中定义参数属性。下面的过程将教你如何在基于本文的脚本视图中定义参数属性。
定义参数属性步骤:
1、 在参数上点击右键,有菜单弹出。
2、 在弹出的菜单中,选择“Parameter Properties”。参数属性对话框打开,显示和当前参数类型相关的属性。
3、 输入参数的属性值。
4、 点击“Close”关闭参数属性对话框。
在Web用户脚本的树形视图中定义参数的属性
1、 将关标定位在参数上,然后点击右键,选择“Properties”。属性对话框打开。
2、 点击要定义属性的参数旁边的表格形状按钮,点击右键,选择“Parameter Properties”。参数属性对话框打开,和参数类型相关的属性显示出来。
3、 输入参数的属性。
4、 点击“Close”关闭参数属性对话框。
使用参数列表
使用参数列表可以在任意时刻查看所有的参数,创建新的参数、删除参数,或者修改已经存在参数的属性。
要使用参数列表:
1、 点击参数列表按钮或者用“Vuser>Parameter List”。参数列表对话框打开。
2、 要创建新的参数,点击“New”按钮。新的参数则被添加在参数树中,该参数有一个临时的名字,你可以给它重新命名,然后回车。
注意:不要将一个参数命名为“unique”,因为这个名称是用户脚本生成器本身的。
设置参数的类型和属性,点击“OK”,关闭参数列表对话框。
注意:用户脚本生成器创建新的参数,但是不会自动用该参数在脚本中替换任意选中的字符串。
3、 要删除已有的参数,那么,要先从参数树中选择该参数,点击“Delete”,然后确认你的行为即可。
4、 要修改已有参数,那么,要先从参数树中选择该参数,然后编辑参数的类型和属性。
四、理解参数的类型
在你定义参数属性的时候,要指定参数值的数据源。你可以指定下列数据源类型的任何一种:
Internal Data 虚拟用户内部产生的数据。
Data Files 存在于文件中的数据。可能是已存在的文件或者是用脚本生成器新创建的。
User-Defined Functions 调用外部DLL函数生成的数据
Internal Data包括以下几种:
1. Date/Time
Date/Time用当前的日期/时间替换参数。要指定一个Date/Time格式,你可以从菜单列表中选择格式,或者指定你自己的格式。这个格式应该和你脚本中录制的Date/Time格式保持一致。
2. Group Name
Group Name 用虚拟用户组名称替换参数。在创建scenario的时候,你可以指定虚拟用户组的名称。当从用户脚本生成器运行脚本的时候,虚拟用户组名称总是None。
3. Load Generator Name
Load Generator Name用脚本负载生成器的名称替换参数。负载生成器是虚拟用户在运行的计算机。
4. Iteration Number
Iteration Number用当前的迭代数目替换参数。
5. Random Number
Random Number用一个随机数替换参数。通过指定最大值和最小值来设置随机数的范围。
6. Unique Number
Unique Number用一个唯一的数字来替换参数。你可以指定一个起始数字和一个块的大小。
7. Vuser ID
Vuser ID用分配给虚拟用户的ID替换参数,ID是由Loadrunner的控制器在scenario运行时生成的。如果你从脚本生成器运行脚本的话,虚拟用户的ID总是-1。
五、数据文件
数据文件包含着脚本执行过程中虚拟用户访问的数据。局部和全局文件中都可以存储数据。可以指定现有的ASCII文件、用脚本生成器创建一个新的文件或者引入一个数据库。在参数有很多已知值的时候数据文件非常有用。
数据文件中的数据是以表的形式存储的。一个文件中可以包含很多参数值。每一列包含一个参数的数据。列之间用分隔符隔开,比如说,用逗号。
对数据文件设置参数属性
如果使用文件作为参数的数据源,必须指定以下内容:
1. 文件的名称和位置
2. 包含数据的列
3. 文件格式,包括列的分隔符
4. 更新方法
如果参数的类型是“File”,打开参数属性(Parameter Properties)对话框,设置文件属性如下:
1. 在“File path”中输入文件的位置,或者点击“Browse”指定一个已有文件的位置。缺省情况下,所有新的数据文件名都是“parameter_name.dat”,注意,已有的数据文件的后缀必须是.dat。
2. 点击“Edit”。记事本打开,里面第一行是参数的名称,第二行是参数的初始值。使用诸如逗号之类的分隔符将列隔开。对于每一新的表行开始一行新的数据。
注意:在没有启动记事本的情况下如果想添加列,就在参数属性对话框中点击“Add Col”,那么“Add new column”对话框就会弹出。输入新列的名称,点击“OK”。脚本生成器就会添加该列到表中,并显示该列的初始值。
3. 在“Select Column”部分,指明包含当前参数数据的列。你可以指定列名或者列号。列号是包含你所需要数据的列的索引。列名显示在每列的第一行(row 0)。
4. 在“Column delimiter”中输入列分隔符,你可以指定逗号、空格符等等。
5. 在“First data line”中,在脚本执行的时候选择第一行数据使用。列标题是第0行。若从列标题后面的第一行开始的话,那就在“First data line”中输入1。如果没有列标题,就输入0。
6. 在“Select next row”中输入更新方法,以说明虚拟用户在脚本执行的过程中如何选择表中的数据。方法可以是:连续的、随机的、唯一的、或者与其它参数表的相同行。
7. 选中“Advance row each iteration”表示虚拟用户在每次迭代都使用新的一行数据而不是所有的迭代都使用相同的数据。
从文件中更新参数值
若使用文件中的数值,脚本生成器会要求你指定给参数分配数值给的方法。可用的方法有:
1. 顺序(Sequential):该方法顺序地给虚拟用户分配参数值。如果正在运行的虚拟用户访问数据表的时候,它会取到下一行中可用的数据。
2. 随机(Random):该方法在每次迭代的时候会从数据表中取随机数
3. 使用种子取随机顺序(Use Random Sequence with Seed):如果从Loadrunner的控制器来运行scenario,你可以指定一个种子数值用于随机顺序。每一个种子数值在测试执行的时候代表了一个随机数的顺序。无论你何时使用这个种子数值,在scenario中同样的数据顺序就被分配给虚拟用户。如果在测试执行的时候发现了一个问题并且企图使用同样的随机数序列来重复测试,那么,你就可以启动这个功能(可选项)。
4. 唯一(Unique):Unique方法分配一个唯一的有顺序的值给每个虚拟用户的参数。
5. 与以前定义的参数取同一行(Same Line As ):该方法从和以前定义过的参数中的同样的一行分配数据。你必须指定包含有该数据的列。在下拉列表中会出现定义过的所有参数列表。注意:至少其中的一个参数必须是Sequential、Random或者Unique。
如果数据表中有三列,三个参数定义在列表中:id1,name1和title1,如下:。
ID Name Title
132 Kim Manager
187 Cassie Engineer
189 Jane VP
对于参数id1,你可以指示虚拟用户使用Random方法,而为参数name1和title1就可以指定方法“Same Line as id1”。所以,一旦ID“132”被使用,那么,姓名(Name)“Kim”和职位(Title)“Manager”同时被使用。
六、从已存在的数据库中导入数据
Loadrunner允许你利用参数化从已经存在的数据库中导入数据。可以使用下列两种方式之一:
1. 使用Microsoft Query(要求在系统上先安装MS Query)。
2. 指定数据库连接字符串和SQL语句。
用户脚本生成器在从数据库中导入数据的过程中提供了一个向导。在向导中,你指明如何导入数据-通过MS Query创建查询语句或者直接书写SQL语句。在导入数据以后,以.dat为后缀并作为正规的参数文件保存。
要开始导入数据库中数据的过程,在参数属性对话框中点击“Data Wizard”,则,数据库查询向导弹出。
要创建新的查询
1. 选择“Create new query”。如果需要MS Query的帮助,选择“Show me how to use Microsoft Query”,然后点击“Finish”。
如果你还没有安装Microsoft Query,Loadrunner会提示你这个功能不可用。在进行之前,从Microsoft Office中安装MS Query。
2. 在Microsoft Query中遵循以下步骤,导入期望的表和列。
3. 在完成数据的导入后,选择“Exit and return to Virtual User Generator”,然后点击“Finish”。在参数属性对话框中数据库记录以data文件的形式显示出来。
要在MS Query中编辑并查看数据,选择“View data or edit in Microsoft Query”。若要结束,则选择“File>Exit and return to Virtual User Generator”返回到脚本生成器。
4. 在“Select Column”部分,指定包含当前参数数据的列可以指定列号或者列名。注意:列标题默认为第0行(row 0)。
5. 从“Select next row”列表中选择一个更新方法来告诉虚拟用户在脚本指定的过程中如何选择表中的数据。可选项是:Sequential、Random、Unique或者Same Line As。其中每一项的含义文章前面已经讲述,就不再赘述。
6. 如果选择“Advance row each iteration”,虚拟用户在每次迭代的时候会使用新的一行的数据而不是重复同样的数据。
要指定数据库连接或者SQL语句
1. 选择“Specify SQL Statement”,然后点击“Next”。
2. 点击“Create”指定一个新的连接字符串。选择数据源的窗口弹出。
3. 选择已有的数据源,或者点击“New”创建一个新的数据源。向导将提示你穿过创建ODBC数据源的过程。在完成后,连接字符串就会在连接字符串框中显示出来。
4. 在SQL框中,输入或者粘贴SQL语句。
5. 点击“Finish”继续SQL语句并导入数据。数据库记录将以data文件的形式显示在参数属性框中。
6. 在“Select Column”部分中,指定包含当前参数数据的列。你可以指定列号或者列名。
7. 从“Select next row”列表中选择一个更新方法来告诉虚拟用户在脚本指定的过程中如何选择表中的数据。可选项是:Sequential、Random、Unique或者Same Line As。
8. 如果选择“Advance row each iteration”,虚拟用户在每次迭代的时候会使用新的一行的数据而不是重复同样的数据。
from 51CMM.COM

Posted in 测试技术 | Leave a Comment »

Loadrunner learning-2

Posted by joychester on September 28, 2007

I check on the web and find some information on the Architecture of loadrunner, and basically it has four main parts if we install the loadrunner.

There are:

1. VuGen: which is used to generate testing scripts by recording or writing code;

2. Controller: which is used to control/manage the agent(s) and monitor the server performance data;

 3. Load generator(s): which is used to launch the scripts and add the load to the server under test (so this component is actually impact the result of performance testing)

4. Analysis: which is used to do some report and tuning related work for testing engineer.

reference: www.wilsonmar.com 

And if we can install the Loadrunner in Shanghai office especially the load generator agent(s) which send requests to the target server actually, it will be little impact on performance result.

Posted in 测试技术 | Leave a Comment »

一波三折

Posted by joychester on September 27, 2007

去美国的日程可能有所变动,从原定的10月中下旬到11月份,这也就意味着我也许能赶的上,看来一些事情如果当你没有刻意去做或去想的话,结果反而是会好的!希望这次机会可以抓住,用一颗平常心!

今天试用了思科的VOIP phone 感觉也不是想象的那样好,华为也能做的一样好:)啸叫也很严重。不过它的语音邮箱功能还是比较吸引我的,可以直接通过outlook读取语音留言邮件,强!!

Posted in 测试技术 | Leave a Comment »