发布新日志

  • 51培训结束了

    2008-12-20 21:50:23

    12月19号,在51testing的培训结束了。

    7月16号,第一天来上课,我是8:45到的课室,但已经坐满了人~~51的传统,第一天不讲课,发教材,讲51历史,讲课程安排,而且还要自我介绍。那天,我看到了徐老师,朴老师,盛老师。

    每一节课都非常认真的听讲,真的从未这么认真过。可能是因为高额的学费,可能是因为就业的压力,可能是因为班上的氛围。

    每个星期一三五上课,二四六自习or休息,就这样重复着。

    不知道什么时候,突然来了一个漂亮的老师,魏老师。哦,原来是我们班主任哦,呵呵~~同学们都非常高兴。那些天,我看魏老师都是好悠闲的过日子。

    也不知道什么时候,金融危机降临了,当时还没有什么感觉。

    后来,班上有几个大四还没毕业的同学要回学校弄他们的毕业论文,提前离开了51。

    再后来,就开始推荐就业了,不少的同学开始找工作了。我当时还不急,只是随随便便投了几个公司。但是,一直都没有回音,班上的同学也陆陆续续的离开了,来上课的人变得越来越少了。徐老师之前讲过,越到后面,心就越急了。确实如此,看着大家都离去了,自己还在这里,真有一种说不出的感受,偶尔只能用“他们浪费了培训的金钱”之类的借口来安慰自己了。

    之后就开始疯狂的投递简历,但可能因为是刚毕业,没有工作经验,所以网上投的根本就没有回应。

    到最后一周,每天就那5-8个人来上课,大家都没有什么心思听课了。

    一直以为自己不会是最后走的人,怎么知道...看着大家都把自己卖出去了,自己却还在这,自信心确实受到不小的打击。不过谢谢各位老师给我的鼓励,呵呵~~谢谢你们!!

    昨天,最后一天上课,因为魏老师推荐,所以有了一次去文思创新面试的机会,早上去了,下午回来,人都走光了。看着空荡荡的教室,回想起这5个月的点点滴滴。

    其实自从推荐就业以来,魏老师一直都忙着帮我们找企业,都希望我们能找到好的工作,每天很晚才下班。今天又有一个面试机会,大家都回学校面试,刚好给我看到魏老师的打卡记录,这些日子,老师都是8点多到学校,晚上10点多11点才走的。魏老师,辛苦你了。

    来51testing培训,学到了很多,也因为这里,得到了更多的机会。

    加入了51,就等于加入了一个黑社会!!我们在测试这一行,是有很多人脉的,呵呵!!

    祝愿51发展的更好,这样,我们学员也就走得更好了,呵呵!!!

    谢谢51,谢谢各位老师!!

  • QTP小结

    2008-11-25 16:11:40

    昨天朴老师给我们上了一天QTP的总结,朴老师实在喜欢折腾人。还记得月初的一次模拟面试,学习了3个多月,感觉自己还是挺牛的嘛,不过朴老师的技术面试简直是把我的自信心给完全打碎了。技术牛的人,就是喜欢深究,他问一个问题,你回答上了,他就会不停的在你的回答中寻找下一个问题,直至把你问倒!

    印象很深刻的一个问题,GUI功能测试和性能测试的区别:GUI是基于开发语言的,而性能测试是基于协议的。

    QTP识别对象的原理:QTP要求先在仓库文件里定义仓库对象,里面存有实际对象的特征属性的值,运行的时候,QTP会根据仓库对象的特征属性描述,寻找到实际对象,然后操作实际对象。
    QTP对象中有两个很重要的东西,就是Test Object(简称TO)和Runtime Object(简称RO)。根据字面意思,TO是静态的,RO是动态的,我们做自动化测试,大部分是使用动态数据,所以RO用得比较多。对于这两个概念,网上有很多资料,大家可以去搜搜看。

    昨天上课主要是做计算器的自动化框架,因为是数据驱动框架,所以分三层设计:配置层,驱动层,执行层。

    首先是配置层,就是读取config.txt配置文件,选取具体的数据来源(Access,SQL,Excel,File)。然后把配置文件内容传给驱动层,由驱动层选择相应的执行函数。编写完基本框架后,就是写增强型代码了。读取路径函数,自己通过Descrīption.Create()创建对象,减小对象库的空间。最后还可把代码放入lib.vbs中,在QTP加入相关vbs文件,即可直接调用相关函数,大大简化QTP中的代码行数。

    经过一天的努力,竟然写出一个近200行的代码,嗯,就像老师说的,感觉很爽,呵呵~~

    明天就是徐老师的LoadRunner,要养足精神,好好听课!


    '-------------------------------------------------------------------
    Dim dirpath
    dirpath = folder_path    '保存相对路径

    Dim sumresult

    SystemUtil.Run "calc.exe"
    Call Config_Level

    '-------------------------------------------------------------------
    '#########################################
    '#                创建对象
    '#########################################
    Sub  Object_Create(str_x_Button)
    Set  Win_Calc=Descrīption.Create()
    Win_Calc("regexpwndtitle").Value="计算器"
    Win_Calc("regexpwndclass").Value="SciCalc"

    Set Win_Calc_Btn=Descrīption.Create()
    Win_Calc_Btn("text").Value=str_x_Button
    Win_Calc_Btn("nativeclass").Value="Button"

    Window(Win_Calc).WinButton(Win_Calc_Btn).Click

    Set Win_Calc_Btn=Nothing
    Set Win_Calc=Nothing

    End Sub

    '-------------------------------------------------------------------
    '#########################################
    '#              得到相对路径
    '#########################################
    Function folder_path()
     Dim str_full_path 'as string
     Dim str_testname 'as string
     str_full_path = Environment("TestDir")
     str_testname = Environment("TestName")
     folder_path = mid(str_full_path,1,len(str_full_path) - len(str_testname) -len( "scrīpt")-1)
    End Function

    '-------------------------------------------------------------------
    '######################################
    '#             点击函数
    '######################################
    Function operation(num1,num2,operate)
       Dim tmp1
       Dim tmp2
     i = 1
     While i <= len(num1)
      tmp1 = mid(num1,i,1)
      Object_Create tmp1
      i = i + 1
     Wend
     Object_Create operate
     j = 1
     While  j <= len(num2)
      tmp2 = mid(num2,j,1)
      Object_Create tmp2
      j = j + 1
     Wend
     Object_Create "="
    End Function

    '-------------------------------------------------------------------
    '配置层
    '读取配置文件
    Sub Config_Level
     Dim fsoconfig
     Dim fconfig
     Set fsoconfig = CreateObject("scrīpting.FileSystemObject")
     Set fconfig = fsoconfig.OpenTextFile(folder_path + "\config\config.txt",1,False)

       Do While fconfig.AtEndOfLine <> True
        str_Config = fconfig.ReadLine
        Driver_Level str_Config
       Loop

       fconfig.Close
       Set fconfig = Nothing
       Set fsoconfig = Nothing
    End Sub

    '-------------------------------------------------------------------
    '驱动层
    Sub Driver_Level(s_Config)
       Dim str_file
       Dim i
        str_file = split(s_Config,",")
        For i = lbound(str_file) to ubound(str_file)
            Select Case str_file(i)
          Case "auto"
        Execute_AutoSource
       Case "f"
           Execute_FileSource
      End Select
     Next
    End Sub

    '-------------------------------------------------------------------
    '执行层
    '######################################
    '#             使用access数据库
    '######################################
    Sub Execute_AccessSource
     Dim Conn 'as Adodb.Connection
     Dim Rst  'as Adodb.RecordSet
     Set Conn = CreateObject("ADODB.Connection")
     Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + folder_path + "\data\data.mdb;Persist Security Info=False"
     Set Rst = CreateObject("ADODB.RecordSet")
        Rst.Open "select * from actest",Conn

     Rst.MoveFirst
     Do While Rst.Eof<>True
             acnum1 = Rst.Fields(1)
       acnum2 = Rst.Fields(2)
       acoperate = Rst.Fields(3)
       operation acnum1,acnum2,acoperate
       Rst.MoveNext
     Loop
    End Sub

    '######################################
    '#             使用txt文件
    '######################################
    Sub Execute_FileSource
      Dim fso
     Dim f
     Set fso = CreateObject("scrīpting.FileSystemObject")
     Set f = fso.OpenTextFile(folder_path + "\data\data.txt",1,False)

       Do While f.AtEndOfLine <> True
        str_temp = f.ReadLine
        temp_split = split(str_temp,",")
           num1 = temp_split(0)
        num2 = temp_split(2)
        ōperate = temp_split(1)
        operation num1,num2,operate
       Loop

       f.Close
       Set f = Nothing
       Set fso = Nothing  
    End Sub

    '######################################
    '#       自动产生随机数和操作符
    '######################################
    Sub Execute_AutoSource
     Dim num1
     Dim operate
     Dim num2
     Dim result

     '随机数1
       num1 = 10 * Rnd
       
     '随机数2
        num2 = 1000 * Rnd
       
     '随即操作符
     Randomize
     operate_temp = Int((4 * Rnd) + 1)
     Select Case operate_temp
         Case 1
                ōperate = "+"
      Case 2
       operate = "-"
      Case 3
       operate = "*"
      Case 4
       operate = "/"
     End Select

     operation num1,num2,operate
    End Sub

    '######################################
    '#            使用Excel数据
    '######################################
    Sub Execute_ExcelSource
       DataTable.Import(folder_path + "\data\data.xls")     '把excel数据导入default.xls中临时存放
       DataTable.SetCurrentRow (1)
       For i_Record_Count  = 1 to DataTable.GetRowCount
           operation DataTable("exnum1","Global"), DataTable("exnum2","Global"), DataTable("exoperate","Global")
        DataTable.SetNextRow
       Next
      
    End Sub
    '-------------------------------------------------------------------
    本人编码能力较差,代码是给自己留念和日后参考。 有许多漏洞,请各位见谅。

  • 想做好测试,必须要不断的思考!

    2008-11-16 22:16:19

    上星期,北京的马林老师给我们上了两天的课,虽然时间短暂,但老师给了我好多信息。

    之前可能收理论课程的影响,在做项目测试的时候,编写用例,都是非常的死板。看到输入框就是等价类,边界值。看到有下拉列表或者复选框,就选正交分析。思想好像就被固化掉了~

    马林老师刚到,就说要我们测“海达票务”,又是海达,又是测试。原本还以为要重复劳动了。第一次的分析,基本上和第一阶段时没啥区别,因为一直以来都只是上课听老师灌输知识,学到什么是什么,很少去思考真正应该怎样测试。

    但当其中一组在介绍功能点时,就发现了我们的不足,很严重的不足。对于一个被测试软件,我们只是看其表面,基本上是根据GUI去测试的。但经过马林老师的讲解,发现好多好多可测试点。要从软件的界面,输入框,去抠程序内部的一些逻辑问题,然后再分析这些逻辑,找出测试点。

    例如一个“船票查询”功能,有很多的组合,想当然的就使用正交分析,但如果要真正组合,那需要很多的用例啊。接着老师给我们分析,里面有一个工号和用户名两个可选项,如果有一个工号是000,用户名为admin的用户,我们选择工号001,用户名admin,查询的结果为空。这说明什么呢?!就是说明程序内部这个查询功能的select语句是使用and来连接所有的条件。

    这样分析之后,就发现用正交分析法是多余的了。选择所有条件组合测一遍就已经可以把所有组合都测试完毕了。因为使用and,你抽取某两个选项来测试,只是在and语句中去掉某些条件,那全部都能通过,其中的几个一样也能通过。

    通过马林老师这样的讲解,我真正明白了,测试不是那么简单,51也不仅仅是培训。第一阶段,xulinlin老师讲的理论知识非常重要,这是基础,只有打好地基,才能把楼建得更高,更好!每一个老师来讲课,都能吸收不同的思想。

    想做好测试,必须要不断的思考!

  • SugarCRM项目心得1

    2008-10-09 17:04:37

    放假回来以后,就进入到SugarCRM项目的实战了。

    做一个项目,首先要了解当前项目的基本知识。首先要了解什么是CRM,这个去Google一把,就一堆答案了。CRM的三大功能一定要记住:销售管理,市场管理,服务管理然后就是对测试的项目的了解。由于我们是使用SugarCRM这个开源的客户关系管理系统,所以,没有需求说明书,我们只能依靠纯英文的用户手册来自己总结出一些功能点,作为以后设定计划和方案的测试项。

    由于系统比较庞大,所以老师是给我们分组进行的。我们小组是负责Calendar和Activities模块。一上来,老师就直接叫我们阅读文档,然后总结功能点。由于之前没有任何经验,所以无从下手,只能依靠英语知识,来翻译用户手册。最后交付给老师的文档,是我们小组5人总结出来的内容。但经过老师课上的讲评,这是功能点的总结,而不是翻译。我们需要对文档仔细的阅读,对该模块内存在的功能点描述清楚就可以了。

    其实Calendar模块和Activities模块是有密切关系的两个模块。在我的理解,Calendar是对时间表的一个大致了解,能够知道你某个时间段内各活动的时间安排。Activities模块则是对活动的内容进行细化,安排每一个活动的细节内容。

    Calendar模块:
    1.以日视图,周视图,月视图,年试图,共享模式查看时间表
    2.安排电话
    3.安排会议
    4.添加任务
    5.电话管理
    6.会议管理
    7.任务管理

    Activities模块:
    1.安排电话
    2.安排会议
    3.添加任务
    4.电话管理
    5.会议管理
    6.任务管理
    (以上功能同Calendar模块)
    7.创建备忘录和附件
    8.添加存档电子邮件(电子邮件模块)
    9.备忘录管理
    10.存档电子邮件管理(电子邮件模块)
    11.今日管理
    12.导入备忘录
    13.搜索功能
    14.批量增加

    Activities模块是销售活动模块,它规定了具体的活动内容,而且与许多模块都有关联,例如Account,Opportunities等模块,这说明销售活动模块是这个系统内的一个主流程。是最重要的功能之一。

  • 第一阶段结束了~~

    2008-09-13 10:00:46

    从7月16号,到9月10号。第一阶段的学习结束了,也迎来了第一次的考试。

    首先说一下51吧。51的教学方法是1,3,5上课;2,4,6,7休息。我认为这是一种很好的教学方式,我很喜欢。因为这样,对于没有基础的同学(例如我),可以在休息的时候,恶补自己的计算机基础知识,什么编程语言啊,数据库知识,数据结构之类的。还可以给自己时间去消化课堂上的知识。如果没弄懂,又没时间精力去搞明白,然后第二天接着上课,这样,问题就会越积越多!回想起刚入学的时候,对软件测试毫无了解的我,经过51史上最有智慧的男人,xulinlin老师的教导后,终于对软件测试有了基本的了解。

    从小学开始,就不太喜欢学习的我,笔记自然也就很少。但是,在51这里,良好的学习氛围,还有就是面临着以后工作的压力,使得我真正的有了改变。第一阶段我就记了满满一本笔记本的笔记,自己看到还会觉得有些恐怖。因为我之前是读通信专业的,只是自己对电脑,对编程的热情,使自己对计算机系的内容有所了解,不过也就停留在皮毛上。

    好了,废话就说这么多,正式进入正题。

    软件测试基础,就像徐老师说的,其实所有的东西基本都是围绕这三个方面,就是成本,质量,进度。测试过程,软件质量,测试方法,各类的管理,个种测试类型等等,最终需要解决的就是怎样使这三方便达到一个平衡,或者说使他们的关系更符合你公司,你的产品的需要。

    第一阶段的内容,基本都是理论知识为主,都是基础内容。基础很重要,我已经是感受良多。小时候,对英语的热情,还有就是和朋友一起去参加补习,所以英语基础好。所以,初中,高中,大学的英语都能够学得比较轻松。但数学,语文,因为基础太差,所以无论怎么学,感觉都还是很困难。(本人文采基本为0,所以文章有什么问题,希望大家见谅)所以,大家一定要记住,有好的基础,才能使你更轻松的往上发展!

    这一次的考试,说难嘛,不会很难,说容易嘛,又有很多小问题会在复习的时候被忽略掉。好像“在oracle中,如何使用Sql*Plus查看表的表结构”;“在oracle中,使用什么命令过滤掉有重复的内容”;还有就是简答题,换一种问法,自己就不知道改怎么回答了,“谈谈你对Bug的认识”之类的。这还是因为自己平时忽略了一些问题,只是看笔记,但没有真正的去思考,去总结。

    说到总结,这真的很重要。如果记了笔记,背了笔记,你把考试考完了,基本上就忘了。所以,看笔记的时候,一定要结合几本参考书,上网找找相关资料,去理解,去总结!这样,你才能够真正把老师讲的变成你的东西。

    不知道以后会不会有什么师弟们会在搜索的时候,搜到我这篇东西呢。

    再给要准备第一阶段的人一个提醒,就是上课一定要认真听!!练习和作业一定要认真做!!因为题目很有可能是做过的!!还有,就是如果开通了权限,可以到“就业专版”,有一个同志非常厉害的用Mindjet MindManager Pro 7做了第一阶段各知识点的概括,总结。是一个非常不错复习资料!!

    好了,第二阶段开始了!!!真正的动手了~~~要继续努力!!!要记得自己入学时的计划,承诺!

Open Toolbar