发布新日志

  • QTP 与QC/TD整合

    2009-01-08 23:42:10

        整合QTP跟QC(quantity center)是一件不错的选择,其会有下面一些好处:1> 如果本身是使用TD来做测试管理工具的话就可以方便测试用例跟测试脚本对应,方便管理.当然也方便Issue了. 2>用来存储并管理脚本.将脚本放在QC上就可以让团队编写使用脚本更为方便有效还可以进行脚本版本控制. 3> 可以方便组织脚本运行.可以方便组织哪些脚本在设定时间内在哪台机子上去跑脚本,跑完脚本后还将测试结果发送到相应负责人手中.

        看起来他们整合好处也不少,但要整合好也不容易,特别是需要费点时间去设置host机(用来跑脚本的机子).废话少说,开始整合工作.

       首先当然是要装个QC(旧版本的叫Merqury Test Direct),怎样安装就是题外话就不说了.安装运行QC后就可以设置QTP连接QC了.这个也简单输入QC的访问URL然后选择相应的Project那些.....

        此时应该就可以将QTP脚本放到QC上去了.接下来就是QTP 与QC/TD整合的最大好处体现了,不过也是最费时间设置的时候了.将脚本就到QC上后就可以在QC的客户端(浏览器)调用QTP并执行脚本.这个时候要设置的主要是两个方面.

        一个是QC客户端如假设机器名称为PC_QC,即是用来访问QC的机器.这里需要安装一个插件,这个一般情况下在你的QTP压缩包中有个"TD plugin"文件夹,里面就是这个插件了,如果没有也不紧要,可以下载. 步骤如下:工a)通过浏览器打开QC后,在主页面中根据链接其他 Mercury Quality Center 加载项---- QuickTest Professional 加载项进入下载页面,单击“下载 Quality Center 8.2 的加载项”进行下载并在您的客户端计算机上安装此加载项。b)下载并安装QC连通性加载项。进入加载项主页面,根据链接Mercury Quality Center连通性进入下载页面,下载并安装。c)它要求新启动,必须重新启动后才可用. d)注意事项:QTP跟QC的版本必须是适用的,插件版本当然也要一致了,在下载处有说明.然后是安装时必须是以管理员身分安装的.

        上面即是服务端(相对于运行脚本时用来调用的机子而言的服务器)的设置.接下来就是设置客户端(用来被调用用于执行脚本的机子).首先这个机子必须已经安装了QTP(没有QTP的话用什么来跑???呵呵),然后设置QTP允许外部程序执行:Tools—Option Run标签页给"Allow other Mercury products to run tests and components"打勾。或许也可以选上"Submit a defect to Qualiyt Center for each failed step".其实你也会奇怪怎么这台机器就允许别的机子来访问(通过qtp remote agent)呢?用什么用户名密码呢?首先你两机子要在同一上局域网内了(不然就太不安全了),然后客户端那些端口必须是打开的,然后放开一些特殊用户的权限.这个设置比较麻烦也是很多搞QTP整合QC不成功的地方.我设置时也试过很多网上的偏方但就是不行,后来才google到了官方处方,虽然有点麻烦,但是可行.由于较长,我将转载到下一篇.

        如果都设置好了的话就可以要服务端即是上面设置好的机器PC_QC上打开QC,然后选择要执行的脚本并为其选择用来执行的机子即客户端,然后在设定的时间上执行脚本了.

     

     

  • 虚拟对象

    2009-01-08 22:57:56

        对测试对象进行识别定位是自动化测试脚本比较麻烦的一点,暂时还没有非常完美的方法.QTP也不例外,其也有不少不能识别的对象.那怎么去操作这个对象呢?QTP其中一个方案则是使用虚拟对象.

        虚拟对象可能根据一定的属性(坐标,类似对象等)来创建一个对象以在回放时进行识别操作.不过它并不完美甚至很多时候会失灵,导致识别不了.所以考虑用虚拟对象时可以先考虑其它方法如使用键盘输入热键等.但不管怎样还是有可能会用到,下面是转摘了别人对使用虚拟对象的经验总结.

    1>虚拟对象不支持用于模拟或低级录制.

    2>仅当录制和运行测试或组件时,才能使用虚拟对象。您不能在虚拟对象上插入任何类型的检查点,也不能使用“对象探测器”来查看其属性. 录制和运行测试或组件时,网页或应用程序窗口的大小和位置必须和定义虚拟对象时的大小和位置相同。

    3>您只能为可以在其上单击或双击并录制 Click 或 DblClick 步骤的对象定义虚拟对象。否则,将忽略虚拟对象。例如,如果您在 WinList 对象上定义一个虚拟对象,录制 Select 操作,则虚拟对象被忽略。 不要使您的应用程序或网页中的虚拟对象相互重叠。如果虚拟对象与另一个虚拟对象重叠, QuickTest 可能无法正确地在虚拟对象上录制或运行测试或组件。

    4>虚拟对象管理器中显示的虚拟对象集合存储在您的计算机中,而不是随包含虚拟对象步骤的测试或组件存储。 这意味着如果您在测试或组件步骤中使用虚拟对象,则仅当在包含正确的虚拟对象定义的计算机中运行时,该对象在运行会话过程中才能被识别。要将您的虚拟对象 集合定义复制到另一个计算机,请将您的 <QTP安装文件夹>\dat\VoTemplate 文件夹的内容(或该文件夹中的单个 .vot 集合文件)复制到目标计算机上的相同文件夹中。

    5>创建虚拟对象时要注意在“标识对象使用”框中,选择您希望 QuickTest 标识和映射虚拟对象的方式. 5.1 如果您想要 QuickTest 标识所有出现的虚拟对象,请选择“仅父类”。QuickTest 仅通过其直接父类标识虚拟对象,而不考虑整个父层次。 例如,如果虚拟对象是使用 Browser("A")。Page("B")。Image("C") 定义的,则即使层次更改为 Browser("X")。Page("Y")。Image("C"), QuickTest 仍将识别该虚拟对象。 5.2如果想要 QuickTest 仅标识一次出现的虚拟对象,请选择“整个父层次”。QuickTest 将仅标识具有准确的父层次的虚拟对象。 例如,如果虚拟对象是使用 Browser("A")。Page("B")。Image("C") 定义的,则如果层次更改为Browser("X")。Page("B")。Image("C"), QuickTest 将无法识别该虚拟对象。

  • QTP 同步等待问题

    2009-01-08 22:31:16

        在自动化测试中,同步等待也是一个很重要的问题,特别是Ajax的出现,使这个问题更为复杂.做过自动化测试的都清楚,要对测试对象操作的前提是对象已存在甚至是可见,否则就可能出错,甚至脚本运行不下去. 这也是自动测试执行中较为常见的脚本错误之一.现在总结下QTP的几个同步等待方法.

        1>对象的默认等待时间. 运行QTP脚本过程中要对某个对象进行操作时, QTP会根据对象库中对象的属性或是对象描述的属性对进行搜索此对象,如果在一段时间内仍未找到相应对象则认为些对象不存在.而这个时间则是对象的默认等待时间.可以在File-->Settings-->Run-->Object synchronization中设置,默认时间是20秒.

        2>对象的Exist属性.每个对象都会有Exist属性以判定些对象是否存在,其可以设置一个参数即是等待时间,在这个时间进行对象搜查. 使用注意1: 这是个对象属性而不是对象方法,其会有个返回值,当然是布尔值了.所以不能将"Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Exist(5)"作为一个语句,必须接受其返回值,不然会提示引对象不支持此方法. 使用注意2: 其参数是秒而非QTP tutorial上提示的毫秒,别被忽悠了.

        3>对象的waitProperty ("property","expectVaue",timeout)方法.几乎每个对象都有这个方法,此方法是指在timeout时间内等待此对象的某个属性值为期望值.如果在timeout内属性期望值出现则立刻执行下一步否则等待timeout. 注意此也是QTP设置同步点的方法:在录制状态下,选择Insert-->Synchronization Point,选择要同步的对象,设置要同步的属性则可设置一个同步点了.

        4>Synce方法.这个是WEB中专用的,主要用于页面载入时.使用范围较小但简单实用.

        5>wait方法,也被形象戏称为"死等大法".即是执行到这一步时暂停执行脚本,然后等待一段时间,时间满后继续执行下一步.Wati(timeout),此方法的唯一参数当然是等待时间了,它由秒跟毫秒组成.

        大概来说QTP有5种同步等待方法,实际中运用哪个就要看具体情况了,我的建议也是按上面的顺序...

     

  • Start QTP

    2009-01-07 21:51:26

        测试工作一年多了,对自动化测试较为感兴趣.所以在工作后的第一家公司接触了WEB自动化测试工具Selenium后兴奋不已并投入了不少时间与精力去研究,但根基较浅,虽有成果但仍讲不上精通.一年后因一些原因离开旧公司后来到新公司跟一个同事实现了公司一个项目的自动化测试,算是尝试吧.效果还好吧,但经历过几个版本的使用之后,对脚本的维护也感到有点厌烦了,主要是有一大部分是另外一个同事所写而且有不少依赖于现存数据,一旦测试不通过就得去维护那些数据,所以维护脚本还要维护数据,有点.只想项目作大改动,重新设计编写过所有脚本.这也让我认识到自动化测试中,测试框架及脚本组织与自动化用例设计的重要性.以前以为自动化测试主要是学会如何写好脚本,其实自动化测试思想更重要,脚本编写只是其中一环,顶多是重要环节之一.

       但无论如何这一环也是需要的,必不可少的,也是好的自动化测试思想的来源,所以也准备花多点时间探索Selenium.可惜,做了其它项目后暂时用不上Selenium,工作时间探索的机会少了. 直至做另外一个项目是基本C/S的,Selenium用不上了,Leader 便让我们寻求另外一个工具.当时我试用了下 IBM robot,感觉不错.但公司最后还是选择了现在较热的QTP,我想也不错的,我也想见识下,便与另外两位靓女同事开始探索QTP.

        经过一段时间的使用,掌握了QTP的基本操作了,感觉也不错.但是对其对象识别基于对象库不是很习惯,我已习惯了Selenium式的对象识别机制,当然QTP的描述编程也行的,还是感觉方式不够selenium多,不如其方便.此外,测试B/S结构的话支持浏览器没有selenium多.当然,说到功能上边,是QTP强大很多,人家热也有理由的.用了一段时间了还没使用上其较为强大的功能如调用dll等,还是感觉QTP还很深,需要更多去实践与了解,毕竟听说很强大.

        玩了一段时间也只编写了一些脚本,因为它竟然用于新功能的测试,甚至是十分微小的改动,如一个列表的一栏去除了.有点吐血,一开始以为只是用来练习,最后竟然是用来新功能测试.还好后来项目测试主要由我负责,整合了部分脚本用来做smoke test,还好不是完全没用效果.当然时间有限我也无暇再去怎样设计整个框架跟组织脚本,也没再为测试添加用例与脚本了.leader没有说就算了.希望下次实施自动化时能多点影响到,重视框架跟脚本组织及用例选择编写.

        看似有点埋怨leader,其实也不能怪她,毕竟她没怎么参与也没有自动化实践的经验.而且也应该谢谢她提供这个机会给我们去实践学习.现在算是开始踏上QTP的使用之路了,我也应该花多点去时间去学习实践下并归纳总结自动测试的精要,深化自己的理论,加强自己的实践.对于selenium这个系列的工具我也会持续关注并尝试,毕竟它是个不错的选择.

  • Selenium学习三-selenium RC简介

    2008-11-05 21:43:02

    Selenium RC 就是使用程式语言编写脚本,通过Selenium RC服务器作为代理服务器去访问应用从而达到测试的目的.由于Selenium RC不再需要依附Firefox,所以其可以在其它更多的浏览器上进行测试,而这也是我们做WEB测试的一个比较重要的问题(解决了因为担心浏览器兼容问题而重要做测试的问题). RC的脚本由于是程序语言编写,所以更为灵活强大.并且它支持的语言极为丰富.所以RC是Selenium测试工具中的应用最广的.同时,它对测试人员编程水平要求也较高.下面将简介Selenium RC.
        Selenium RC使用包括两部分,一是服务器,一是脚本.服务器则下载后即可使用,记得开始跑脚本时把服务器打开.它是一个已经打包好的JAVA程序,运行 java -jar selenium-server.jar即可.要使用 selenium-rc ,启动这个server 是必须的。当然,启动的时候有一些参数,可以到其官方网站上参考.不过做一般的测试,不需要要额外的参数已经足够.
        另一部分是脚本,就是我们要编写的了.它可以使用多种语言编写,如C#,ruby,java等,在这里我采用java.它可以在多个测试框架上应用,如junit/nunit, testng等,这里采用junit.在整个测试框架中,Selenium提供了封装好的selenium 接口与类,如果使用junit它还提供了封装好的测试类.下面将按步骤以一个简单的例子介绍基于junit3.0的测试框架用java语言在Ecplise平台上编写并运行脚本.
       1>编写测试脚本.首先建立一个java project,记得要把junit3.0的包与selenium java(即是selenium-java-client-driver.jar) 包放到project中.然后建立一个类直接继承封装好的selenium测试类.脚本如下:
    package com.xpg.study;

    import com.thoughtworks.selenium.*;

    // 继承测试类
    public class DefaultTestCase extends SeleneseTestCase {
    //实例化Selenium 类
    Selenium selenium;
    //覆盖setUp方法
    public void setUp() throws Exception{
    //实例化DefaultSelenium类,其它命令均是它的方法
    selenium=new DefaultSelenium("localhost",4444,"*iexplore","http://www.baidu.com");
    //启动selenium 创建一个新的session
    selenium.start();
    }
    //覆盖teardown方法(在这里没有特别的设置)
    public void tearDown()throws Exception{
    selenium.stop();
    }
    //建立一个测试方法,里面是命令的集合了..
    public void testBaidu()throws Exception{
    // DefaultTestCase test=new DefaultTestCase();
    //注意这里的selenium即是类中的已经启动的selenium,命令都是它的方法
    selenium.open("http://www.baidu.com");
    selenium.waitForPageToLoad("6000");
    selenium.type("kw", "selenium");
    selenium.click("sb");
    Thread.sleep(3000);
    assertTrue(selenium.isTextPresent("相关搜索"));
    }
    }

        以上则是一个简单的用来测试百度网站的例子.当然一般情况下我们会将junit testCase放在专门的测试类中,这个测试类则直接继承SeleneseTestCase类,以更好的组织脚本也可达到重用的目的.
        编写好脚本当然是试运行下了.首先得开户Selenium 服务器,用命令java -jar selenium-server.jar -multiWindow 即可打开. 这里加了个参数-multiWindow是为了在运行时应用运行的浏览器与Selenium 服务的浏览器分开. 打开服务器后即可运行脚本了. 最后脚本不出意外的话应该是Passed.
        以上只是非常简单的一个selenium RC就用于测试的例子.要将selenium RC 很好地应用于测试则需要花点时间熟悉,研究下....

  • Selenium学习二---selenium IDE介绍

    2008-10-31 00:03:50

        Selenium IDE 是selenium测试工具中的其中一个,是一个基于FireFox的Web测试开发环境,可以录制、编辑和调试测试。Selenium IDE包含了Selenium Core,因此可以轻易地在浏览器中录制和回放测试。
      Selenium IDE不仅仅是一个测试录制工具,而是一个IDE,可以录制测试,也可以手工编辑测试,可设置断点进行调试,可把测试保存到HTML、Ruby、C#、Java等其他脚本格式,然后使用Selenium RC来实现并运行更加灵活和强大的测试。
       Selenium IDE是一个firfox插件,录制相当方便,而且效果不错,很多录制后不需要修改即可回放.编辑也相当简单,一行就是一个完整的命令.十分适合于编程基础较薄的测试人员使用.但是由于所用的语言是selenese即是类html脚本语言而非程式语言,于组织脚本不够灵活,所形成的功能不如selenium RC 强大,而且对脚本组织也不方便.更重要的是暂时只支持 firefox浏览器.所以一般情况下是以selenium IDE 来熟悉 selenium功具.然后利用IDE 来录制脚本作为selenium core的脚本文件或更多的是用IDE录制而保存为drive脚本即是程式语言脚本如java 脚本.但无论如何 selenium IDE是学习selenium的必修课,因为日后录制脚本需要它,即使用selenium rc也可用它录制部分脚本并可方便用于调试.下面将简单介绍Selenium IDE的整个使用过程.
        1> Selenium IDE 安装. 从其官方网站下载安装:http://selenium-ide.openqa.org/,跟普通frifox 插件安装没有什么两样(注意是firefox安装插件不是IE哦..).安装完成后,在浏览器"工具"菜单栏即可见Selenium IDE 工具.
        2>Selenium IDE录制脚本.安装完成后当然是开始录制脚本了.打开IDE工具后,类似一个小浏览器(此时默认是录制状态),在Base URL 中输入你要录制的网站网址如www.google.com.然后在Firefox 中打开google 网站,输入"Selenium ide",再点击搜索.然后点击IDE工具的停止录制按钮停止录制.此时你会发现在"Table"中有了一些命令行,每一有三个部分组成.   command:命令如单击click, Target:目标即是命令的对象如单击按钮(用xpath或是其它定位方法表示),Value即是值如向输入框输入东西即在这里设置.而在"Sourse"中可看到类似html 的脚本,保存后就这样了,呵呵.
        3> Selenium IDE编辑脚本.你可以在Table中修改,点击相应命令行,所在行内部便会出现在下方,即可方便修改,如选择相应的command.当然你也可以在Sourece中修改,但人必须对 Selenium命令很熟悉. 现在修改下刚才录制的脚本,将第二行命令的value 修改为Selenium.
        4>Selenium IDE脚本运行. 修改完后即可点击运行按钮运行.运行刚才修改过的脚本,你会发现其迅速打开google浏览器并输入"Selenium"并点击进行搜索.此时运行结束.
        5>Selenium IDE脚本保存.保存时可保存为html脚本或是其它程式语言脚本,初步学习还是保存为html脚本吧.
        6>打开 seleniumIDE脚本并运行.这个就非常简单了....
        到此,Selenium IDE录制并修改运行整个过程完成了,你已经可以轻松方便使用selenium IDE进行录制运行脚本了.但是要运用到测试中去尚需要时间熟悉,如都有什么命令啊,如何进行定位啊,如何用assert来验证验证点啊,这也是selenium 测试主要学习的三点.如果这三占都搞明白了,熟悉了,恭喜你,你已经可以用selenium进行测试了.
        作为使用selenium IDE 工具并不复杂,而在于如何更熟悉它并用于测试中去.况且如前面提到只用Selenium IDE 进行测试局限性太高,所以建议借学习selenium IDE 了解并熟悉selenium工具,然后用其录制脚本并用 selenium 其它工具进行测试如selenium Core, selenium RC,selenium Grid.于本人使用经验而言,建议使用selenium RC.当然并不是说其它不好,其它有自己的优势或是功能也是RC不具备的.从学习与使用方面考虑是先学习 selenium IDE, 然后转向Selenium RC. 所以接下来将介绍Selenium RC.
  • Selenium 学习一

    2008-10-29 23:55:00

      selenium 是openQA的一个用于Web应用程序测试的不错的开源工具。它是通过javascrīpt来驱动测试的,真实在浏览器中运行测试,更接近用户的实际操作。它定位方式很灵活,可以直接用标签ID,link等,当然最为灵活并可靠的就是通过xpath 来定位,能过xpath几乎没有不可定位的元素。此外它支持各类主流浏览器IE,firefox,safari,而且是同一个脚本就可搞定,这是它较为厉害的一点。当然它也有自己的缺点:不能处理非javascrīpt 类弹出窗口,跨网站处理不容易等。总的来说selenium 是一个非常不错的web应该程序测试工具。
        selenium本身亦有几个测试框架,selenium IDE, selenium RC, selenium Grid, selenium Core. 但总的来说脚本只有两种即是通过程式语言编写的脚本及HTML脚本。其中较为常用的是selenium RC 及selenium IDE.  HTML 脚本编写较为简单易懂,但不够灵活,维护亦不那么容易,局限性较大,适合于非技术人员或是于编程不太熟悉者。而程式语言编写的脚本刚比较灵活强大,而且可以提供较多种类语言编写如java,c#,ruby等。所以建议有编程基础的同仁用selenium IDE 录制后保存为 程式语言脚本进行编辑维护。
        具体如何使用期selenium进行测试呢?下面将简单介绍selenium IDE 的使用并较为详细地与同仁们探讨selenium RC的使用。
        相关网站:http://selenium.openqa.org
  • SVN 使用介绍

    2008-10-29 23:11:10

       SVN(SubVersion)是一个自由/开源的版本控制系统。Subversion 的版本库可以通过网络访问,从而使用户可以在不同的电脑上进行操作。从某种程度上来说,允许用户在各自的空间里修改和管理同一组数据可以促进团队协作。因为修改不再是单线进行(单线进行也就是必须一个一个进行),开发进度会进展迅速。于我们测试而言,我们常用它来对测试脚本和各种测试文档进行版本控制。是一个非常好的版本控制系统。
       SVN有服务端与客户端,都需要安装相应的软件。其中服务端现在有可视化的版本及非可视化的版本,客户端则有系统中直接安装的及各类支持插件如Ecplist svn插件。现介绍相关操作如下(基于非可视化服务端及非插件式客户端):
    1>下载安装:开源的免费下载,安装较为容易不再介绍。
    2>建立版本库(Repository)
    运行Subversion服务器需要首先要建立一个版本库(Repository),可以看作服务器上存放数据的数据库,在安装了Subversion服务器之后,可以直接运行,如:svnadmin create E:\svndemo\repository
    就会在目录E:\svndemo\repository下创建一个版本库。

    我们也可以使用TortoiseSVN图形化的完成这一步:
    在目录E:\svndemo\repository下"右键->TortoiseSVN->Create Repository here...“, 然后可以选择版本库模式, 这里使用默认即可, 然后就创建了一系列目录和文件。

    3> 配置用户和权限
    来到E:\svndemo\repository\conf目录,修改svnserve.conf:
    # [general]
    # password-db = passwd
    改为:
    [general]
    password-db = passwd 然后修改同目录的passwd文件,去掉下面三行的注释:
    # [users]
    # harry = harryssecret
    # sally = sallyssecret
    最后变成:
    [users]
    harry = harryssecret
    sally = sallyssecret

    4> 运行独立服务器
    在任意目录下运行:
    svnserve -d -r E:\svndemo\repository 我们的服务器程序就已经启动了。注意不要关闭命令行窗口,关闭窗口也会把svnserve停止。

    5> 初始化导入
    来到我们想要导入的项目根目录,在这个例子里是E:\svndemo\initproject,目录下有一个readme.txt文件:
    右键->TortoiseSVN->Import...
    URL of repository输入“svn://localhost/”
    ok
    完成之后目录没有任何变化,如果没有报错,数据就已经全部导入到了我们刚才定义的版本库中。

    需要注意的是,这一步操作可以完全在另一台安装了TortoiseSVN的主机上进行。例如运行svnserve的主机的IP是133.96.121.22,则URL部分输入的内容就是“svn://133.96.121.22/”。

    6> 基本客户端操作
    取出版本库到一个工作拷贝:
    来到任意空目录下,在本例中是E:\svndemo\wc1,运行右键->Checkout,在URL of repository中输入svn://localhost/,这样我们就得到了一份工作拷贝。
    在工作拷贝中作出修改并提交:
    打开readme.txt,作出修改,然后右键->Commit...,这样我们就把修改提交到了版本库,我们可以运行。
    察看所作的修改:
    readme.txt上右键->TortoiseSVN->Show Log,这样我们就可以看到我们对这个文件所有的提交。在版本1上右键->Compare with working copy,我们可以比较工作拷贝的文件和版本1的区别。
  • sql 语句_基本操作

    2008-05-10 00:22:14

    操作数据库:

    1.创造数据库:Create database database_name;

    2.删除数据库:Drop database database_name;

    3.创建新表:create table tabel_name(col1 type1 [not null] [primary key], col2 ...);

      以旧表创建新表:create table table_name_new like tab_old

                   create table table_new as select col1,col2,..from tab_old definition  only;

    4.删除表:drop table table_name;

    5.增加列:alter table table_name add column colname typename

      删除列 alter table table_name drop column coluname

    6.添加主键:alter table table_name add primary key (colName)

      删除主键:alter table table_name drop primary key(colName)

    7.创建索引:create [unique]index indexName on tableName(col...)

      删除索引:drop index indexName on tableName

    8.创建视图:create view viewname as select_statement

      删除视图:drop view viewName

    9.常用语句:选择:select * from table1 where 范围
    插入:insert into table1(field1,field2) values(value1,value2)
    删除:delete from table1 where 范围
    更新:update table1 set field1=value1 where 范围
    查找:select * from table1 where field1 like ’%value1%’   排序:select * from table1 order by field1,field2 [desc]
    总数:select count(field) as totalcount from table1
    求和:select sum(field1) as sumvalue from table1
    平均:select avg(field1) as avgvalue from table1
    最大:select max(field1) as maxvalue from table1
    最小:select min(field1) as minvalue from table1

  • 面试京华网络

    2008-05-09 23:25:31

       今天面试京华网络,发现自己真菜!!!!

       sql语句不太熟悉,真不好意思讲出口!哎...loadrunner?没用过! Rational Robot?没用过?还有个什么C,也没用过! 无语...

       不过细想下,整年来也没怎么认真学过东西,公司本身没有什么学习与培训的机会!当然一个同事说得很对,学东西还是靠自己的!是我偷懒了!!!

       也不紧要!由现在开始,我要开始学习&奋斗!将我的学习札记写到博上来!

       菜鸟!疯狂吧!!!GO...

  • 开博客了

    2008-05-08 12:38:15

        从事软件测试也一年了,到51Testing报到也一年了,是时候开个博了!

     从事测试一年多来,到这里学习了不少。现在也希望可以通过博客跟更多的测友们进行交流,学习!我是个菜鸟!但也没说菜鸟就不能说话,不能飞啊?呵呵!我要疯狂地去飞,飞得更高更远!做个疯狂的菜鸟!

312/2<12
Open Toolbar