-
淘宝的
2009-12-30 16:15:59
-
lr学习总结
2008-10-16 17:28:36
这两天收获颇丰,上次七月份弄完的性能测试时至今日已经有三个月了。
以前学习经常是上网找资料,这次经高人指点,好好研究了帮助文档。收获很大。发现好多问题在帮助文档里都有说明。以后决定了,遇到问题首先是找帮助文档,以前经常是在网上海搜。
另外就是对于输入类似提交数据,我设置的参数是中文的汉字。但是执行完成后发现生成的数据都是问号。郁闷了半天经过一个好心人提醒,将参数的txt文档存成utf-8模式即可。
今天下午又录制了一个脚本,参数呢我打算使用上面方法生成的文档。可惜设置检查点后,发现每次检查到的条数只有一条,最后自己灵机一动,是不是还是参数的格式问题,我又把他还原成第一格式。^_^通过。
另外就是对于web-reg-find("text=123",last;)使用时候要将该函数放在查询之前,否则它是不会检查到东西(对于查询结果的检查)的。哈哈
-
ip欺骗
2008-10-15 09:55:13
转载http://www.51testing.com/?75241/action_viewspace_itemid_94850.html
设置IP欺骗的原因
1、 当某个IP的访问过于频繁,或者访问量过大是,服务器会拒绝访问请求,这时候通过IP欺骗可以增加访问频率和访问量,以达到压力测试的效果。
2、 某些服务器配置了负载均衡,使用同一个IP不能测出系统的实际性能。LR中的IP欺骗通过调用不同的IP,可很大程度上的模拟实际使用中多IP访问和并测试服务器均衡处理的能力。
多IP地址的设置
IP地址的设置较为简单,可直接在本地连接中增加IP,或者通过LR自带的工具“IP wizard”设置,当然也可以使用其它软件设置。唯一需要注意的就是注意设置的IP的有效性。
“选项”中的IP设置使用“选项”对话框中的“常规”选项卡,可以选择IP地址模式。只有在专家模式下操作 Controller 时,才显示该选项卡。
要设置常规专家模式设置,请执行下列操作:
1. 选择“工具”>“选项”。将显示“选项”对话框。选择“常规”选项卡。
2. 选择多个 IP 地址模式。
需要注意的是,这里的IP地址模式和运行时设置中的常规设置的不同,会导致IP欺骗失效。具体该怎么设置,这里就不讲了,很简单的东西。
启用IP欺骗
从 Controller 启用多个 IP 地址
定义多个 IP 地址后,您就可以设置一个选项,让 Controller 使用该功能。
要从 Controller 启用多个 IP 地址,请执行下列操作:
在 Controller“设计”视图中,选择“场景”>“启用 IP 欺骗器”。
注意:必须在连接到负载生成器之前选择该选项。
IP欺骗功能验证
IP欺骗已经设置了,但是是不是有效呢?通常会有这样的疑问。下面我们通过一个简单的试验,来验证是否有效。
在脚本的Action()部分增加如下代码:
char * ip=lr_get_vuser_ip();
if(ip)
lr_vuser_status_message("The ip address is %s",ip);
else
lr_vuser_status_message("IP spoofing disabled");
然后通过控制器设置并运行场景.
对于这段代码我始终是看不到他在那输出,所以我用了一个极端的方法,就是将“lr_vuser_status_message”函数改为“lr_error_message”这样我就可以很容易看到是不是虚拟ip是否有效。 哈哈,这片文章就这一句话是原创。
易错点
1、和Generator搞混。以为添加多个IP后,需要添加多个IP对应的Generator才可以使用。(同一个Generator只需要以其某一个IP添加到Generator列表中即可以使用其它的IP。)
2、在上一个错误基础上,对于同一个脚本,创建多个Vuser执行组,然后以不同IP选择同一个物理Generator来执行。( 实际上,在场景中除非需要在这个Generator上运行多个不同脚本,否则没有必要多次以不同IP选择。)
其实只要记住两个要素即可使用这个功能:
1、 用IP wizard 添加多个IP;
2、在Controller中通过Enable IP Spoofing。
而在使用IP欺骗功能上应该注意三点:
1、虚拟IP是同一个Generator上的多个IP,这种分配过程由Controller自动来进行;
2、对于同一个Generator,你模拟的用户数量多于IP数量时,将会发生IP重复的现象,否则将随机分配不同的IP。
3、对于同一个Generator,以其某一个IP添加到Generator中即可,不需要用不同的IP添加多次。
-
如何发现更深次的bug
2008-10-14 15:31:59
转自http://www.51testing.com/?2730
在我们日常的测试活动中,单纯的功能界面测试(黑盒测试)发现的缺陷质量不高,即使发现了,也很少能从根本上去定位,这样的bug提交上去,给我们的研发同事修复带来了困难,同时也不利于提高我们自身的能力。这里我介绍一下个人的经验。
1、按照需求说明编写用例,然后严格执行,这个方法最常见。
2、在发现问题后,不要立刻就想着提交bug,应该做下记录,然后自己尝试着去分析这个问题产生的原因,比如看一下源代码,有些问题测试人员是可以自己定位的,只要自己确认了,提交上去的bug质量会更高。比如,执行搜索的时候,输入某个字段值,没有搜出来,查看代码后,发现sql语句并未执行,这时,我们再提交bug,描述里可以具体到那个页面文件,那个源代码,研发同事定位也方便,同事也对我们的技术能力认识上有改变。
3、如果测试环境带有控制平台,比如tomcat,jboss,weblogic等等,都有控制平台,那么我们测试的时候,不仅仅需要关注前台的页面表现,还要看监控平台上的信息日志。有些系统对错误页面做了处理,我们在发现这类问题的时候,顶多将处理过的错误页面写到bug中,根本的原因可能无法得知,其实我们可以利用控制平台获取真正的错误原因,写到bug中。
4、结合数据库进行测试,一般流程性的测试,最重要的就是数据在数据库中的状态变化。比如移动的项目,很多是异步的,光从页面是看不到效果的,所以我们可以结合数据库进行测试,弄清楚数据在数据库中的流转流程,这样才能发现更深层的bug,当然需要我们掌握数据库的使用,尤为重要要的是sql语句。举个例子,进行添加操作的时候,添加完成后没有反应,可能有两种情况,第一,添加根本未成功,第二,添加成功了,没回显出来,那么我们可以通过sql查一下添加的数据,如果数据库中有了,就说明回显出了问题,如果没有,就说明insert 出了问题。
5、可以查看系统的日志检查测试过程中的问题。一切异常都需要关注
不错,尤其是第四个总结自己以前也发现过这样的问题,只是自己却不知道总结
-
转载《从外行到专业的软件测试工程师的经历》
2008-09-24 10:14:30
其实转行并没有什么特别的,如果你想听到一些传奇经历,恐怕要让你失望了。我2001年大学毕业,大学期间对计算机有兴趣、有热情,就利用业余时间买了大学计算机专业的教材自学了一遍,毕业前考了一个计算机三级B 的证书。毕业后混进了一家软件公司做HIS系统,做了几个大项目后转到测试——当时的优势是有资深的行业背景,又有开发经验,了解系统的实现——之后就在 测试行业一直混迹到现在。
几年来换过几家公司,所做的系统主要都是HIS系统,电信BOSS 系统以及其它运营商级系统。自己所从事的工作包括开发工程师,测试工程师,Team leader,在前两家公司也零零碎碎的做过一些售前和需求工作。目前又转回技术职位,在一家外企做 Senior Test Engineer,所关注的方向是软件测试过程改进,性能测试和软件测试自动化。
对于转行来说,如果能够充分利用之前专业所积累下的知识和经验,将会对转行有很大的帮助。我的第一份工作并不是因为我的开发能力强,而是因为当时公司所有人对医院内部的各种业务的熟悉程度都不如我。很多软件企业都是作企业应用的,为某一个行业提供服务,那么相对来说,行业知识比计算机专业知识更重要,也更难学的精通,因为作为技术人员很难有机会沉浸到那个环境中去。
对于测试工程师来说,有开发经验和没有开发经验的确是有差别。但是这并不是关键,关键在于如何认清自己的优势并加以利用,找到合适的定位而不是去和别人的长处一争高低。
另外,无论做哪个行业,作什么工作,兴趣都是最重要的。有了兴趣,你就不会怕吃苦,不会怕跨行业时的阵痛,可以从不断超越自己的过程中收获很多乐趣和经验。
其实你问到这个问题让我突然想起了一件事情。在之前几年的工作中,虽然我从来没有刻意要安排自己的发展之路,但是也倒是一路走的很顺利,我一直都认为是幸运女神的眷顾,不过今天想一想,其实在几年的工作生涯中有些东西是不知不觉帮助了我的发展的,这个过程中有些东西是可以总结出来作为经验的,只是一直都被我忽视了。举个例子,在跨行业和换工作是,要尽可能避免太大的变动,要保证新工作的压力不会大到超过自己所能承受的最大限度。在我自己的工作经历中:
1. 第一个行业,优势是对于医院内部各部门以及跨部门业务的精通。所以别人看来头痛无比的东西对我来说轻车熟路,并且乐于同我交流,我用行业知识交换来了很多计算机知识和开发经验。另外,HIS系统其实是一个很庞大繁杂的系统,除了业务类型众多,流程复杂外,还有各种复杂的业务逻辑和算法,甚至包括了完整的财务系统和进销存系统。这使我对“大系统”有了一种宏观上的感受,也见识到了大系统的开发和部署过程中的各种问题;
2.第二个行业是电信行业,优势是对软件测试技术以及开发过程、开发技术的熟悉,所以可以很快的上手本职工作,有足够多的时间学习了各种通信领域的知识,熟悉了各种电信行业的系统和业务;
3. 第三个行业是IPTV和DVB行业,优势是对软件测试技术/过程以及开发过程的精通,和对电信系统行业系统和业务的熟悉——在我学习和测试IPTV以及 DVB行业系统时,可以借鉴到很多电信行业系统的经验——包括技术方面和业务方面。而新近获得提升的是外企工作经验和行业经验,以及英文水平。
我的看法是现在的软件行业分工越来越细,越来越明确,但是工作领域的交叉也越来越多,例如我们公司有些开发人员对于测试的理解恐怕比很多专职测试工程师还要 深入,而在我们实际的测试工作中,也要求测试工程师在计算机网络、数据库、操作系统以及程序设计语言方面有较多的经验。一个测试工程师所要面对的就是面前全是路,自己该选哪一条的问题。不过我的感受是,并不需要刻意成为全能选手,但是要积极的对待自己手边的每一份工作,从工作本身出发,培养自己快速反应的能力和快速学习的能力,不断想着如何更好、更快的完成自己的工作,并以此为出发点去带着问题学习,多多跟同事、同行交流。这样要好过去学习一些开起来漂亮、热门,但是总是用不到的技术好的多。
另外,如果你有了足够多的工作经验,就会发现每件工作都有很多种做法,自己拥有超强的技术并不是最重要的,也未必是最有效的。这也是为什么外企更加看重 soft skill 的缘故。
-
转载面试题
2008-09-12 11:44:04
虽然还是不够全面,但是还是可以用来对付一些基本笔试面试的。
一.基本数据类型(WINDOWS32位机下)
Char 1个字节
Short 2
Int 4
Long 4
Float 4
Double 8
Long double 10
指针: 32位机. 4个字节.
浮点数双精度的比较;
Float f;
判断F是否为0
If( f>=-0.00001&&f<=0.00001){ =0} else {!=0};
------------------------------------------------------------------------------
-----------------------------------
二.修饰保留字.
Const:
Const char*p//p 指向的内容不能被修改
Char const *p; // p指针不能修改
Const type fun(); // 返回值类型为一个const type类型,不能修改
Fun( const char *p); fun( const A &a) //保护指针,引用传递的值不被修改.
类成员函数:中 fun() const; //表明FUN不能修改成员变量,不调用非const 成员函数.
Volatile:修饰变量时,确保变修改后保存在内存中,每次取数从内存中取.
Static:
静态变量: 保存于数据段中., 只初始化一次.
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就
是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同
。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文
件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作
用域, 即只在定义该
变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作
用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中
引起错误。
从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了
它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该
说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文
件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文
件。static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其
他文件单元中被引用;作用域限于本文件!static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一
次调用函数时依据上一次结果值进行改变;
如: fun()
{
Static int m=0;
M++;
Cout<<m<<endl;
}
调用:
Fun();
Fun();
输出: 1
2static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个
被调用中维持一份拷贝。作用域限于本文件------------------------------------------------------------------------------
---------------------------------------
三.内存使用:程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 即数据段)中,动态申请数
据存在于( 堆)中。
分配方式有三种,请记住:
-1- 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局
变量、常量,静态变量.
-2- 栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限。
-3- 堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的
内存。--------动态申请内存:---------------
Malloc/free 与 new/delete 的区别;
前者: 是C的库函数. 在C++中创建对像时,不会调用构造函数,FREE时也不会调用析构函数
.
后者: 是C++中运算符, 创建析构对象都会调用构造函数,与析构函数.注意:
Free(p)或delete p后, P成为野指针, 并非为空, (P所指地址不变,只是所指内存已
释放)
两次释放P会出错.
最好,释放后加个P=NULL. 空指针多次释放不会出错.
------------------------------------------------------------------------------
---------------------------------------
四.运算符:
++,--操作:
A++ : A加一后, 表达式返回A加一前的附本,(非左值)
++A: A加一后,表达式返回加一后的A.(左值)位运算.
使用异或交换数据: 交换A与B的值
A^=B; 即: A=A^B;
B^=A; B=B^A;
A^=B; A=A^B;
------------------------------------------------------------------------------
---------------------------------------
五.语句:
For(A;B;C) C语句是在每次循环后才执行.
如: y=10;
for( i=0;i<10;y=++i)
{
Cout<<y<<endl;// 第一次输出是10.
}
循环语句设计:尽量小循环放外面,大循环放里面.-----原因减少循环之间的切换.
------------------------------------------------------------------------------
---------------------------------------
六.函数设计:
参数传递选择--------
作为输入参数的,应该用CONST作保护 如:strcpy(char*str1,const char*str2)
要修改函数外面的变量时可用 :
1, 指针传递: 即把变量地址传入函数; 如: FUN( int**m);
调用时: int m=0;
FUN(&m);
2. 引用传递: FUN(int &m),调用时:int m=0; fun(m);
3. 如果只要修改一个外面的变量,也可以用返回值解决,但是多个的话就要
用上面两种方法中的一种.
内部变量:
Static 变量;(注意);
FUN()
{
Static int m=0;
……..
}
其中M 只初始化一次. 每次调用FUN()后,都会在前一次调用的基础上进行修改M 值函数指针:
如: void (*pFun)(int); 则pFun 为一个函数指,函数参数必须为一个INT参数.
调用:
pFun=FUN;
pFun(b); 或 (*pFun)(b); //一定要加个括号;
(主要用于回调函数设计)另一种定义:
Typedef void (*pFun)(int a);
则pFun成为一个函数参数为一个INT的函数指针类型.
定义: pFun p=FUN;
函数返回:
不要返回栈内存指针;
如: char* fun()
{
Char a[]=”kdkdk”;///栈中的一块内存
Return a;///返回栈中内存地址。
}
(面向对象的函数设在后面);
------------------------------------------------------------------------------
----------------------------------------
七.指针与数组;
指针++,--;
Int *p;
如果p++后,则P的值应该是增加4
指针的累加与它自己的类型有关.
Char str[]=”akakak”;
Strlen(str) 是求串的长度, 所以一定要小心那个’\0’结束符;
Strcpy(str1,str2);, ///一定要小心’\0’------------------------------------------------------------------------------
----------------------------------------
面向对象:
一. 类
默认四个函数: 无参数构造函数, 拷贝构造函数(浅拷贝), 赋值函数(浅), 析构函数.重写赋值函数时,注意要避免自赋值.(参考高质量C++,string类的编写)
--------------------------------------------------------------------------
函数重载: 同一区域内,函数名相同,参数列表不同.(略)---实现编译时多态函数覆盖: 在子类与父类之间. 由虚函数产生.--------------运行时多态
Class A
{
Virtual void fun(){}
};
Class B: public A
{
Void fun(){}
}
则子类中的fun()覆盖了父类中的fun();函数隐藏: 在子类与父类之间, 不是虚函数,但是函数名相同,参数列表不一定相同.
子类函数会隐藏父类的同名函数.
Class A
{
Void Fun 1();
Void Fun2();
}
Class b : pubic A
{
Void Fun1();
Void Fun2(int);
}
则fun1,fun2都隐藏了父类的同名函数.基类指针与子类指针的使用:
假设A为父类,B为子类;
定义: B b;
A*pA=&b;/// pA只能调用A类中的函数,和B中继承了A中的虚函数.
/// 但是不能调用,A中被覆盖的函数与B类中的其它函数.
B*pB=&b;//// pB只能调用B类中的所有可访问函数,和A中继承下来的所有
/////// 公有函数. 但是不能调用A中被B隐藏或覆盖的函数.
--------------------------------------------------------
带virtual 的析构函数:
Class A
{
Virtual ~A(){ cout<<”in A”<<endl; }
}
Class B: public A
{
Virtual ~B(){ cout<<”in B”<<endl;}
}
定义:
A*Pa=new B;
Delete pa;
输出:in A
In B
但是如果,A中的析构函数没有virtual, 则结果只是:in A
原因: 不明!类中回调函数设计:
使用友元函数,或 static 函数。
原因:两者不存在this指针。
如果要修改对象成员,则可以把对象指针或引用传入函数。
如: static void fun(A*Pa),,,or static void fun(A&a);
面向对象函数设计:
Void fun(A a) -----------------//出现临时对象
{
-----------其它代码;
A aa;
Return (aa);--------------//出现临时对象;
}
优化后:
Void fun(A&a)
{
---------其它代码
RETURN (A());
}类大小计算:
空类,大小不为0;
static成员变量,当sizeof()求类对象大小时,static变量不会计入其中。
其它参考sizeof()专题
解决头文件重复包含:
1.#pragma once.
2. ifndef/define/endif------------------------------------------------------------------------------
----------------------------------------
二.运算符重载。
赋值: A& ōperator=(A&other) //返回引用。
{
避免自赋值;
---------其它代码---------
Return *this;
}
前++:A& operator++()///////自加后返回本身。返回值为引用。
{
This->value+=1;
Return *this;
}
后++:A operator++(int)/////int 用于区另前加加,还是后加加。//值返回{
A temp(*this); /////自加后,返回一个自加前的附本。*this->value+=1;
Return temp;
}
非类成员函数++,定义(友元)
A& operator++(A&a)//前加加
A operator++(A&a,int)//后加加。
函数实现同上。
(其中减减的与++类似)多继承有待补充;?/???????
模板
------------------------------------------------------------------------------
----------------------------------------
数据结构与算法
(最好这里能做到于老师的标准:看到题目就能写出算法)
---------------------------------------------------------------------
链表操作:(不带头结点,书上的都是带头结点的)
主要是不带头结点的操作,记住可能要修改头指针,所以注意函数参数与返回值设计。(
细心);(华为面试)
静态链表
栈队列的使用:
二叉树遍历,图遍历,非递归实现。(华为,三G门户面试);
串操作:
KMP算法(模式匹配) (深信服笔试);
二叉树:
三种遍历—递归与非递归。(华为面试);
计算叶子数,计算结点数。(华为笔试,迅雷笔试);
哈夫曼树--------(不知什么公司的面试题了);
图:
十字链表结构
两种遍历---深度(非递归与递归),广度-----队列。
查找:
二分查找-----递归与非递归。(普信笔试)
二叉排序树
红黑树(了解,深信服面试)set ,map内部使用。
B-,B+树,了解。
键树-----用二叉对表示,键的匹配。
哈希表------哈希函数编写,解决冲突的方法4个(深信服面试);
内部排序:
插入排序
快排
堆排序,堆操作。
归并排序------------各种形式的归并(QQ笔试);
基数排序。
(记住各种排序的复杂度,最好会自己计算.)
其它算法:
Strcpy, strcmp, strcat, memcpy, string类的编写。最大公约数,最小公倍数,素数,PI计算。
链表环判断,链表交点判断。找链表中间结点,链表反序。(华为面试)
八皇后------深信服笔试,(一个朋友的QQ面试)STL:
Vertor List set map, 使用与内部实现。
------------------------------------------------------------------------------
------------------------------------------------------------系统编程(windows or unix)------------------------------
(可以在windows 与UNIX中选择一个,如果两个都行就更好)
多进程
多线程
进程/线程间同步与通信.-------这个也很重要.
CriticalSection, mutex, event, semaphore.区别与使用
Unix下不懂.
网络编程-------select()与setsockopt(),多播,广播.问得最多.
最好能写出所有常的SOCKET函数,和基本流程.TCP/IP协议, TCP, IP ,UDP 头的组成.各个控制位的作用.
地址分类,子网,子网掩码,多播地址,广播地址,网络号,主机号.
MFC下的 SendMessage()与PostMessage()区别.
-----------------------------------------------------------------
数据库:
多个关系表设计,
基本SQL语句的编写,嵌套查询,多表查询
操作系统:
P---V操作。生产者与消费者。用代码实现。(华为面试);
(A一天生产3个饼,B一天生产4个饼,C一天吃10个,现有100个饼,用PV操作编程,问多少天可以吃完)
------------------------项目----------------------------
如果你没有项目,那你就把自己的课程设计也搬出来,不要怕别人笑你.千万不要说大话,什
么东西我很牛B,面试官几句话可以试出你来.自己有料的地方一定要突出给他看.项目分析:
系统功能-》整体架构-》自己负责的模块-》遇到的困难-》有待改进的地方-》存在的瓶颈
,与解决方案。
(个人认为按上面的顺序分析项目,面试前一定要先自己对自己介绍下项目)
------------------------------面试细节-----------------------------------
1---面试进门后,一定要向面试官问好,等面试官示意坐下时才坐下. 面试完后, 要道谢,
如果对方和你握手,一定要站起来
握手要有力,表达自己的诚意.(可以说:希望我有机会为公司效力…等等之类的话);2---当问及工资问题时,(书面形式写期望工资) 一定要说按公司薪水制度.
原因: 刚从学校出对公司没有贡献,工资应该和贡献成正比,按公司的薪水制度比较合
理.3-----描术自己的强项??弱点???职业目标??,性格??自我介绍??为什么要选择做这个职位
/公司?? 用英语描术学校,家乡(华为面试)
(最好中英文都会表达,一定要作好这些准备)
4---你有什么问题要问吗????不要关涉工资和培训.,要表明自己加入公司的决心.
(中大一学生的回答:是否进入公司就可以接手项目,个人觉得不错)6---越简单的题目越是考你的细心.所以要注意细节,小心再小心.
7---说话要表现自我,千万不能说自己什么很了不起….绝不可说大话,错了就是错了,要承认.
不会的,也要直接说不会(也可请教),会的就直接说出来.,不要吞吞吐吐,不要不懂装懂
.
如果面试官说自己错了,但自己发现不了,可以请教下面试官(能不能指点下我哪里错了
,我真看不出来),虑心学习,并改正.即使BS了,也要抵住压力,不要就起身走人,要请教面试
官,错在哪,应该怎么做.??要顺着面试官的意思,不要与其争执.一定要抗压力,抵住.
8—成绩问题:
主要是针对和我一样成绩很差的同学。当面试官问到怎么你的成绩那么差。你一定
要想到好的解围方法。他不是看不起你而是给你施加压力,看你在压力面前怎么样解决问
题,能不能抵住压力。
9---自信,一定要自信,但不是自认清高。
-
bug bush
2008-09-09 09:23:46
今天看到一个博人写的博客很有意思,bug bush (bug大扫除).bug bush 一般发生在beta版上市之前,由市场人员,开发人员,产品人员一起参与,进行bug大扫荡.这里是这位博人写的链接.以供自己有时间效仿一下.
http://www.51testing.com/?115619/action_viewspace_itemid_75493.html
-
点滴积累
2008-08-09 10:48:09
引用别人的一句话,测试要从点 到线 由线到面.
现在正在测试公司的中间件,由四个部分组成,刚开始只是在测试每个模块的单独的功能测试,今天早上突然发现,当其中一个模块不启动的时候,引发另外一个模块退出时候的直接崩溃.自己深受振动,是不是类似这样的问题还有很多.
呵呵,今天写到这里,但愿能从这个条路上多挖出几条大鱼,大bug!哈哈
-
冒烟的一点发现
2008-08-06 17:57:36
这次的冒烟纯粹是因为公司停电,然后数据库服务器和我这两天测试的程序都被突然关闭.本来自己这两天正在怎么琢磨测试数据库这块呢,正好异常出现.再次打开电脑和被测程序时候,发现竟然无法登录,!!!!直觉告诉我,肯定有问题,然后问旁边的老大,他说忘了启动数据库服务器了.哈哈,就这样发现了一个严重bug,在数据库未启动的情况下,程序的启动出现异常.可能这个bug是大家经常见到的,可是有时候自己测试的时候就可能将这个遗忘.
标题搜索
我的存档
数据统计
- 访问量: 40717
- 日志数: 67
- 建立时间: 2007-06-21
- 更新时间: 2010-08-03