-
时间不长,变化很大
2007-06-25 18:43:01
自从来到北京,我就再没有上过这个网站,不是不想,只是太忙了,没有时间。来北京1个多月的时间,时间不算长,我却有了很大的变化,今天我不想说工作方面的事,因为来了以后一直忙着工作,反而没有时间学习了,所以没感觉自己在技术上有什么长进。在这一个多月的时间里,我遇见了我的第一份感情,严格的说起来,我能认识他还要拜51testing论坛所赐。一切都是那么的不可思议,并且迅速的产生的变化,快的我都来不及去想这是不是正确的。自从开始这段感情,我觉得我完全不是以前的自己了,而今天我开始怀念以前的我,无忧无虑,没心没肺过日子的我。我希望我以后不会为这段时间发生的事情后悔。 -
有时候自己真的很笨
2007-04-18 13:30:25
在写结项总结的时候需要统计每个测试员写的用例步数,我居然去一个一个的数,虽然用例不是非常的多但也花了不少时间。其实在数据库中建立一个查询一分钟就可以搞定了,我发现有时候我做事是够踏实,但是不想去寻求简便的方法,其实这是另一种懒的表现,这种懒法我自己都受不了了。以后可千万不能再这样了,现在都觉得我做的这件事太搞笑了,一点都不像是一个IT行业的人做的事情。唉!真丢人
-
我的第一份工作就要告一段落了
2007-04-12 16:06:44
经过一番波折,北京的工作终于定下来了。刚刚向公司提出了辞职,还算顺利,虽然也挽留了我,但我去意已决。我很看好我的新工作,虽然公司刚起步,但肯定会有不错的发展,看着吧,我也肯定会为他推波助澜的。想想像我这样才工作不到1年就能进这样的公司真是很不容易,感叹自己运气好的同时一定要抓住这次机会。干了不长的时间就辞职我还是觉得挺对不起头的,当初是他把我这样一个对测试只有很浅的了解,编程经验又不是很丰富的应届毕业生找进来,带我走进了测试这一行,我很感谢他。我承认,这一路走来除了自己的努力,运气也扮演了很重要的角色。
今天交了辞职信,感情还真是挺复杂的,轻松之余还有一种不舍。
我第一天来报道的时候天下着雨,公共汽车又挤又慢,眼看就要迟到的我只好打车。到了楼里面找了很久才找到办公室,当时还没有什么人来,第一个和我说话的是wx,然后是zg,然后zc,然后ljq……对了,还有那个日语老师jt以及后来的lls、zhc和他们相处的日子真的很快乐。
我以后还会认识更多的同事,更多的朋友,更多的牛人,我要在北京开始全新的生活了。
-
我的最新情况
2007-04-10 15:01:21
经过了一个多星期的等待与煎熬以后,上次的面试终于有结果了,那就是我明天还要去复试。复试就复试吧,就是跑来跑去的太累了,他们说对我的条件还是比较满意的,这就吃了颗定心丸。
最近发现一个奇怪的现象,现在的工作机会还是很多的,但是合适的并不多,发出一份简历后有回复的概率也很小,基本上大部分是石沉大海,但怎么有的公司通知来面试的人总会有几个到时候就不来了。
-
取舍之间彰显智慧
2007-04-03 15:41:54
气死人了,怎么写了半天,发布了之后只是一个“暂无”,不过没关系,我心里已经得到答案了。
-
测试时需要注意的特殊细节
2007-03-29 17:05:08
- 在特定情况下,某些功能按钮是不可用的,比如在信息列表中没哟任何信息时,删除按钮就应该是不可用的,当然实际情况要比这个复杂的多,需要注意这个问题
- 对于文本输入框至少有3中情况需要验证:
- 为空
- 最大数量的字符
- 数据库中已经存在的字符
- 在没有明确的软件需求的时候,对于系统功能觉得有不合理的地方先不要马上记下来,先搞清楚需求是不是本身就是这样的。
- 对于软件需求也必须以一个测试人员的角度提出自己的意见
- 对于在系统中处于不同地方的两个有相同功能的按钮,必须验证点击他们以后系统的反应是否一致
- 需要上传一个固定内容的压缩包的时候,需要验证压缩包的内容不正确时,系统有没有相应的提示
-
测试的时候一定要保持头脑清醒
2007-03-21 17:22:08
越来越觉得测试真不是那么简单了,其实一直都知道测试不简单,但现在有点超出了我的想象。要考虑的问题真的很多,不只有测试技术方面的问题,还要考虑到成本和质量之间的权衡,经过几天的忙碌做一些总结吧。
首先就是一定要清楚需求,如果要是没有具体的需求那就得不停的和程序员交流,保证自己没有做无谓的工作,对准确的设定bug的级别也有帮助。当然我们也有权利提出一些对需求的看法,我们还是要把质量放在首位的,时间是第二位的。其次就是一定要紧跟测试通知单,上面有的测试项目一点也不能放过,没有的内容就没有必要去浪费时间。
在测试的时候一定要一心一意,按用例一项一项的进行,一个功能一个功能的过,不能测着测着就跑到与它有联系的其他功能中去。发现一个问题后一定要把它处理完以后再往下进行,不能把问题留到以后再处理,因为有可能以后会忘掉。
为了提高效率测试时也不能完全按照理论的过程进行,有时候需要根据具体问题进行一些小的调整。提交第一个测试版本以后,进行第一轮测试以前一定要进行一轮冒烟测试,因为粗心的程序员有可能会犯很多低级的错误让程序运行不下去,每次改完bug提交版本之后要验证所有的bug已经改正并且没有引起相关的bug之后才能进行下一轮测试,也就是要控制尽量少的版本。此外每次提交新版本都要优先测试新增的功能,没有测试过的功能一般都会存在很多的问题。
在测试的过程中要尽量记得自己做的每一步操作,有助于重现bug。
以上的这些事情一定要记在心里,头脑不清醒是不行的。
-
面对自己
2007-03-12 15:20:51
我总是对自己不是那么满意,但还是比较喜欢自己的状态的,不知道最近是怎么了,变得那么不喜欢自己,不知道什么时候才能回复到原来的状态 -
9天的工作感受
2007-02-09 17:10:00
已经在开发区工作9天了,前天都处于紧张和忙碌的状态当中,虽然每天4个小时都浪费在路上,但还是学到了很多东西,这种早睡早起的付出还是值得的,但我还是很盼望早日回到市里。
感觉这边的测试流程要规范的多,写中文用例的时候也能让我把所有的精力都放在用例上,而不是语言上。这次经过完整的写了一个网站的测试用例和hg的指导,找到了方法,也增强了信心。另外还接触到搭建web站点,我就顺便了解了一下IIS apache weblogic 。
总之在负责这个项目的过程中会接触到控制版本、搭建web站点、控制测试流程、与开发等相关人员的交流、性能测试、配置数据库……好多东西要学呦,加油!
开发在fixbug的时候还用到了TD的assign to,这是我没想到的。
-
测试用例的一点总结
2007-01-10 11:29:59
最近在写一个类似于占座网的网站的测试用例,开始的时候自信满满,后来却越写越觉得混乱,甚至发现自己写这么长时间以来写的用例中,有很多都是冗余。最后不得不大量的修改,真的很受打击,好在现在已经屡清思路。
这次是我第一次写真正的用例,由于以前都是在做练习,一心要找出别人找不出的错误,每一个用例都写得很细,就算是再不可能发生的情况也会写进去,不会考虑实用性,我就是带着这种思维方式开始的。我就很细析的写每个功能的用例,到后来觉得自己写了很多重复的东西,比如,每一个表单的输入框我都会写上:数据为空、数据为1个字符、数据为最大长度、数据超出最大长度范围这几个用例。
还有这个网站基本上没有需求文档,只能看着已经存在的页面写用例,这样写着写着就迷茫了,我会想“我现在明明知道这个功能就是这样了,预期结果就是按照实际结果写的,为什么还要写用例,浪费时间”
对用例的粒度考虑的也不全面,有时候一个操作我把他归为用例中独立的一步,有时候包含在用例的步骤中,真的很乱。
下面是针对上面问题的经验总结:
1先把用例根据测试目的分为几类,功能测试、异常测试、界面测试……
2写用例前要考虑好粒度,把最小的不可分的功能作为一个用例、把一个用例中可以见到结果的操作作为一个步骤,当然也要根据实际情况作一些改变
3用例中不写测试数据,如有需要再另外写
4把通用的功能测试写在一个用例中以减少冗余。
-
ASP.NET数据库编程
2006-12-21 17:10:25
又找到一片对我很有用的文章,连接是http://blog.sina.com.cn/u/4666891f010002ds,多谢缘如是ASP.NET中的ADO.NET和ASP中的ADO相对应,它是ADO的改进版本。在ADO.NET中,通过Managed Provider所提供的应用程序编程接口(API),可以轻松地访问各种数据源的数据,包括OLEDB所支持的和ODBC支持的数据库。下面介绍ADO.NET中最重要的两个概念:Managed Provider和DataSet。
Managed Provider
过去,通过ADO的数据存取采用了两层的基于连接的编程模型。随着多层应用的需求不断增加,程序员需要一个无连接的模型。ADO.NET就应运而生了。ADO.NET的Managed Provider就是一个多层结构的无连接的一致的编程模型。
Managed Provider提供了DataSet和数据中心(如MS SQL)之间的联系。Managed Provider包含了存取数据中心(数据库)的一系列接口。主要有三个部件:
1、连接对象Connection、命令对象Command、参数对象Parameter提供了数据源和DataSet之间的接口。DataSetCommand接口定义了数据列和表映射,并最终取回一个DataSet。
2、数据流提供了高性能的、前向的数据存取机制。通过IdataReader,你可以轻松而高效地访问数据流。
3、更底层的对象允许你连接到数据库,然后执行数据库系统一级的特定命令。
过去,数据处理主要依赖于两层结构,并且是基于连接的。连接断开,数据就不能再存取。现在,数据处理被延伸到三层以上的结构,相应地,程序员需要切换到无连接的应用模型。这样,DataSetCommand就在ADO.NET中扮演了极其重要的角色。它可以取回一个DataSet,并维护一个数据源和DataSet之间的"桥",以便于数据访问和修改、保存。DataSetCommand自动将数据的各种***作变换到数据源相关的合适的SQL语句。从图上可以看出,四个Command对象:SelectCommand、InsertCommand、UpdateCommand、DeleteCommand分别代替了数据库的查询、插入、更新、删除***作。
Managed Provider利用本地的OLEDB通过COM Interop来实现数据存取。OLEDB支持自动的和手动的事务处理。所以,Managed Provider也提供了事务处理的能力。
DataSetDataSet是ADO.NET的中心概念。你可以把DataSet想象成内存中的数据库。正是由于DataSet,才使得程序员在编程序时可以屏蔽数据库之间的差异,从而获得一致的编程模型。
DataSet支持多表、表间关系、数据约束等等。这些和关系数据库的模型基本一致。
通过ADO.NET访问数据库
不论从语法来看,还是从风格和设计目标来看,ADO.NET都和ADO有显著的不同。在ASP中通过ADO访问数据库,一般要通过以下四个步骤:
1、 创建一个到数据库的链路,即ADO.Connection;
2、 查询一个数据集合,即执行SQL,产生一个Recordset;
3、 对数据集合进行需要的***作;
4、 关闭数据链路。
在ADO.NET里,这些步骤有很大的变化。ADO.NET的最重要概念之一是DataSet。DataSet是不依赖于数据库的独立数据集合。所谓独立,就是:即使断开数据链路,或者关闭数据库,DataSet依然是可用的。如果你在ASP里面使用过非连接记录集合(Connectionless Recordset),那么DataSet就是这种技术的最彻底的替代品。
有了DataSet,那么,ADO.NET访问数据库的步骤就相应地改变了:1、创建一个数据库链路;
2、请求一个记录集合;
3、把记录集合暂存到DataSet;
4、如果需要,返回第2步;(DataSet可以容纳多个数据集合)
5、关闭数据库链路;
6、在DataSet上作所需要的***作。
DataSet在内部是用XML来描述数据的。由于XML是一种平台无关、语言无关的数据描述语言,而且可以描述复杂数据关系的数据,比如父子关系的数据,所以DataSet实际上可以容纳具有复杂关系的数据,而且不再依赖于数据库链路。
ADO.NET有许多对象,我们先看看最基本的也最常用的几个。首先看看ADOConnection。和ADO的ADODB.Connection对象相对应,ADOConnection维护一个到数据库的链路。为了使用ADO.NET对象,我们需要引入两个NameSpace:System.Data和System.Data.ADO,使用ASP.NET的Import指令就可以了:
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.ADO" %>
和ADO的Connection对象类似,ADOConnection对象也有Open和Close两个方法。下面的这个例子展示了如何连接到本地的MS SQL Server上的Pubs数据库。
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.ADO" %>
<%
'设置连接串...
Dim strConnString as String
strConnString = "Provider=SQLOLEDB; Data Source=(local); " & _
"Initial Catalog=pubs; User ID=sa"'创建对象ADOConnection
Dim objConn as ADOConnection
objConn = New ADOConnection'设置ADOCOnnection对象的连接串
objConn.ConnectionString = strConnStringobjConn.Open() '打开数据链路
'数据库***作代码省略
objConn.Close() '关闭数据链路
objConn = Nothing '清除对象
%>
上面的代码和ADO没有什么太大的差别。应该提到的是,ADO.NET提供了两种数据库连接方式:ADO方式和SQL方式。这里我们是通过ADO方式连接到数据库。关于建立数据库连接的详细信息,我们在后面的篇幅中将会讲到。
ADODatasetCommand
另一个不得不提到的ADO.NET对象是ADODatasetCommand,这个对象专门负责创建我们前面提到的DataSet对象。另一个重要的ADO.NET对象是Dataview,它是DataSet的一个视图。还记得DataSet可以容纳各种各种关系的复杂数据吗?通过Dataview,我们可以把DataSet的数据限制到某个特定的范围。
下面的代码展示了如何利用ADODatasetCommand为DataSet填充数据:
'创建SQL字符串
Dim strSQL as String = "SELECT * FROM authors"'创建对象ADODatasetCommand 和Dataset
Dim objDSCommand as ADODatasetCommand
Dim objDataset as Dataset = New Dataset
objDSCommand = New ADODatasetCommand(strSQL, objConn)'填充数据到Dataset
'并将数据集合命名为 "Author Information"
objDSCommand.FillDataSet(objDataset, "Author Information")
显示Dataset
前面我们已经把数据准备好。下面我们来看看如何显示Dataset中的数据。在ASP.NET中,显示DataSet的常用控件是DataGrid,它是ASP.NET中的一个HTML控件,可以很好地表现为一个表格,表格的外观可以任意控制,甚至可以分页显示。这里我们只需要简单地使用它:
<asp:DataGrid id="DataGridName" runat="server"/>
剩下的任务就是把Dataset绑定到这个DataGrid,绑定是ASP.NET的重要概念,我们将另文讲解。一般来说,你需要把一个Dataview绑定到DataGrid,而不是直接绑定Dataset。好在Dataset有一个缺省的Dataview,下面我们就把它和DataGrid绑定:
MyFirstDataGrid.DataSource = _
objDataset.Tables("Author Information").DefaultView
MyFirstDataGrid.DataBind()
Dataset的用法
Dataset 并不是Recordset的简单翻版。从一定的意义上来说,DataView更类似于Recordset。如果说DataReader是访问数据的最容易的方式,那么Dataset则是最完整的数据访问对象。通过Dataset,你可以***作已有的数据,还可以通过程序创建Dataset,加入Table到Dataset,并建立这些Table之间的关系。使用Dataset的几个步骤
第1步,创建到数据源的连接:
SQLConnection con =new SQLConnection("server=localhost;uid=sa;pwd=;database=pubs");
第2步,创建DataSetCommand对象,指定一个存储过程的名字或者一个SQL语句,指定数据链路;
SQLDataSetCommand cmd =new SQLDataSetCommand("SELECT * FROM Authors", con);
第3步,创建一个Dataset对象
DataSet ds = new DataSet();
第4步,调用DataSetCommand的FillData方法,为Dataset填充数据。注意:数据链路没有必要是打开的。如果数据链路是关闭状态,FillData函数会打开它,并在FillData之后关闭数据链路。如果数据链路本来就是打开的,在FillData之后,数据链路依然保持打开状态。
int iRowCount = cmd.FillDataSet(ds, "Authors");
第5步,***作数据。由于FillData返回了记录的个数,我们可以构造一个循环,来***纵Dataset中的数据。
for(int i=0; i< iRowCount; i++){
DataRow dr = ds.Tables[0].Rows[i];
Console.WriteLine(dr["au_lname"]);
}数据绑定技术
Repeater、DataList 、DataGrid控件是System.Web.UI.WebControls名空间(Namespace)里几个相关的页面组件。这些控件把绑定到它们的数据通过HTML表现出来,它们又被成为"列表绑定控件"(list-bound controls)。
和其他Web组件一样,这些组件不仅提供了一个一致的编程模型,而且封装了与浏览器版本相关的HTML逻辑。这种特点使得程序员可以针对这个对象模型编程,而无须考虑各种浏览器版本的差别和不一致性。
这三个控件具有把它们的相关数据"翻译"成各种外观的能力。这些外观包括表格、多列列表、或者任何的HTML流。同时,它们也允许你创建任意的显示效果。除此之外,它们还封装了处理提交数据、状态管理、事件激发的功能。最后,它们还提供了各种级别的标准***作,包括选择、编辑、分页、排序等等。利用这些控件,你可以轻松地完成如下的Web应用:报表、购物推车、产品列表、查询结果显示、导航菜单等等。
-
设计功能和界面测试用例
2006-12-18 13:31:54
这是在网上找到的,忘了作者是谁了,不过还是要谢谢作者
设计功能和界面测试用例
1.1 文本框、按钮等控件测试
1.1.1 文本框的测试
如何对文本框进行测试
a,输入正常的字母或数字。
b,输入已存在的文件的名称;
c,输入超长字符。例如在“名称”框中输入超过允许边界个数的字符,假设最多255个字符,尝试输入 256个字符,检查程序能否正确处理;
d,输入默认值,空白,空格;
e,若只允许输入字母,尝试输入数字;反之;尝试输入字母;
f,利用复制,粘贴等操作强制输入程序不允许的输入数据;
g,输入特殊字符集,例如,NUL及\n等;
h,输入超过文本框长度的字符或文本,检查所输入的内容是否正常显示;
i,输入不符合格式的数据,检查程序是否正常校验,如,程序要求输入年月日格式为yy/mm/dd,实际输入yyyy/mm/dd,程序应该给出错误提示
在测试过程中所用到的测试方法:
1,输入非法数据;
2,输入默认值;
3,输入特殊字符集;
4,输入使缓冲区溢出的数据;
5,输入相同的文件名;
命令按钮控件的测试
测试方法:
a,点击按钮正确响应操作。如,单击确定,正确执行操作;单击取消,退出窗口;
b,对非法的输入或操作给出足够的提示说明,如,输入月工作天数为32时,单击”确定“后系统应提示:天数不能大于31;
c,对可能造成数据无法恢复的操作必须给出确认信息,给用户放弃选择的机会;
单选按钮控件的测试
测试方法:
a,一组单选按钮不能同时选中,只能选中一个。
b,逐一执行每个单选按钮的功能。分别选择了“男”“女”后,保存到数据库的数据应该相应的分别为“男”“女”;
c,一组执行同一功能的单选按钮在初始状态时必须有一个被默认选中,不能同时为空;
up-down控件文本框的测试
测试方法:
a,直接输入数字或用上下箭头控制,如,在“数目”中直接输 查看(943) 评论(4) 收藏 分享 管理