发布新日志

  • VB脚本的代码小知识汇总

    2013-01-11 14:41:32

    '**********功能实现Excel中有多少sheet总数**********
    Sub summary()
        '定义变量
        Dim count    '统计Excel中Sheet总数变量
       
        For Each sh In ThisWorkbook.Worksheets
                count = count + 1
        Next sh
        MsgBox count   
    End Sub

    '**********功能实现Excel中有所有Sheet页中位于单元格1行1列的数值**********
    Sub summary()
        '定义变量
        Dim cell As String              '输出的单元格数值变量
        Dim Row As Integer              '定义行变量
        Row = 1   
        For Each sh In ThisWorkbook.Worksheets       '当前Excel脚本中默认的方法和对象。
                cell = sh.Cells(Row, 1).Value
                MsgBox cell
        Next sh          
    End Sub

    '**********功能实现Excel中有对应Sheet1页的处理**********
    Sub summary()
        '定义变量
        Dim cell As String              '输出的单元格数值变量
        Dim Row As Integer              '定义行变量
        Row = 5                         '给初始行赋值
       
        While Sheet1.Cells(Row, 3) <> ""    '直接显示当前Excel也,就可以应用对应的名称,例如:Sheet1       
            MsgBox Cells(Row, 3)
            Row = Row + 1       
        Wend      
    End Sub

  • 数据库开发

    2013-01-07 13:49:59

    软件包体开发格式:

    create or replace package body reportpackage is

          procedure   name

            ......

          end;

    end reportpackage;

  • QTP 半月的学习小结

    2012-12-28 09:27:51

        半月来对QTP的学习做个小结,顺带回顾一下学习的内容,新手一个,希望大家一起学习,共同进步啊... 回想一下破解QTP工具来来回回就花了一个星期左右时间咯...貌似时间有点长.呵呵,当初还想着可能无法破解了,诶...就只有14天的试用时间,杯具啊!想到了51testing,就上网站搜索了下,哈哈.发现新大陆,多亏你们这些好心人啊.在网上留下了宝贵的财富,由此本人也产生了定期在网络写文章的念头,将自己学到的和看到的记录下来,一是能帮组别人,二了,也给自己的进步有帮助,毕竟好记性不如烂笔头啊,三是自己的表达能力实在不行啊,只能靠写能提高了.由此想到了很多文学大师真的好羡慕,莫言大师等!哈...说实话,没有人指导下学习真的很慢,也很容易放弃,毕竟会碰到很多问题,有些问题的出现就会让你的脚步停止不前.我现在碰到个问题就是QTP根本无法录制的情况,因为本人的电脑是win2007的,浏览器是IE8,根本无法录制,卸载过装IE6又不支持,毕竟工作中用不到自动化,自己的兴趣学习,重装系统是不可能的了,也想过装个虚拟机,安装软件是找到了,可2003的镜像iso文件又没有,公司不能上网,再次杯具啊..只能硬着头皮看资料,理解常用函数.渐渐的是摸出了点头绪,知道如何链接数据库,录制检查点(Checkpoint),对比数据库中的数据更新后,通过之前录制的检查点很容易就能发现那些字段值(cell)发生了变化.了解了对象库编程(Object Repository Programming)和描述性编程(Description programming)的概率,通过录制SPY功能能够很容易找到对象的属性及类名等信息,不过如果录制显示winobject,说明录制的对象没有作用啊. 我也是在书上看到和自己实践中碰到的,具体啥原因了? 希望知道的网友给点建议啊.通过QTP中封装好的接口调用可以实现很多功能,可以通过shell打开系统里面的执行文件,例如计算器(calc),记事本(notepad)之类简单的操作,可以通过with...end with实现代码的简易性和可读性,了解了几种循环语句的写法. 先简单写到这里了,以后再更新新知识.

  • 如何将Excel中表结构数据自动生成SQL脚本的方法(VB代码实现)

    2012-12-26 10:34:30

    /************版权归本人所有,违者必究************/

    一: 在本地PC新建一个Excel文件(例如:excel2007)

        准备工作,左键选择excel文本左上角的图标,选择“Excle选项”。1. 点击“信任中心”->“信任中心设置”->“宏设置”->选择“启用所有宏...”选项。“开发人员宏设置”选项也勾选上。  2. 点击“信任中心”->“信任中心设置”->选择“个人信息选项”,将“文档特定设置”上面默认选择去掉,避免在保存脚本时报错。

    二: 在本地PC新建一个excel文件(例如: D:\testdate.xlsx)

        按快捷键“ALT + F11”进入宏编辑,输入如下代码后保存。summary()为目标生成代码,SQL()为生成SQL脚本文件代码,按条件生成SQL的脚本如下:

    Sub summary()

      Dim i As Integer 
        i = 2  
        ThisWorkbook.Worksheets(1).Columns(2).Clear

        For Each sh In ThisWorkbook.Worksheets

        If sh.Name <> "   " Then

        ThisWorkbook.Worksheets(1).Cells(i, 2).Value = sh.Name
        ThisWorkbook.Worksheets(1).Cells(i, 2).Select
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        sh.Name + "!A1", TextToDisplay:=sh.Name
        i = i + 1
        End If
        Next sh
        
        ThisWorkbook.Worksheets(1).Cells.Select
       
        With Selection.Font
            .Name = "目录"
            .Size = 9
            .Strikethrough = False
            .Superscript. = False
            .Subscript. = False
            .OutlineFont = False
            .Shadow = False
            .TintAndShade = 0
            .ThemeFont = xlThemeFontNone
        End With
    End Sub

    Sub SQL()
       Dim i As Integer
        i = 1
        Dim ADO_Stream As Object
        Dim strSQL, strDelSQL As String
        Dim strTblName As String
        Dim col As Long
        Dim row As Long
        Dim str As String
        Dim PK As String
        Dim cnt As Integer
           
        PK = "PK"    
        Dim rowcounts As Long
        rowcounts = 0
        Dim filecount As Long
        filecount = 0 
        Set ADO_Stream = CreateObject("ADODB.Stream")
        ADO_Stream.Type = 2
        ADO_Stream.Mode = 3
        ADO_Stream.Charset = "unicode"
        ADO_Stream.Open
       
        Dim checkType As String 
            For Each sh In ThisWorkbook.Worksheets    
                cnt = 0

                If sh.Name <> "   " And InStr(sh.Name, "template") = 0 Then
                    strTblName = sh.Cells(1, 2).Value
                    rowcounts = 1
                    'Insert SQL
                    row = 6
                   
                    Do While sh.Cells(row, 1).Value <> ""  
                        strDelSQL = "delete from " + strTblName + " where "
                        strSQL = "Insert into " + strTblName + " ("
                        col = 1
                        Do While sh.Cells(3, col).Value <> ""    
                            If col <> 1 Then
                                strSQL = strSQL + ", "
                            End If
                            strSQL = strSQL + sh.Cells(3, col).Value
                            col = col + 1
                        Loop
                        strSQL = strSQL + ") VALUES ("
                        col = 1
                        Do While sh.Cells(3, col).Value <> ""
                               
                            str = Trim(CStr(sh.Cells(row, col).Value))
                           
                            If InStr(Trim(CStr(sh.Cells(2, col).Value)), PK) <> 0 Then
                                If cnt > 0 Then
                                    strDelSQL = strDelSQL + " and "
                                End If
                                strDelSQL = strDelSQL + Trim(CStr(sh.Cells(3, col).Value)) + " = '" + str + "'"
                                cnt = cnt + 1
                            End If             
                            If col <> 1 Then
                                strSQL = strSQL + ", "
                            End If
                           
                            If (InStr(Trim(CStr(sh.Cells(4, col).Value)), "Integer") = 0) And (InStr(Trim(CStr(sh.Cells(4, col).Value)), "Decimal") = 0) And ((InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") = 0) Or _
                            ((Len(str) > 0) And (InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") > 0))) Then
                                If (Len(str) <= 0) And (InStr(Trim(CStr(sh.Cells(5, col).Value)), "No") = 0) Then
                                    str = "NULL"
                                ElseIf InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") > 0 Then
                                    str = "to_date('" + str + "','yyyy-mm-dd hh24:mi:ss')"
                                Else
                                    str = "'" + str + "'"
                                End If
                           
                                strSQL = strSQL + str
                            ElseIf (Len(str) <= 0) And (InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") > 0) Then
                                strSQL = strSQL + "NULL"
                            Else
                                If (Len(str) <= 0) And (InStr(Trim(CStr(sh.Cells(5, col).Value)), "No") = 0) Then
                                    str = "NULL"
                                End If
                           
                                strSQL = strSQL + str
                            End If
                           
                            col = col + 1
                        Loop
                       
                        strDelSQL = strDelSQL + ";" + vbCrLf
                        ADO_Stream.WriteText strDelSQL
                        strSQL = strSQL + ");" + vbCrLf
                        ADO_Stream.WriteText strSQL
                        row = row + 1            
                    Loop
               End If
                i = i + 1            
                rowcounts = 0
                filecount = 0          
            Next sh
            ADO_Stream.SaveToFile ThisWorkbook.Path & "\MstSQL(delete by condition).txt", 2
            ADO_Stream.Close
            Set ADO_Stream = Nothing     
    End Sub

    点击“保存”宏脚本,主要的一步完成。

    三: 在excel文件(test.xlsx)的首页创建两个图标,分别选择右键指定宏,一个指定上面的summary(),一个指定上面的SQL()。然后就可以在后续的sheet页创建自己需要生成SQL脚本的表结构名称了,记得每个sheet页面对应一个表结构及数据,使用方法如下:

    A,将需要更新的对象表数据整个sheet拷进工具中,数据只保留需要更新的数据。
    B,在第2行标出主键字段,填上“PK”即可。
    C,点击生成SQL。

    注意点:删除对象的表顺序必须自行调整,子表在前,主表在后。

    举例如下:

    第一行:M_Owner
    第二行:PK 
    第三行:OWNER_ID     OWNER_CODE
    第四行:NUMBER(18,0) VARCHAR2(10 BYTE)
    第五行:No                Yes
    数据行:900000000000000001 TTE
    数据行:900000000000000002 TTAP

    备注: 不按条件生成的VB代码如下,同上面的代码略有不同,功能是一样的

    Sub summary()

       Dim i As Integer  
        i = 2   
        ThisWorkbook.Worksheets(1).Columns(2).Clear
        For Each Sh In ThisWorkbook.Worksheets
        If Sh.Name <> "" Then
        ThisWorkbook.Worksheets(1).Cells(i, 2).Value = Sh.Name   
        ThisWorkbook.Worksheets(1).Cells(i, 2).Select
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        Sh.Name + "!A1", TextToDisplay:=Sh.Name  
        i = i + 1   
        End If   
        Next Sh
        
        ThisWorkbook.Worksheets(1).Cells.Select 
        With Selection.Font
            .Name = "目次"
            .Size = 9
            .Strikethrough = False
            .Superscript. = False
            .Subscript. = False
            .OutlineFont = False
            .Shadow = False
            .TintAndShade = 0
            .ThemeFont = xlThemeFontNone
        End With
     
    End Sub


    Sub SQL()
       Dim i As Integer 
        i = 1 
        Dim ADO_Stream As Object
        Dim strSQL As String
        Dim strTblName As String
        Dim col As Long
        Dim row As Long
        Dim str As String   
        Dim rowcounts As Long
        rowcounts = 0   
        Dim filecount As Long
        filecount = 0
       
        Set ADO_Stream = CreateObject("ADODB.Stream")
        ADO_Stream.Type = 2
        ADO_Stream.Mode = 3
        ADO_Stream.Charset = "unicode"
        ADO_Stream.Open
       
        Dim checkType As String  
        checkType = InputBox("1:将所有表生成到一个SQL文件" & vbCrLf & "2:单独按表生成SQL文件") 
        If Trim(checkType) = "1" Then 
            For Each Sh In ThisWorkbook.Worksheets        
                If Sh.Name <> "" And InStr(Sh.Name, "template") = 0 Then          
                    strTblName = Sh.Cells(1, 2).Value           
                    'Delete SQL
                    strSQL = "Delete from " + strTblName + ";" + vbCrLf + strSQL              
                End If
            Next Sh          
            ADO_Stream.WriteText strSQL  
            For Each Sh In ThisWorkbook.Worksheets
               If Sh.Name <> "" And InStr(Sh.Name, "template") = 0 Then         
                    strTblName = Sh.Cells(1, 2).Value                       
                    rowcounts = 1              
                    'Insert SQL      
                    row = 6             
                    Do While Sh.Cells(row, 1).Value <> ""               
                        strSQL = "Insert into " + strTblName + " ("                   
                        col = 1
                        Do While Sh.Cells(3, col).Value <> ""                      
                            If col <> 1 Then
                                strSQL = strSQL + ", "
                           End If                       
                            strSQL = strSQL + Sh.Cells(3, col).Value
                       
                            col = col + 1
                        Loop                   
                        strSQL = strSQL + ") VALUES ("                  
                        col = 1                  
                        Do While Sh.Cells(3, col).Value <> ""                 
                            If col <> 1 Then
                                strSQL = strSQL + ", "
                            End If
                           
                            str = Trim(CStr(Sh.Cells(row, col).Value))
                           
                            If (InStr(Trim(CStr(Sh.Cells(4, col).Value)), "Integer") = 0) And (InStr(Trim(CStr(Sh.Cells(4, col).Value)), "Decimal") = 0) And ((InStr(Trim(CStr(Sh.Cells(4, col).Value)), "DATE") = 0) Or _
                            ((Len(str) > 0) And (InStr(Trim(CStr(Sh.Cells(4, col).Value)), "DATE") > 0))) Then
                                If (Len(str) <= 0) And (InStr(Trim(CStr(Sh.Cells(5, col).Value)), "No") = 0) Then
                                    str = "NULL"
                                ElseIf InStr(Trim(CStr(Sh.Cells(4, col).Value)), "DATE") > 0 Then
                                    str = "to_date('" + str + "','yyyy-mm-dd hh24:mi:ss')"
                                Else
                                    str = "'" + str + "'"
                                End If
                           
                                strSQL = strSQL + str
                            ElseIf (Len(str) <= 0) And (InStr(Trim(CStr(Sh.Cells(4, col).Value)), "DATE") > 0) Then
                                strSQL = strSQL + "NULL"
                            Else
                                If (Len(str) <= 0) And (InStr(Trim(CStr(Sh.Cells(5, col).Value)), "No") = 0) Then
                                    str = "NULL"
                                End If
                           
                                strSQL = strSQL + str
                            End If
                           
                            col = col + 1
                        Loop
                   
                        strSQL = strSQL + ");" + vbCrLf                   
                        ADO_Stream.WriteText strSQL
                        row = row + 1
                                   
                    Loop              
               End If
               
                i = i + 1
                       
                    'ADO_Stream.SaveToFile ThisWorkbook.Path & "\SQL\" + sh.Name + ".txt", 2
                    'ADO_Stream.Close
                    'ADO_Stream.Open
               
                rowcounts = 0
                filecount = 0
               
            Next Sh
            ADO_Stream.SaveToFile ThisWorkbook.Path & "\MstSQL.txt", 2
            ADO_Stream.Close
            Set ADO_Stream = Nothing
           
        ElseIf Trim(checkType) = "2" Then       
            For Each Sh In ThisWorkbook.Worksheets
               If Sh.Name <> "" And InStr(Sh.Name, "template") = 0 Then         
                    strTblName = Sh.Cells(1, 2).Value         
                    'Delete SQL
                    strSQL = "Delete from " + strTblName + ";" + vbCrLf
                    ADO_Stream.WriteText strSQL
                    rowcounts = 1              
                    'Insert SQL     
                    row = 6              
                    Do While Sh.Cells(row, 1).Value <> ""              
                        strSQL = "Insert into " + strTblName + " VALUES ("                  
                        col = 1                  
                        Do While Sh.Cells(3, col).Value <> ""                  
                            If col <> 1 Then
                                strSQL = strSQL + ", "
                            End If                       
                            str = Trim(CStr(Sh.Cells(row, col).Value))                       
                            If (InStr(Trim(CStr(Sh.Cells(4, col).Value)), "Integer") = 0) And (InStr(Trim(CStr(Sh.Cells(4, col).Value)), "Decimal") = 0) And ((InStr(Trim(CStr(Sh.Cells(4, col).Value)), "DATE") = 0) Or _
                            ((Len(str) > 0) And (InStr(Trim(CStr(Sh.Cells(4, col).Value)), "DATE") > 0))) Then
                                If (Len(str) <= 0) And (InStr(Trim(CStr(Sh.Cells(5, col).Value)), "N") = 0) Then
                                    str = "NULL"
                                ElseIf InStr(Trim(CStr(Sh.Cells(4, col).Value)), "DATE") > 0 Then
                                    str = "to_date('" + str + "','yyyy-mm-dd hh24:mi:ss')"
                                Else
                                    str = "'" + str + "'"
                                End If                      
                                strSQL = strSQL + str
                            ElseIf (Len(str) <= 0) And (InStr(Trim(CStr(Sh.Cells(4, col).Value)), "DATE") > 0) Then
                                strSQL = strSQL + "NULL"
                            Else
                                If (Len(str) <= 0) And (InStr(Trim(CStr(Sh.Cells(5, col).Value)), "N") = 0) Then
                                    str = "NULL"
                                End If                       
                                strSQL = strSQL + str
                            End If                       
                            col = col + 1
                        Loop              
                        strSQL = strSQL + ");" + vbCrLf                   
                        ADO_Stream.WriteText strSQL             
                        row = row + 1                   
               
                    Loop       
                    ADO_Stream.SaveToFile ThisWorkbook.Path & "\" + Sh.Name + ".txt", 2
                    ADO_Stream.Close
                    ADO_Stream.Open              
               End If           
                i = i + 1           
                rowcounts = 0
                filecount = 0           
            Next Sh       
            ADO_Stream.Close
            Set ADO_Stream = Nothing   
        Else       
            MsgBox "请输入选择项!"
            ADO_Stream.Close
               
        End If
    End Sub

     

     

  • QTP如何设置数据库链接

    2012-12-24 16:18:10

    1.       选择数据库检查点

    Insert->Checkpoint->Database Checkpoint

    点击“Specify SQL statement manually

     

    2.       新建“机器数据源”

     点击【Create】,选择“选择数据源”->“机器数据源”->点击【新建】按钮

     

    3.       创建oracle驱动配置

    弹出Oracle ODBC Driver Configuration 数据库驱动配置

     

    4.       验证数据库链接

    点击【Test Connection】验证数据库链接是否成功,输入数据库“密码”,点击【ok】显示连接成功

     

     

  • 日常FAQ收集

    2012-12-20 16:29:00

    1. 安装GooglePinyin输入法还会用到微软的IE版本,IE6版本以下还不能安装,可以试下哦,将注册表IE版本去掉再安装就会提示IE版本的问题,路径如下: REGEDIT\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\  去掉Version,W2kVersion对应的数据值.

  • win7上不支持loadrunner8.0

    2012-12-19 16:07:19

        今天忙活了半天,最后还是没成功录制,安装了lR8后,开始运行start recording时就报错,提示浏览器不支持,协议之类的错误,后来灵光一显,本人默认的浏览器是搜狗。本以为是这个低级错误,就将浏览器的设置为系统的IE,再次点击记录后还是报错,但跟之前的错误不一样样,这次从英文错误提示直接是指本台计算机的浏览器不支持,没办法,只能通过百度大侠求救了,原来是lR8的默认浏览器只支持IE6,没办法,只能将本机的默认浏览器先卸载了,再装IE6,一切顺利进行中,卸载完了,IE6安装程序也找到了,不要看这些小细节,就是很繁琐哦... 悲催的是IE6一直安装不了,原因分析是win7的默认版本IE为8,所以低版的IE6是装不上了,郁闷啊。QTP8自动化测试工具也要IE6才行,看能天宫不做美啊,工具是装的没问题,用不起来。只能闲置在电脑里了..有没大侠给点建议啊.. 先拜谢拉..
  • 测试心得

    2012-12-18 16:21:26

       写之前先引用一句名言:毛泽东讲的读书是学习,使用也是学习,而且是更重要的学习。从战争中学习战争......常常不是先学好了再干,而是干起来再学习,干就是学习。毫无疑问:软件测试也是一样,干中学,学中干。看过很多测试人员的博文,目前感觉测试人员就像游荡在河中的小鱼,四处寻找胜利的彼岸,不小心就会迷失方向,越游越远,每个人心中存在梦想,就像国家的中国梦一样,国家有国家的梦想,人民有各自的梦想。多需要自己坚持的毅力,不懈的奋斗才能实现。我的测试梦又是什么了,在有限的时间内完成高效的测试任务。论年限来说加入测试行业已经有三年多的光阴,岁月催人老,时间流逝的真快,刚毕业已经走了弯路,2008年开始学习软件测试,实际参加测试工作是从2009年开始,随着越来越多的大学毕业生的强劲的压进下,越来越多的人加入了测试行业,性能测试,自动化测试多将成为一个测试工程师所要具备的技能.一个优秀的测试工程师不可能完全依靠公司,需要自己不断的积累知识,在工作中进行探索总结经验。/×将枯燥无味的工作状态变的回味无穷,×/ 提高测试效率。而不是把时间停留在等待开发的修改问题上。要多跟开发进行沟通,因为你面对的可能是一个没有多少开发经验的人员,这样你就会变得很被动,可能由于重复问题的出现而影响测试效率,甚至熬夜加班的现象。唯一解决的办法就是沟通,公司不可能听取你的抱怨,牢骚。这些只能靠自己去解决处理。说到这里感觉的测试的责任之大,任务之重。要想做一名优秀的测试工程师,开发的知识还是务必要了解一些。

       当初进入软件测试行业是由于不需要开发代码,现在回想起来是个严重的错误,其实软件测试是个不断学习的过程,学习的范围面很广:行业知识用户角色软件产品数据库编程技能测试技术程序缺陷环境搭建等。验证了一句话: 一个不懂开发的测试,不能算是真正的测试

Open Toolbar