以知识交友,向各位求教,充实自己,不断进取。

发布新日志

  • 外企公司常用英文缩写

    heavy200t 发布于 2010-05-01 00:09:51

    首席执行官【CEO】 - Chief Executive Officer
    首席技术官【CTO】 - Chief Technology Officer
    首席运营官【COO】 - Chief Operation Officer
    首席信息官【CIO】 - Chief Information Officer
    首席财务官【CFO】 - Chief Finance Officer
    首席品牌官【CBO】 - Chief Brand Officer
    首席文化官【CCO】 - Chief Cultural Officer
    首席开发官【CDO】 - Chief Development Officer
    首席人事官【CHO】 - Chief Human resource Officer
    首席知识官【CKO】 - Chief Knowledge Officer
    首席市场官【CMO】 - Chief Marketing Officer
    首席谈判官【CNO】 - Chief Negotiation Officer
    公关总监【CPO】 - Chief Public relation Officer
    质量总监【CQO】 - Chief Quality Officer
    销售总监【CSO】 - Chief Sales Officer
    评估总监【CVO】 - Chief Valuation Officer

    RGDS: regards
    TKS: thanks
    ASAP: as soon as posible
    BTW: by the way
    FW: foward
    COD: code of conduct 公司行为规范准则
    OL: office lady
    EG: for example
    FYI: for you information 供参考
    ETC: esmated time of complete
    ETS: esmated time of shipping
    NG: no good
    NFG: no funking good
    FNG: funking new guy 常指把事情搞得一团糟的新员工
    SOB: son of a bitch 我的口头禅
    cc: copies send to
    bcc: copies send to undisclosed-recipients 这一招很阴毒,发文骂人,bcc老板,而受文者看不到你告状
    stand up meeting非正式的短会,比如说三两个人站在过道中间讨论一下事情,老外喜欢这样干;
    sticker一种名为"post-it"的黄色小纸片,可以贴在电脑屏幕上或电话机上,办公室的小女生喜欢用它来写一些与工作无关的事;
    Fedex/DHL/UPS 常用的快递公司;
    Gettogether 聚一聚,"Let's have a gettogether this weekend."
    Reminder 提醒一下,"Just a kind reminder."表示你可能miss掉了一些事情,人家不方便指责你,所以"善意提醒";
    Localize 这几年各大公司流行这个词,是老外挂在中层本地骨干前面的胡萝卜。"localize the management level"
    Cell 对手机比较地道的说法,"Call my cell if you can't find me in the office." 说 mobil phone比较土,说hand phone就土掉渣了;
    Page 传呼,BB机流行的年代常用。"Page me." 说"Call me."的很土;
    Manuel 工作手册,指南
    Expense 费用,出差要报销的也是expense;
    Budget 预算,每个项目不论大小,包括出去聚餐,都要事先算budget;
    pain in the ass 办公室口头禅,意指老也没办法解决的麻烦事;
    outing 忙碌了一段时间,或一个重要项目完成后,老板带大家出去疯一次,当然是公费,一般是星期五方一天假,再加上周末两天;用travel 或 tour 相当不地道,很土;
    project 使用频率最高的词之一,很多非外企也爱用它,我朋友的公司开会时也爱说"我们来讨论一下这个破街。"
    fall guy 替罪羊,公司里避免不了;
    face music 挨骂,被上司训斥;
    kick somebody's ass 老板训人;
    go by book 按规章办事
    tough 两个意思,一指办事手段果断,不留情面;一指棘手的事情;
    day in and day out 日复一日;
    first-aid 指公司内的医药箱;
    misunderstanding 误解,误会,办公室内经常会有;
    routine 例行事务
    screw up 弄砸事情,常用纯口语,正式一点的说法是"You did it wrong."公司里面一般说"You screw it up." screw这个词单独用在口语里,相当于国语里面的"操"和"干",当然原意是指钻钉螺丝,名词指螺丝刀;
    creative / creativity 创造性思维,老外最推崇这一点;
    petty cash 出差或办事前,跟财务领取的备用金,这个词组很有用;
    sign off 签发,可以指文件,也可以指正式认可某件事的开始执行;
    stationary 文具,很有用的一个词;
    这次介绍一些关于工作方面的东东,
    asignment
    任务,职责;in charge / follow up / responsible for
    这三个说法的意思都是"负责",但用法不一样:
    in charge 表示对一个部门,一项有一定重要性的事务负责,也可以对人,与权力相关,
    follow up 表示具体跟进某事,与事情的重要性,与人,与权力无关,
    responsible for 的程度介乎前两种表达之间;
    credit 不是信用卡那个信用的意思,指员工在公司内积累的口碑,信任度和价值,"Good job, this will add your credit in the company."这句话的意思是老板以后会更重视你,因为你这件事干得好。
    Reputation 名声,口碑,不论好坏;
    lay off: 解雇;
    extension: 分机,常简作:ext#
    approach 报告,会议中常用此词,尽量达到的意思,中文确切表达此词有难度;
    presentation 简报,一般用ppt来做;
    scenario 这个词很有意思,原用于电子游戏的"关卡"的意思,公司内常用于指某个大项目的其中一个阶段,或其中一个部份;
    proposal 未经确认通过的提议,待讨论的方案;
    package 包裹,所谓"一揽子计划"就由此而来,比如你去某公司interview,最后让你提问,比较地道的说法是"What's the package?"问的是你们能给的待遇乱七八糟加起来有些什么?
    harassment :骚扰
    headquarters :总公司,总部
    LO :liaison office,当地国家的分部;
    recognize :认可,recgnized supplier, 指认可的供应商;
    amotize :分摊,"The expenses are to be amotized by the LOs."由各分公司分摊费用;
    on shifts :轮班;
    driver :推动者,"The develpment will drive this case."这个项目由开发部主导。

     
  • 测试杂感:最好的代码覆盖率工具

    liangshi 发布于 2010-04-25 18:03:44

    代码覆盖率(Code Coverage)是指测试执行覆盖代码的程度。在工业界,常用的代码覆盖率度量包括类覆盖、函数覆盖、语句块覆盖、分支覆盖等。通常,开发者需要使用某种测试工具去收集测试的代码覆盖率。例如,.NET开发者可以使用Visual Studio 2008去收集C#代码的函数覆盖和语句块覆盖。本文将介绍我心目中最好的代码覆盖率工具。

    在2008年初,我接到一个测试任务,去测试一个Web服务。这个Web服务用C#实现,它接受Web服务调用,根据输入更新后台的数据库中的数据。这是一个小项目,核心逻辑大约在千行上下。我接手的时候,代码已经写完。开发者有简单的测试,他提供了5条端到端(end-to-end)测试用例供我参考。

    当时,我最头痛的是完全不知道该Web服务的业务逻辑和实现逻辑。在仔细地阅读了规格说明和几封很长的讨论邮件之后,大致知晓了项目背景,但是仍旧不了解实现逻辑,也不知道什么行为是可以接受的、什么行为是错误的。由于开发者与我有16个小时的时差,不能随时和他联系,很多问题得不到及时的解答,测试很难展开。

    为了有所突破,我只能阅读实现代码。我的方法是,在Visual Studio中单步执行开发者的测试用例,观察程序中变量值的变化和数据库中数据的改变。有了初步的认知,我开始增加测试用例。大部分测试用例都是一个模式:

    1. 恢复被测试Web服务的后台数据库到已知的初始状态。
    2. 调用Web服务。Web服务是无状态的,但是它会改变数据库中的数据。
    3. 对数据库中的数据进行一致性检查。我花了许多时间编写并增强检查代码,整个测试开发过程是渐进的。
    4. 执行当前测试所特有的检查。

    设计完一个测试用例,我就在Visual Studio中单步执行它,从而更深入地了解实现逻辑。在阅读、执行代码的过程中,会发现潜在的问题。这时,我会增加一个测试用例去“证明”这个问题可以导致产品的失败。随着测试用例越来越多,我对代码的理解也越深,发现的缺陷也越多。后来,缺陷不那么好找了,我就仔细地读代码,特别是那些没有被测试覆盖过的代码。然后,便增加测试用例去尽可能地提高测用例的覆盖率。一方面,测试用例要尽可能地覆盖所有的代码块;另一方面,测试用例要覆盖所有主要的数据状态和我觉得有风险的数据变更。

    在项目结束的时候,我对测试的代码覆盖率很有自信。只有三个在catch语句中的代码块没有被覆盖,它们在产品环境中被执行的概率非常低。我仔细阅读过代码,它们即便被执行也不会导致危险。实际上,我比较担心的是测试没有覆盖一些复杂的数据转换。虽然我在不停地补充此类测试用例,但是这个项目的测试周期较短,测试用例能够覆盖的程序状态空间还是偏少。庆幸的是,产品上线后运行良好,没有发现问题。

    回顾这个项目,我觉得有两点经验可以吸取。

    第一,人的大脑才是最好的代码覆盖率工具。代码覆盖率工具能提供大量的信息。只有在充分理解代码与测试的前提下,这些信息才能得到有效的利用。这个项目的代码规模较少,因此我没有使用代码覆盖率工具。通过反复阅读代码、调试代码,我收集了代码覆盖率信息,并利用这些信息改进了测试。可以说,代码覆盖率是随着对代码不断的探索而自然提高的。对于大型项目,合理的利用代码覆盖率工具自然是大有裨益的。在这一过程中,阅读、理解、探索代码仍旧是指导测试的核心活动。

    第二,代码覆盖率只提供了程序结构被覆盖的信息,测试者还需要关注程序状态是否被有效地覆盖。在本项目中,程序的状态可以视为数据库中数据值。Web服务能否完成很多时候取决于取决初始数据值是否有效、目标数据值是否可以接受。不同的数据对于相同的执行路径会产生完全不同的结果。如果仅仅关注程序结构,很可能会漏掉一些由状态引发的问题。

     

  • 软件测试英语经典大全下载

    danny235 发布于 2008-01-20 16:32:46Top 1 Digest 1

    由于本人现在刚在软件测试学习过程中 英语在测试中是很重要的基础知识 希望大家把基础打好
     这个英语整理的不是很好可能有很多重复的地方大家可以自己在整理一下
    众人拾柴火焰高 让我们一起进步!
  • 经典SQL语句大全

    fifi0rain 发布于 2009-12-30 15:47:07

    下列语句部分是Mssql语句,不可以在access中使用。 
      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
      左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
    SQL: 
    select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
      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、说明:子查询(表名1:a 表名2:b)
    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、说明:外连接查询(表名1:a 表名2:b)
    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、说明:在线视图查询(表名1:a )
    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 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
    (
    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,...)
      
    20、说明:列出数据库里所有的表名
    select name from sysobjects where type='U'
    21、说明:列出表里的所有的
    select name from syscolumns where id=object_id('TableName')
      
    22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。
    select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 endFROM tablename group by type
      显示结果:
    type    vender pcs
    电脑 A 
    1
    电脑 A 
    1
    光盘 B 
    2
    光盘 A 
    2
    手机 B 
    3
    手机 C 
    3
      
    23、说明:初始化表table1
    TRUNCATE TABLE table1
      
    24、说明:选择从10到15的记录
    select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
    随机选择数据库记录的方法(使用Randomize函数,通过SQL语句实现)
      对存储在数据库中的数据来说,随机数特性能给出上面的效果,但它们可能太慢了些。你不能要求ASP“找个随机数”然后打印出来。实际上常见的解决方案是建立如下所示的循环:
    Randomize 
    RNumber 
    = Int(Rnd*499+1 
     
    While Not objRec.EOF 
    If objRec("ID") = RNumber THEN 
    ... 这里是执行脚本 ... 
    end if 
    objRec.MoveNext 
    Wend
       这很容易理解。首先,你取出1到500范围之内的一个随机数(假设500就是数据库内记录的总数)。然后,你遍历每一记录来测试ID 的值、检查其是否 匹配RNumber。满足条件的话就执行由THEN 关键字开始的那一块代码。假如你的RNumber 等于495,那么要循环一遍数据库花的时间可就长 了。虽然500这个数字看起来大了些,但相比更为稳固的企业解决方案这还是个小型数据库了,后者通常在一个数据库内就包含了成千上万条记录。这时候不就死 定了?
      采用SQL,你就可以很快地找出准确的记录并且打开一个只包含该记录的recordset,如下所示:
    Randomize 
    RNumber 
    = Int(Rnd*499+ 1 
     
    SQL 
    = "SELECT * FROM Customers WHERE ID = " & RNumber 
     
    set objRec = ObjConn.Execute(SQL) 
    Response.WriteRNumber 
    & " = " & objRec("ID") & " " & objRec("c_email")
      不必写出RNumber 和ID,你只需要检查匹配情况即可。只要你对以上代码的工作满意,你自可按需操作“随机”记录。Recordset没有包含其他内容,因此你很快就能找到你需要的记录这样就大大降低了处理时间。
    再谈随机数
      现在你下定决心要榨干Random 函数的最后一滴油,那么你可能会一次取出多条随机记录或者想采用一定随机范围内的记录。把上面的标准Random 示例扩展一下就可以用SQL应对上面两种情况了。
      为了取出几条随机选择的记录并存放在同一recordset内,你可以存储三个随机数,然后查询数据库获得匹配这些数字的记录:
      SQL 
    = "SELECT * FROM Customers WHERE ID = " & RNumber & " OR ID = " & RNumber2 & " OR ID = " & RNumber3
      假如你想选出10条记录(也许是每次页面装载时的10条链接的列表),你可以用BETWEEN 或者数学等式选出第一条记录和适当数量的递增记录。这一操作可以通过好几种方式来完成,但是 
    SELECT 语句只显示一种可能(这里的ID 是自动生成的号码): 
    SQL 
    = "SELECT * FROM Customers WHERE ID BETWEEN " & RNumber & " AND " & RNumber & "+ 9"
      注意:以上代码的执行目的不是检查数据库内是否有9条并发记录。
      随机读取若干条记录,测试过
    Access语法:
    SELECT top 10 * From 表名 ORDER BY Rnd(id)
    Sql server:
    select top n * from 表名 order by newid()
    mysql 
    select * From 表名 Order By rand() Limit n
      Access左连接语法(最近开发要用左连接,Access帮助什么都没有,网上没有Access的SQL说明,只有自己测试, 现在记下以备后查)
      语法 
    select table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where ...
      使用SQL语句 用...代替过长的字符串显示
      语法:
      SQL数据库:
    select case when len(field)>10 then left(field,10)+'...' else field end as news_name,news_id from tablename
      Access数据库:
    SELECT iif(len(field)>2,left(field,2)+'...',field) FROM tablename;
      Conn.Execute说明
      Execute方法
      该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集,该方法的使用格式分为以下两种:
      
    1.执行SQL查询语句时,将返回查询得到的记录集。用法为:
      
    Set 对象变量名=连接对象.Execute("SQL 查询语言")
      Execute方法调用后,会自动创建记录集对象,并将查询结果存储在该记录对象中,通过Set方法,将记录集赋给指定的对象保存,以后对象变量就代表了该记录集对象。
      
    2.执行SQL的操作性语言时,没有记录集的返回。此时用法为:
      连接对象.
    Execute "SQL 操作性语句" [, RecordAffected][, Option]
      ·RecordAffected 为可选项,此出可放置一个变量,SQL语句执行后,所生效的记录数会自动保存到该变量中。通过访问该变量,就可知道SQL语句队多少条记录进行了操作。
      ·
    Option 可选项,该参数的取值通常为adCMDText,它用于告诉ADO,应该将Execute方法之后的第一个字符解释为命令文本。通过指定该参数,可使执行更高效。
      ·BeginTrans、RollbackTrans、CommitTrans方法
      这三个方法是连接对象提供的用于事务处理的方法。BeginTrans用于开始一个事物;RollbackTrans用于回滚事务;CommitTrans用于提交所有的事务处理结果,即确认事务的处理。
      事务处理可以将一组操作视为一个整体,只有全部语句都成功执行后,事务处理才算成功;若其中有一个语句执行失败,则整个处理就算失败,并恢复到处里前的状态。
       BeginTrans和CommitTra

数据统计

  • 访问量: 3804
  • 日志数: 6
  • 图片数: 2
  • 建立时间: 2009-01-29
  • 更新时间: 2009-05-21

RSS订阅

Open Toolbar