发布新日志

  • 学习让测试更精彩,测试让生命更精彩

    bob123654 发布于 2012-08-14 09:22:58

      其实,这篇文章的名字我想了很久,最终定了这样一个标题。很多人会觉得太大了吧,学习测试有关系,测试和生命的关联貌似没有那么大吧。其实不然,这篇文章提到的一种态度,是一种思想,是一种精神。我认为是测试同仁们互相宣传的一种精神。

      为什么我想写这样一篇文章呢。

      原因一:IT行业发展历史就不久,测试这个行业的历史就更加不用去说了。在国内最近慢慢引进Scrum和ET的现在,不得不说对于Tester的要求越来越高,不过就如我和微软的Bill所交流的,并不是对于Tester的要求越来越高,而是国内的大多数的Tester没有达到一个应该的水平,所以当一种新的模型新的方式出现的时候就觉得力不从心。

      原因二:测试行业正在飞速发展中,越来越多的人投入到了测试行业中。但是大部分对于测试的理解有偏差。

      原因三:同样的,由于移动互联网的崛起,目前相关的企业越来越多。职位需求量也会相对应的增加,由于对于每个产品release的质量要求并非非常强,导致很多测试不“敏捷”也得“敏捷”,从而迷失方向。

      我来说另外一个现象吧,现象是什么呢?

      面试官A问“你以前仅仅是做手动测试的么?”面试者大多心理会有波动,觉得瞬间低人三等。

      面试官B问“你也做了3年测试了,你接下来打算做什么呢?”“我觉得我也做了蛮长时间了,接下来就转管理吧”

      面试官C问“你为什么选择做测试呢?” “我觉得做测试轻松”“我原本想做开发的,但是落榜了,所以想...”

      那么我想来谈谈我对于做一个测试的看法,学习什么能够让测试更加精彩呢?

      一、知己识人

       所谓知己就是清楚的认识自己,什么才是对自己最重要的。就测试这个职业来讲,我认为自己得到什么,学到什么才是最重要的。很多人看到这里可能觉得是正 确,这种大道理谁都知道。但是平时呢大部分往往,嗯,保证产品质量,保证公司企业的质量。但是有多少测试做的事情是真正自己想做的,又有多少做的事情是对 自己有意义的。可能工作本身带来不了很多的学习点或者兴趣点,但是我们不能被忙碌的工作,频繁的项目,坑爹的老板所迷惑,因为我们是测试,我们是一个需要提升自我修养,提升自我知识面才能够更上一层境界的职业。所以笔者自己是时不时的会问自己到底学到了什么,自己需要的是什么。

       所谓识人,这里所说的识人不是说怎么识别好人坏人,而是如何去面试一个测试,如何给一个测试去定一个要求。为什么笔者会提到这点,就如上面所说的,现在 很多人进入了测试的圈子。笔者自身是一个做移动互联网的测试,同样也经历过了上海,北京,杭州等地在各个不同阶段的面试。感觉到了不仅仅应聘测试的IT们 迷茫,企业本身对于测试的定位也很迷茫。面试就是第一个能够看出来的地方。个人觉得测试这个职业很奇特,因为除了学历,技术还和这个人的各个方面素质有着 紧要的关系。当然这里我不想多的举例子,我只想给各个面试官以及企业一点建议,筛选海量的简历的确可以靠曾经的工作经验,可以靠学历。但是希望在面试过程 中能够从“态度”“开拓性思维”“为什么要做测试”三方面去做检查,如果发现有欠缺能够在入职之后进行相应的培训补足,这样的话,我相信对于广大测试人和 企业来讲都是会看到好处。同样的会加速推动测试行业的发展。

      二、找到测试的意义

       这里其实就和知己很像,我相信这次chinatest的讲师也好,我碰见的各位同仁也好,每个人在企业中都分别扮演着自己的角色。我相信我们大家的角色绝 对不会只是定位在找bug。但是我也同样的看到很多测试人没有找到测试的意义,很多上层或者老板觉得测试就是为了保证质量,呸!他们只会觉得测试是为了找 到bug的,无论嘴上说的多好听,很多人最后还是会用数据来定你的KPI。但是,我们不能因为如此迷茫了自己,迷失了做测试的意义,不能最终 为了测试而去测试。测试的意义在于从各个角度,各个维度去保证产品的质量。这句话是废话,也是空话。但是为什么我想这里提醒大家找到测试的意义呢,是因为 只有测试人找到了测试的意义(可能是提升自己的管理 能力,提升自身的技术能力,分析能力等),那么才不会在各种困难,各种挫折面前迷失了自己,才不会为了测试而测试,最终得不偿失。

      当你在执行测试用例的时候,意义在学习别人写用例的思路,学习设计方法,不在重复劳动上面。

      当你在编写测试用例的时候,意义在于怎么能够更好的分析需求,分析需求,写出有意义的有限的用例,不在为了完成任务,写上成千上万条用例。

      当你面对找缺陷这个常见的任务的时候,意义在于学习研究各种方法,各种技术找到质量高的缺陷,分析总结,不在为了去完成缺陷数量而去找。

      当你作为一个测试管理者的时候,意义在于你要学习管理,你要引导测试人,你要体谅沟通。不在写好用例之后简单的让他们去执行。

      当你面对一个周期很短,测试又很少的项目的时候,意义在于你要学会评估风险,合理使用好各种方法应对,从而积累,不在用自己的生命换取产品所谓的质量

      当你觉得做测试没有意义的时候,意义在测试为你带来了什么,测试让你学到了什么,不在你是不是想跳槽或者转行。

      三、心理素质

      笔者为什么将这条放在那么前面呢,这里不得不提到,笔者在仅仅只有两年工作测试经验的时候就已经亲身经历过了身边的测试由于心理问题而最终选择 绝路的事情。能从心理上真正了解测试的只有测试,这点我深信不疑。任何一个测试最先面对的心理压力就是重复性的劳动。测试人是愿意去做?是否愿意去寻求这 重复劳动中的真谛?这其实是任何一个测试都应该迈过的一个坎儿。而在之后的测试生涯中,依然会碰见很多心理的考验,自己对于质量心里没有底、或者由于产品 发布问题遭到了老板的职责、或者和开发以及其他人闹不开心、或者找不到缺陷时期的郁闷、达到了测试瓶颈时候的困惑等。测试也是人,每个人都有自己的背景以 及性格,这些时间一长,往往对于测试来讲,就是考验心理素质的时候,你是否还看得清自己的路,是否还知道自己做测试的初衷,会不会对于自己做测试去质疑等 等。测试这个职业无非是心理活动波动最大的,心理上的暗示和缓解对于测试是最大的一个帮助。笔者第一本读的有关心理学的书籍是《梦的解析》,之后陆续看了 佛洛依德的若干部著作。对于心理学上很有兴趣,强烈推荐各位测试同仁有空读一两本心理学有关的书籍,相信你得到的帮助绝对不只是心理上的。

      四、主观能动

      很多人说测试行业中很多都是性格内向的人,很多需要细心的女性。这点我不否认,但是只是和测试本身没有非常直接的关系。但是无论男女,无论性 格,作为测试必须要学会的是主观能动。笔者在本文一开始就提到测试行业原本历史就短,并且国内外的文化,技术差距很大。我自己是一个做手机移动端的测试 (如果有人要交流相关技术,我很乐意一起讨论),在移动互联网的测试国内的积累更加的少。我举个实际的例子,在安卓的自动化测试框架中有一个框架叫做 robotium,我无意识中的加了国内很多讨论群,同时也订阅了robotium gmail的一个讨论组。一个月过去了,国内的群很多都沉默,但是那个gamil的组却已经有了七百多封的讨论邮件。这里其实总结来讲,国内外的教育,文 化从我们小时候开始与国外就是不同的一个理念,造成了国内很多人的主观能动性相对来讲比较差。但如果你选择了测试,那么必须大大提升你的主观能动性。如果 你想做好测试,得到更多的信息,得到更多的技术,那么你必须主动去网上查找资料,主动的找人进行沟通,主动的进行实践,那么一切才会有改变。否则我相信做 不了多久就会唉声载道。

      同时,这里的主动不单单是单方面的吸收,还有主动进行分享。每个人都是普通人,没有一场战斗,革命是靠一个获胜的。一个人的能力有限,当大家把自己所知的东西都主动分享出来,那么才能够产生更大的财富 。一切才能够进步。

      五、乐观精神(阿Q精神)

      首先澄清一点,笔者在除了测试以外的方面并非一个乐观的人,所以还修炼不到火候。乐观对于测试绝对不可少。你往往面临着一个复杂的功能性产品, 往往会被误解,往往会被很多人在心里看不起、会因为找不到缺陷而心情不好等等,等等。乐观会让你精神拥有强壮的体魄和内心,否则你会无法继续在这条道路上 走下去。可能最后打败你的是你自己,说服你的是你自己。这份精神难能可贵,当你面对各种各样的突发事件,面对各种困难 的时候,不妨乐观一下,调整好心态去在能力范围内做好,会有意想不到的收获。

      六、沟通能力

      说到这里,如果你已经具备了测试的最基本的素质的时候,那么你绝对,绝对会觉得测试绝对不是测试唯一的工作,在一个公司,项目中测试不是你一个 人的战斗。最先的一点,避无可避,也是历史上战斗最悠久的一个对手:开发。可能再好的朋友也会和你争论的面红耳赤。当你要确认缺陷的时候,你可能会遭到各 方面的质疑;当你明确需求的时候,你可能需要和你的项目产品经理甚至客户进行沟通;当你要管理团队或改进测试流程的时候,那么你可能需要和相关的所有人进 行沟通协调。沟通是一门技术,这句话放在测试身上再好不过了。我们往往扮演着各种各样的角色,曾经有人甚至告诉我,我除了做测试,还做全职的售前售后。很 多测试在为提升效率而烦恼,当你解决了沟通问题的时候,那么效率上升的比例可能是几何倍数增长的。同时,你的人际关系也会越来越好,这样会让你做管理,做 协调,甚至做结构上的改变变得那么轻而易举。

      沟通能力其中比较重要的就是描述,当一个测试人员描述一个事情都描述不清楚的时候,绝对不是一个好的测试人员。测试人天生需要汇报提交缺陷,而 清楚的描述这些缺陷如何发现,现象怎么样是一项基础技能。描述问题另外一面就是倾听问题。用怎么样的心态描述问题,又用怎么样的态度去倾听别人所说的。决 定了沟通最后的效果。

      七、分析能力

      我们慢慢的从一些软性条件上说到了硬性的条件上了。好的分析能力带给测试的会是另外一片天地。分析能力其中包括了:如何去发现问题,如何去分析 问题,如何去解决问题,如何去总结问题。这里的问题不是指测试中的缺陷。可能是一种模型的运用,可能是一种测试技术,也可能是一种人际关系等等。曾经在 google全球code jam竞赛中获取第一的中国选手告知我“万事不懂问google”,同样的我相信,很多人会觉得为什么有的问题我就查不到,别人就查得到。如何灵活运用搜 索引擎真的是一门学问。好的分析能够让你找到问题出在什么地方,然后找到切入点进行相对应的改进以及修改。面对产品,能知道风险最多的地方在哪里;面对技 术,能够搜寻出最终的可行性方案;面对团队,能够对症下药,而不会无从下手。分析来说,实在有太多地方可以说,我这里就不一一说明了。

      八、条理性

      任何事情都有轻重缓急,在《高效人士7个习惯》以及ChinaTest中柴阿峰提到的基于风险的测试中都提到了这点。作为测试,很可能你会有很 多事情排着队。可能是烦人的客户,可能是不停在变得需求,可能是新测试技术的探索,可能是自己私人的事情等等。当项目时间,测试人员数量,产品风险,个人 私事这样几个维度一起向你攻击的时候,那么你只有通过分析,然后有条理的归类到7个习惯中提到的四象限中。对于测试,缺陷有优先级,工作有优先级,杂事有 优先级,什么都要有优先级。包括朱少民老师提到的传统脚本测试和目前正热的探索性,敏捷测试的和谐并存。这也是需要有条理性的针对公司,项目的情况具体安 排,并非传统不好,并非敏捷探索就一定好。不管黑猫白猫,抓到老鼠的就是好猫,不是吗?

      九、责任

      这点毋庸置疑。测试必须要有责任感。当然不是说让测试承担一切的责任。而是对于自己所做的一切进行负责,对自己负责。测试是一个企业把关的角 色。可能对于一些人来讲只是一份工作,但是就企业来讲,无论他们怎么看待测试,他们依然将产品的质量的好坏直接挂钩到了测试身上。测试行业遍布各个行业, 如果你只是在做移动互联网内的一个交互娱乐应用的话,可能责任还没有体现出来。但是还有很大一部分的人一直工作在银行、铁路、航空、医疗等领域,这些测试 必须负责,他们关系到老百姓的生命安全。就如同《测试之美》中曾经提到,作者在几年前做的是医疗行业的测试,几年后自己母亲生病,维持着母亲生命的正是自 己曾经测试过的医疗器械。只有当这个时候,自己的安心来自于自己的负责。所以我希望各个行业的测试们负起一份责任

      十、勇敢

      正因为测试行业需要发展,测试技术需要进步,所以更加需要测试人去勇敢的钻研,尝试,实践、创新。很多测试人碍于自己只是一个打工的人,而不敢 站在更高的角度看待问题;碍于自己内心的恐惧,而看不起自己,觉得自己不是做技术,或者不是能够解决眼前问题的人、又或者碍于自己性格内向,而从而停止了 沟通前进的步伐。我曾经一直这样和我的员工说”很多事情你不敢去做,很多事情你不知道怎么去做,但是不要忘记,你不做总有人会去做。他们做了所以他们变得 有名有财富有知识。而你,还是你“。就比如笔者,这次勇敢的做了决定去参加了ChinaTest。为什么说勇敢呢,因为笔者也仅仅工作两年,最终成为了 ChinaTest第一个 报名参加的人,也是第一个自费参加大会的人。我相信这也是一份测试应该有的勇气。

      好了,时间也不早了,可能为了凑数,我也就正好写十点了。可能能够让测试精彩的远远不止这些。我希望能够看完并且学习的人不仅仅是那些初入测试 的人,更是那些有经验的测试盒管理层的人们。希望大家能够将这种精神传递下去,这样测试行业才会进步,才能有更多的人进来一起努力。

      整篇文章都只是在说如何让测试更加精彩,那么测试怎么让生命精彩呢?段念段老师曾经在最后闪电演讲的时候说过,做测试的人,测试所带来的思想会 慢慢的无意识的改变着自己的生活。很多的能力以及知识,态度都会在自己生活中起到很大的作用。其实就是这样的意思,我们作为一个人到世界上活上一回,既然 只有一回,那么我们一定要活的够精彩,否则不就是太不值得了。而读者们往回看,这十点如果同样能够在你的生命中学到,深入,那么我相信你的生活,生命绝对 会变得更精彩,更有意义。

  • web性能测试基本性能指标

    chj_0205 发布于 2011-08-14 12:51:23

    Web性能测试的部分概况一般来说,一个Web请求的处理包括以下步骤:

    (1)客户发送请求

    (2)web server 接受到请求,进行处理;

    (3)web server 向DB获取数据;

    (4)web server生成用户的object(页面),返回给用户。给客户发送请求开始到最后一个字节的时间称为响应时间(第三步不包括在每次请求处理中)。

    1.事务(Transaction

    web性能测试中,一个事务表示一个从用户发送请求->web server接受到请求,进行处理-> web server DB获取数据->生成用户的object(页面),返回给用户的过程,一般的响应时间都是针对事务而言的。

    2.请求响应时间

    请求响应时间指的是从客户端发起的一个请求开始,到客户端接收到从服务器端返回的响应结束,这个过程所耗费的时间,在某些工具中,响应通常会称为“TTLB”,即"time to last byte",意思是从发起一个请求开始,到客户端接收到最后一个字节的响应所耗费的时间,响应时间的单位一般为或者毫秒。一个公式可以表示:响应时间=网络响应时间+应用程序响应时间。标准可参考国外的3/5/10原则:

    1)在3秒钟之内,页面给予用户响应并有所显示,可认为是“很不错的”;

    2)在3~5秒钟内,页面给予用户响应并有所显示,可认为是“好的”;

    3)在5~10秒钟内,页面给予用户响应并有所显示,可认为是“勉强接受的”;

    4)超过10秒就让人有点不耐烦了,用户很可能不会继续等待下去;

    3、事务响应时间

       事务可能由一系列请求组成,事务的响应时间主要是针对用户而言,属于宏观上的概念,是为了向用户说明业务响应时间而提出的.例如:跨行取款事务的响应时间就是由一系列的请求组成的.事务响应时间是直接衡量系统性能的参数.

    4.并发用户数

    并发一般分为2种情况。一种是严格意义上的并发,即所有的用户在同一时刻做同一件事情或者操作,这种操作一般指做同一类型的业务。比如在信用卡审批业务中,一定数目的拥护在同一时刻对已经完成的审批业务进行提交;还有一种特例,即所有用户进行完全一样的 操作,例如在信用卡审批业务中,所有的用户可以一起申请业务,或者修改同一条记录。

      另外一种并发是广义范围的并发。这种并发与前一种并发的区别是,尽管多个用户对系统发出了请求或者进行了操作,但是这些请求或者操作可以是相同的,也可以是不同的。对整个系统而言,仍然是有很多用户同时对系统进行操作,因此也属于并发的范畴。

      可以看出,后一种并发是包含前一种并发的。而且后一种并发更接近用户的实际使用情况,因此对于大多数的系统,只有数量很少的用户进行严格意义上的并发。对于WEB性能测试而言,这2种并发情况一般都需要进行测试,通常做法是先进行严格意义上的并发测试。严格意义上的用户并发一般发生在使用比较频繁的模块中,尽管发生的概率不是很大,但是一旦发生性能问题,后果很可能是致命的。严格意义上的并发测试往往和功能测试关联起来,因为并发功能遇到异常通常都是程序问题,这种测试也是健壮性和稳定性测试的一部分。

    用户并发数量:关于用户并发的数量,有2种常见的错误观点。 一种错误观点是把并发用户数量理解为使用系统的全部用户的数量,理由是这些用户可能同时使用系统;还有一种比较接近正确的观点是把在线用户数量理解为并发用户数量。实际上在线用户也不一定会和其他用户发生并发,例如正在浏览网页的用户,对服务器没有任何影响,但是,在线用户数量是计算并发用户数量的主要依据之一。

    5.吞吐量

    指的是在一次性能测试过程中网络上传输的数据量的总和.吞吐量/传输时间,就是吞吐率.

    6、 TPStransaction per second

    每秒钟系统能够处理的交易或者事务的数量.它是衡量系统处理能力的重要指标.

    7、点击率

    每秒钟用户向WEB服务器提 交的HTTP请求数.这个指标是WEB应用特有的一个指标:WEB应用是"请求-响应"模式,用户发出一次申请,服务器就要处理一次,所以点击是WEB应用能够处理的交易的最小单位.如果把每次点击定义为一个交易,点击率和TPS就是一个概念.容易看出,点击率越大,对服务器的压力越大.点击率只是一个性能参考指标,重要的是分析点击时产生的影响。需要注意的是,这里的点击并非指鼠标的一次单击操作,因为在一次单击操作中,客户端可能向服务器发出多个 HTTP请求.

    8.资源利用率

    指的是对不同的系统资源的使用程度,例如服务器的CPU利用率,磁盘利用率等.资源利用率是分析系统性能指标进而改善性能的主要依据,因此是WEB性能测试工作的重点.

    资源利用率主要针对WEB服务器,操作系统,数据库服务器,网络等,是测试和分析瓶颈的主要参考.WEB性能测试中,更根据需要采集相应的参数进行分析。

    通用指标(指Web应用服务器、数据库服务器必需测试项)

    ?-g4piw*BF&@T128935

    指标51Testing软件测试网r!HA0HL|

    说明51Testing软件测试网H}1iT:j4P T

    ProcessorTime服务器CPU占用率,一般平均达到70%时,服务就接近饱和
    Memory Available Mbyte可用内存数,如果测试时发现内存有变化情况也要注意,如果是内存泄露则比较严重
    Physicsdisk Time物理磁盘读写时间情况

    lr@!GWAz|128935Web服务器指标51Testing软件测试网BHQBB'Q Sn

    指标

    'F-mOY1^128935

    说明

    +vH/Oa,_aByCW }128935
    Requests Per Second(Avg Rps)平均每秒钟响应次数=总请求时间 / 秒数
    Avg time to last byte per terstion (mstes)平均每秒业务脚本的迭代次数 ,有人会把上面那个混淆
    Successful Rounds成功的请求
    Failed Requests失败的请求
    Successful Hits成功的点击次数
    Failed Hits失败的点击次数
    Hits Per Second每秒点击次数
    Successful Hits Per Second每秒成功的点击次数
    Failed Hits Per Second每秒失败的点击次数
    Attempted Connections尝试链接数

    a0C9rn1X)Q128935数据库服务器性能指标

    RSPu9Z(O_(rn9|!w128935

    指标51Testing软件测试网K8],Ng.|9KmI

    说明51Testing软件测试网%S.?rR"^.j-R.a\

    User 0 Connections用户连接数,也就是数据库的连接数量
    Number of deadlocks数据库死锁
    Butter Cache hit数据库Cache的命中情况

    ^$]j(`6T Ro128935系统的瓶颈定义

    hf#k$t'g128935

    性能项

    m*pU5\M'c;S;|5[128935

    命令51Testing软件测试网$](jc{,\@ {|

    指标51Testing软件测试网 ^No5v4^v%@:D`

    CPU限制vmstat当%user+%sys超过80%时
    磁盘I/O限制Vmstat当%iowait超过40%(AIX4.3.3或更高版本)时
    应用磁盘限制Iostat当%tm_act超过70%时
    虚存空间少Lsps,-a当分页空间的活动率超过70%时
    换页限制Iostat, stat虚存逻辑卷%tm_act超过I/O(iostat)的30%,激活的虚存率超过CPU数量(vmstat)的10倍时
    系统失效Vmstat, sar页交换增大、CPU等待并运行队列
    51Testing软件测试网.k,g,_eo0wP

      稳定系统的资源状态51Testing软件测试网L(dGx;rQ\(B%S{ ji

    51Testing软件测试网X$Ya1Pa a+n w@f#p

    性能项51Testing软件测试网 ^ R zH0hS[O|.h

    资源51Testing软件测试网@vcLW| Yi

    评价51Testing软件测试网i5G U+t#L%g

    CPU占用率70%
    85%
    90%+很差
    磁盘I/0<30%
    <40%
    <50%+很差
    网络<30%带宽
    运行队列<2*CPU数量
    内存没有页交换
    每个CPU每秒10个页交换
    更多的页交换很差
    Y$~&pu?(z3vC128935

    /U1p+Q;w#Y2YyN(wa,\128935  通俗理解:

    3F*g{4n3KC128935

    4Y(Q}}5]U x+{ g128935  日访问量51Testing软件测试网@1\5z#`h*J.{,T1p

    51Testing软件测试网8HFx"l!fn5n1zL@+`A

      常用页面最大并发数51Testing软件测试网5^V4{M%[{

    51Testing软件测试网 l e YF?} BrvO

      同时在线人数51Testing软件测试网[4U3FoaU7P f#h!B

    51Testing软件测试网{j1AZb

      访问相应时间

    0]8vXc|K12893551Testing软件测试网8}V;L1b5Kl

      案例:51Testing软件测试网2sG+y*~yTe

    51Testing软件测试网-c7ua$bl,Ch

      最近公司一个项目,是个门户网站,需要做性能测试,根据项目特点定出了主要测试项和测试方案:

    K] X.g6S4~12893551Testing软件测试网V9?"i.s,Wv

      一种是测试几个常用页面能接受的最大并发数(用户名参数化,设置集合点策略)

    G;E3v E S12893551Testing软件测试网#Q,G X$Vj,n)F

      一种是测试服务器长时间压力下,用户能否正常操作(用户名参数化,迭代运行脚本)

    *t]nf a'e/e12893551Testing软件测试网%j ~ s+@1iN

       一种则需要测试服务器能否接受10万用户同时在线操作,如果是用IIS做应用服务器的话,单台可承受的最大并发数不可能达到10万级,那就必须要使用集 群,通过多台机器做负载均衡来实现;如果是用websphere之类的应用服务器的话,单台可承受的最大并发数可以达到10万级,但为性能考虑还是必须要 使用集群,通过多台机器做负载均衡来实现;通常有1个简单的计算方式,1个连接产生1个session,每个session在服务器上有个内存空间大小的 设置,在NT上是3M,那么10万并发就需要300G内存,当然实际使用中考虑其他程序也占用内存,所以准备的内存数量要求比这个还要多一些。还有10万个用户同时在线,跟10万个并发数是完全不同的2个概念。这个楼上已经说了。但如何做这个转换将10万个同时在线用户转换成多少个并发数呢?这就必须要有大量的历史日志信息来支撑了。系统日志需要有同时在线用户数量的日志信息,还需要有用户操作次数的日志信息,这2个数据的比例就是你同时在线用户转换到并发数的比例。另外根据经验统计,对于1个JAVA开发的WEB系 统(别的我没统计过,给不出数据),一般1台双CPU、2G内存的服务器上可支持的最大并发数不超过500个(这个状态下大部分操作都是超时报错而且服务 器很容易宕机,其实没什么实际意义),可正常使用(单步非大数据量操作等待时间不超过20秒)的最大并发数不超过300个。假设你的10万同时在线用户转 换的并发数是9000个,那么你最少需要这样的机器18台,建议不少于30台。当然,你要是买个大型服务器,里面装有200个CPU、256G的内存,千 兆光纤带宽,就算是10万个并发用户,那速度,也绝对是嗖嗖的。51Testing软件测试网DN To!Axc

    51Testing软件测试网;w kx\-IBr

      另外暴寒1下,光设置全部进入运行状态就需要接近6个小时。具体的可以拿1个系统来压一下看看,可能会出现以下情况:

    Y(mD Aj9v_12893551Testing软件测试网*{9A/f&vl{D

      1、服务器宕机;51Testing软件测试网'M J$~*P7hHK

    51Testing软件测试网kcZ6^Gqm

      2、客户端宕机;

    2Z%L,{SpZ@j128935

    Q|&Q~:H(S? zB5]128935  3、从某个时间开始服务器拒绝请求,客户端上显示的全是错误;

    aqcsn:d$]u'o128935

    1b&t+Nh e}!Q5Lp128935  4、勉强测试完成,但网络堵塞或测试结果显示时间非常长。假设客户端和服务器之间百兆带宽,百兆/10000=10K,那每个用户只能得到10K,这个速度接近1个64K的MODEM上网的速度;另外以上分析全都没考虑系统的后台,比如数据库、中间件等。

    O?m~ B%{[128935

    b8c l }Q)y$bn128935  1、服务器方面:上面说的那样的PC SERVER需要50台;51Testing软件测试网#U*Xr3C(`

    ,Wg{f:p;Gp){.r/w!]128935  2、网络方面:按每个用户50K,那至少5根百兆带宽独享,估计仅仅网络延迟就大概是秒一级的;51Testing软件测试网c,L_X"Gy)mO

    a,a fl:eE K4C Q128935  3、如果有数据库,至少是ORACLE,最好是SYSBASE,SQLSERVER是肯定顶不住的。数据库服务器至少需要10台4CPU、16G内存的机器;

    aBz3PA4FR7xX B128935

    U~C2C4m128935  4、如果有CORBA,那至少再准备10台4CPU、16G内存的机器;再加上负载均衡、防火墙、路由器和各种软件等,总之没个1000万的资金投入,肯定搞不定。51Testing软件测试网B"wN#?c

    -cC1qqy$[128935   这样的门户系统,由于有用户权限,所以并不象jackie所说大多是静态页面。但只要是多服务器的集群,那么我们就可以通过1台机器的测试结果来计算多 台机器集群后的负载能力的,最多额外考虑一下负载均衡和路由上的压力,比如带宽、速度、延迟等。但如果都是在1台机器上变化,那我们只能做一些指标上的计 算,可以从这些指标上简单判断一下是否不可行,比如10万并发用户却只有1根百兆带宽,那我们可以计算出每个用户只有1K带宽,这显然是不可行的。但实际 的结果还是需要测试了才知道,毕竟系统压力和用户数量不是线性变化的。

    0f5O-v!M X rr12893551Testing软件测试网j)t:eT!{D#c3X q

       这一类系统的普遍的成熟的使用,以及很多软件在方案设计后就能够大致估算出系统的性能特点,都导致了系统在软件性能方面调优的比例并不大(当然不完全排 除后期针对某些代码和配置进行优化后性能的进一步提高),更多的都是从硬件方面来考虑,比如增加内存、硬盘做RAID、增加带宽、甚至增加机器等。

    1d"e^V$]!b Je U/D12893551Testing软件测试网]I4IRYzy/[/Z

      网络技术中的10M 带宽指的是以位计算, 就是 10M bit /秒 ,而下载时的速度看到的是以字节(Byte)计算的,所以10M带宽换算成字节理论上最快下载速度为: 1.25 M Byte/秒!

  • SQL查询经典例题

    yanghuimin 发布于 2010-03-09 17:35:27

    通过以下习题的练习,我们能快速熟悉掌握sql语句查询的语法和要领,大家要用心领会其中的要领和步骤,要学会分析步骤。

    一、单表查询练习

    1、查询<学生信息表>,查询学生"张三"的全部基本信息

    Select *

    from A_studentinfo

    where sname='张三'

     

    2、查询<学生信息表>,查询学生"张三"李四的基本信息

    Select *

    from A_studentinfo

    where sname='张三'

    or sname='李四'

     

    3、查询<学生信息表>,查询姓""学生的基本信息

    Select *

    from A_studentinfo

    where sname like '%'

     

    4、查询<学生信息表>,查询姓名中含有""字的学生的基本信息

    Select *

    from A_studentinfo

    where sname like '%%'

     

    5、查询<学生信息表>,查询姓名长度为三个字,姓“李”,且最后一个字是“强”的全部学生信息。

    select *

    from A_studentinfo

    where sname like '_'

     

    6、查询<学生信息表>,查询姓""或者姓的学生的基本信息。

    Select *

    from A_studentinfo

    where sname like '%'

    or sname like '%'

     

    7、查询<学生信息表>,查询姓""并且"所属省份""北京"的学生信息

    Select *

    from A_studentinfo

    where sname like '%'

    and province='北京'

     

    8、查询<学生信息表>,查询"所属省份""北京"新疆山东或者"上海"的学生的信息

    Select *

    from A_studentinfo

    where province in ('北京','上海','新疆','山东')

     

    9、查询<学生信息表>,查询姓"",但是"所属省份"不是"北京"的学生信息

    Select *

    from A_studentinfo

    where sname like '%'

    and province !='北京'

     

    10、查询<学生信息表>,查询全部学生信息,并按照“性别”排序,性别相同的情况下按照“所属省份”排序,所属省份相同的情况下再按照“班级”排序

    select *

    from A_studentinfo

    order by sex,province,class

     

    11、查询<学生信息表>,查询现有学生都来自于哪些不同的省份

    select distinct province as 省份

    from A_studentinfo

     

    12、查询<学生选修信息表>,查询没有填写成绩的学生的学号、课程号和成绩

    Select *

    from A_studentcourse

    where score is null

     

    13、查询<学生选修信息表>,查询全部填写了成绩的学生的选修信息,并按照“成绩”从高到低进行排序

    Select *

    from A_studentcourse

    where score is not null

    order by score desc

      

    二、聚合函数练习

    1、统计<学生信息表>,统计共有多少个学生

    Select count (*) as 学生数量

    from A_studentinfo

     

    2、统计<学生信息表>,统计年龄大于20岁的学生有多少个

    Select count(*)  as 学生数量

    from A_studentinfo

    where (2008-yearofbirth)>20

     

    3、统计<学生信息表>,统计入学时间在1980年至1982年的学生人数

    select count(*) as 学生数量

    from A_studentinfo

    where enrollment between '1998-01-01' and '2003-12-30'

     

    对比以下查询方式,看看有何不同,为什么?

    select count(*) as 学生数量

    from A_studentinfo

    where enrollment between '1998' and '2003'

     

    4、统计<学生选修信息表>,统计学号为"S001"的学生的平均成绩

    Select  avg(score)  as 平均成绩

    from A_studentcourse

    where sno='S001'

     

    5、统计<学生选修信息表>,统计学号为"S001"的学生的总成绩

    select  sum(score)  as 总成绩

    from A_studentcourse

    where sno ='S001'

     

    6、统计<学生选修信息表>,查询课程号为”C001”的课程的最高成绩

    select max(score)  as 最高成绩

    from A_studentcourse

    where cno='C001'

     

    7、统计<学生信息表>,查询所有学生中的最大年龄是多少

    select  2008-min(yearofbirth) as 最大年龄

    from  A_studentinfo

     

     

    三、分组查询练习

    1、统计<学生选修信息表>,统计每个课程的选修人数

    select cno,count(*)  as 学生数量

    from A_studentcourse

    group by cno

     

     

    2、统计<学生选修信息表>,统计每个同学的总成绩

    select sno,sum(score) as 总成绩

    from A_studentcourse

    group by sno

     

     

    3、统计<学生信息表>,统计每个班级中每种性别的学生人数,并按照班级排序

    select class as 班级,sex as 性别, count(*) as 人数

    from A_studentinfo

    group by class,sex

    order by class

     

     

    4、统计<学生选修信息表>,统计每门课程的平均成绩,并按照成绩降序排序

    Select cno,avg(score) as 平均成绩

    from A_studentcourse

    group by cno

    order by avg(score) desc

     

     

    5、统计<学生选修信息表>,显示有两门以上课程不及格的学生的学号

    Select  sno as 不及格学生学号

    from A_studentcourse

    where score<60

    group by sno

    having count(*)>1

     

     

    6、统计<学生信息表>,统计每个班级中的最大年龄是多少

    select class as 班级, 2008-min(yearofbirth) as 最大年龄

    from A_studentinfo

    group by class

      

     

    四、嵌套查询练习

    1、用子查询实现,查询选修“高等数学”课的全部学生的总成绩

    select sum(score) as 高等数学总成绩

    from A_studentcourse

    where cno =

       (

         select cno

         from A_courseinfo

         where subject='高等数学'

       )

      

      

    2、用子查询实现,统计<学生选修信息表>,显示学号为"S001"的学生在其各科成绩中,最高分成绩所对应的课程号和成绩

    select score,cno

    from A_studentcourse

    where sno='S001'

    and score =

       (

        select max(score)

        from A_studentcourse

        where sno ='S001'

       )

    思考:如果该学号学生有两个课程分数都为最高的100分,查询会有什么结果

     

     

    3、用子查询实现,查询2班选修"数据库技术"课的所有学生的成绩之和

    select  sum(score) as 数据库技术总成绩

    from A_studentcourse

    where cno =

      (

        select cno

        from A_courseinfo

        where subject='数据库技术')

    and sno in

      (

        select sno

        from A_studentinfo

        where class='2'

      )

     

    4、用子查询实现,查询3"张三"同学的"测试管理"成绩

    select score

    from A_studentcourse

    where cno=

      (

        select cno

        from A_courseinfo

        where subject='测试管理'

      )

    and sno in

      (

        select sno

        from A_studentinfo

        where class='3'

        and sname='张三'

      )

      

      

    五、联接查询练习

    1、查询"张三"的各科考试成绩,要求显示姓名、课程号和成绩

    select sname as 姓名,cno as 课程号,score as 成绩

    from A_studentinfo,A_studentcourse

    where A_studentinfo.sno=A_studentcourse.sno

    and sname='张三'

     

     

    2、查询"张三"的各科考试成绩中,哪科没有记录考试成绩,要求显示姓名、课程号和成绩

    select sname as 姓名,cno as 课程号,score as 成绩

    from A_studentinfo,A_studentcourse

    where A_studentinfo.sno=A_studentcourse.sno

    and sname='张三'

    and score is null

     

     

    3、查询"张三"的各门课程成绩,要求显示姓名、课程名称和成绩

    select sname as 姓名,subject as 课程名称,score as 成绩

    from  A_studentinfo,A_courseinfo,A_studentcourse

    where A_studentcourse.sno=A_studentinfo.sno

    and   A_studentcourse.cno=A_courseinfo.cno

    and   A_studentinfo.sname='张三'

     

     

    4、查询3"张三""测试管理"成绩,要求显示姓名、成绩

    select sname as 姓名,score as 成绩

    from  A_studentcourse,A_courseinfo,A_studentinfo

    where A_studentcourse.cno=A_courseinfo.cno

    and   A_studentcourse.sno=A_studentinfo.sno

    and subject='测试管理'

    and class='3'

    and sname='张三'

     

     

    5、查询所有2000年以前入学的,各班男生的各科考试平均成绩

    select class as 班级,avg(score) as 男生平均成绩

    from  A_studentcourse,A_courseinfo,A_studentinfo

    where A_studentcourse.cno=A_courseinfo.cno

    and  

  • LINUX 面试题大全

    lengchun10 发布于 2010-03-15 11:08:57

    Linux面试题大全

    一.填空题:
    1. 在Linux系统中,以 文件 方式访问设备 。
    2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统。
    3. Linux文件系统中每个文件用 i节点 来标识。
    4. 全部磁盘块由四个部分组成,分别为引导块 、专用块 、 i节点表块 和数据存储块。
    5. 链接分为: 硬链接 和 符号链接 。
    6. 超级块包含了i节点表 和 空闲块表 等重要的文件系统信息。
    7. 某文件的权限为:drw-r--r--,用数值形式表示该权限,则该八进制数为: 644 ,该文件属性是 目录 。
    8. 前台起动的进程使用 Ctrl+c 终止。
    9. 静态路由设定后,若网络拓扑结构发生变化,需由系统管理员修改路由的设置。
    10. 网络管理的重要任务是: 控制 和 监控 。
    11. 安装Linux系统对硬盘分区时,必须有两种分区类型: 文件系统分区 和 交换分区 。
    13. 编写的Shell程序运行前必须赋予该脚本文件 执行 权限。
    14. 系统管理的任务之一是能够在 分布式 环境中实现对程序和数据的安全保护、备份、恢复和更新。
    15. 系统交换分区是作为系统 虚拟存储器 的一块区域。
    16. 内核分为 进程管理系统 、 内存管理系统 、 I/O管理系统 和文件管理系统 等四个子系统。
    17. 内核配置是系统管理员在改变系统配置 硬件 时要进行的重要操作。
    18. 在安装Linux系统中,使用netconfig程序对网络进行配置,该安装程序会一步步提示用户输入主机名、域名、域名服务器、IP地址、 网关地址 和 子网掩码 等必要信息。
    19. 唯一标识每一个用户的是用户 ID 和用户名。
    20 . RIP 协议是最为普遍的一种内部协议,一般称为动态路由选择协议。
    21. 在Linux系统中所有内容都被表示为文件,组织文件的各种方法称为 文件系统 。
    22. DHCP可以实现动态 IP 地址分配。
    23. 系统网络管理员的管理对象是服务器、 用户 和服务器的进程 以及系统的各种资源。
    24. 网络管理通常由监测、传输和管理三部分组成,其中管理部分是整个网络管理的中心。
    25. 当想删除本系统用不上的 设备驱动程序 时必须编译内核,当内核不支持系统上的 设备驱动程序 时,必须对内核 升级 。
    26 Ping命令可以测试网络中本机系统是否能到达 一台远程主机 ,所以常常用于测试网络的 连通性 。
    27. vi编辑器具有两种工作模式: 命令模式 和 输入模式 。
    28. 可以用ls –al命令来观察文件的权限,每个文件的权限都用10位表示,并分为四段,其中第一段占 1 位,表示 文件类型 ,第二段占3位,表示 文件所有者 对该文件的权限。
    29. 进程与程序的区别在于其动态性,动态的产生和终止,从产生到终止进程可以具有的基本状态为: 运行态 、 就绪态 和 等待态(阻塞态) 。
    30. DNS实际上是分布在internet上的主机信息的数据库,其作用是实现 IP地址和主机名 之间的转换。
    31. Apache是实现WWW服务器功能的应用程序,即通常所说的“浏览web服务器”,在服务器端 为用户提供浏览 web服务 的就是apache应用程序。
    32. 在Linux系统上做备份可以有两种类型:系统备份 和 用户备份 。其中前者是指对 操作系统 的备份,后者是指对 应用程序和用户文件的备份。
    33. CD-ROM标准的文件系统类型是 iso9660 。
    34. 当lilo.conf配置完毕后,使之生效,应运行的命令及参数是 lilo 。
    35. 在使用ls命令时,用八进制形式显示非打印字符应使用参数 -b 。
    36. Linux使用支持Windows 9.x/2000长文件名的文件系统的类型是 vfat 。
    37. 设定限制用户使用磁盘空间的命令是 quota 。
    38 在Linux系统中,用来存放系统所需要的配置文件和子目录的目录是 /etc 。
    39. 硬连接只能建立对 文件 链接。符号链接可以跨不同文件系统创建。
    40. 套接字文件的属性位是 s 。
    41. 结束后台进程的命令是 kill 。
    42. 进程的运行有两种方式,即 独立运行和使用父进程运行 。
    43. Links分为 硬链接和符号链接 。
    44. 在超级用户下显示Linux系统中正在运行的全部进程,应使用的命令及参数是 ps -aux 。
    45. 管道文件的属性位是 p 。
    46. 将前一个命令的标准输出作为后一个命令的标准输入,称之为 管道 。
    47. 为脚本程序指定执行权的命令及参数是 chmod a+x filename 。
    48. 进行远程登录的命令是 telnet 。
    49. 欲发送10个分组报文测试与主机abc.tuu.edu.cn的连通性,应使用的命令和参数是: ping abc.tuu.edu.cn –c 10 。
    50. DNS服务器的进程命名为named,当其启动时,自动装载 /etc目录下的 named.conf 文件中定义的DNS分区数据库文件。
    51. Apache服务器进程配置文件是 httpd.conf 。
    52.在 Linux系统中,压缩文件后生成后缀为.gz文件的命令是 gzip 。
    53. 在用vi编辑文件时,将文件内容存入test.txt文件中,应在命令模式下键入 :w test.txt 。
    54 可以在标准输出上显示整年日历的命令及参数是 cal -y 。
    55. 在shell编程时,使用方括号表示测试条件的规则是:方括号两边必须有 空格 。
    56. 检查已安装的文件系统/dev/had5是否正常,若检查有错,则自动修复,其命令及参数是 fsck –a /dev/had5 。
    57. 在Windows9.x环境下共享Unix/Linux中的用户目录的一个工具是 Samba服务器 。
    58. 系统管理员的职责是进行系统资源管理、系统性能管理、设备管理、安全管理和 系统性能监测 。
    59 在Linux系统中,测试DNS服务器是否能够正确解析域名的的客户端命令,使用命令 nslookup 。
    60. 在Linux系统下,第二个IDE通道的硬盘(从盘)被标识为 hdb 。
    61. 当系统管理员需升级内核版本和改变系统硬件配置时,应 重新编译内核 。
    62. 如果只是要修改系统的IP地址,应修改 /etc/rc.d/rc.inet1 配置文件。
    63. 当LAN内没有条件建立DNS服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配置 /etc/hosts 文件。
    64. 在vi编辑环境下,使用 Esc键 进行模式转换。
    65. Slackware Linux 9.0通常使用 ext3 文件系统,系统的全部磁盘块由 四 部分组成。
    66. 将/home/stud1/wang目录做归档压缩,压缩后生成wang.tar.gz文件,并将此文件保存到/home目录下,实现此任务的tar命令格式 tar zcvf /home/wang.tar.gz /home/stud1/wang 。
    67. 管道就是将前一个命令的 标准输出 作为后一个命令的 标准输入 。
    68. 在使用手工的方法配置网络时,可通过修改 /etc/HOSTNAME 文件来改变主机名,若要配置该计算机的域名解析客户端,需配置 /etc/resolv.conf 文件。
    69. 启动进程有手动启动和调度启动两种方法,其中调度启动常用的命令为 at 、 batch 和 crontab 。
    70. test.bns.com.cn的域名是 bns.com.cn ,如果要配置一域名服务器,应在 named.conf 文件中定义DNS数据库的工作目录。
    71. Sendmail邮件系统使用的两个主要协议是: SMTP 和 POP ,前者用来发送邮件,后者用来接收邮件。
    72. DHCP是动态主机配置协议的简称,其作用是:为网络中的主机分配IP地址 。
    73. 目前代理服务器使用的软件包有很多种,教材中使用的是 squid 。
    74. rm命令可删除文件或目录,其主要差别就是是否使用递归开关 -r或-R 。
    75. mv 命令可以移动文件和目录,还可以为文件和目录重新命名。
    76. 路由选择协议(RIP)的跳数表示到达目的地之前必须通过的 网关 数,RIP接受的最长距离是 15跳 。
    77. ping命令用于测试网络的连通性,ping命令通过 ICMP 协议来实现。
    78. nfs 协议用于实现Unix(/linux)主机之间的文件系统共享。
    79. 在Linux操作系统中,设备都是通过特殊的 文件 来访问。
    80. shell不仅是 用户命令的解释器 ,它同时也是一种功能强大的编程语言。 bash是Linux的缺省shell。
    81. 用 >;>; 符号将输出重定向内容附加在原文的后面。
    82. 增加一个用户的命令是:adduser 或useradd 。
    83 进行字符串查找,使用grep命令。
    84. 使用 * 每次匹配若干个字符。
    85. /sbin 目录用来存放系统管理员使用的管理程序。

    二.单项选择题:
    1. 下面的网络协议中,面向连接的的协议是: A 。
    A 传输控制协议 B 用户数据报协议 C 网际协议 D 网际控制报文协议
    2. 在/etc/fstab文件中指定的文件系统加载参数中, D 参数一般用于CD-ROM等移动设备。
    A defaults B sw C rw和ro D noauto
    3. Linux文件权限一共10位长度,分成四段,第三段表示的内容是 C 。
    A 文件类型 B 文件所有者的权限
    C 文件所有者所在组的权限 D 其他用户的权限
    4. 终止一个前台进程可能用到的命令和操作 B 。
    A kill B <CTRL>;+C C shut down D halt
    5.在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是 D 。
    A -m B -d C -f D -p
    6. 下面关于i节点描述错误的是 A 。
    A i节点和文件是一一对应的
    B i节点能描述文件占用的块数
    C i节点描述了文件大小和指向数据块的指针
    D 通过i节点实现文件的逻辑结构和物理结构的转换
    7. 一个文件名字为rr.Z,可以用来解压缩的命令是: D 。
    A tar B gzip C compress D uncompress
    8. 具有很多C语言的功能,又称过滤器的是 C 。
    A csh
    B tcsh
    C awk
    D sed
    9. 一台主机要实现通过局域网与另一个局域网通信,需要做的工作是 C 。
    A 配置域名服务器
    B 定义一条本机指向所在网络的路由
    C 定义一条本机指向所在网络网关的路由
    D 定义一条本机指向目标网络网关的路由
    10. 建立动态路由需要用到的文件有 D 。
    A /etc/hosts B /etc/HOSTNAME C /etc/resolv.conf D /etc/gateways
    11. 局域网的网络地址192.168.1.0/24,局域网络连接其它网络的网关地址是192.168.1.1。主机192.168.1.20访问172.16.1.0/24网络时,其路由设置正确的是 B 。
    A route add –net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1
    B route add –net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.255 metric 1
    C route add –net 172.16.1.0 gw 172.16.1.1 netmask 255.255.255.0 metric 1
    D route add default 192.168.1.0 netmask 172.168.1.1 metric 1
    12. 下列提法中,不属于ifconfig命令作用范围的是 D 。
    A 配置本地回环地址 B 配置网卡的IP地址
    C 激活网络适配器 D 加载网卡到内核中
    13. 下列关于链接描述,错误的是 B 。
    A 硬链接就是让链接文件的i节点号指向被链接文件的i节点
    B 硬链接和符号连接都是产生一个新的i节点
    C 链接分为硬链接和符号链接 D 硬连接不能链接目录文件
    14. 在局域网络内的某台主机用ping命令测试网络连接时发现网络内部的主机都可以连同,而不能与公网连通,问题可能是 C。
    A 主机IP设置有误
    B 没有设置连接局域网的网关
    C 局域网的网关或主机的网关设置有误
    D 局域网DNS服务器设置有误
    15. 下列文件中,包含了主机名到IP地址的映射关系的文件是: B 。
    A /etc/HOSTNAME B /etc/hosts C /etc/resolv.conf D /etc/networks
    16. 不需要编译内核的情况是 D 。
    A 删除系统不用的设备驱动程序时 B 升级内核时
    C 添加新硬件时 D 将网卡激活
    17. 在shell中变量的赋值有四种方法,其中,采用name=12的方法称 A 。
    A 直接赋值 B使用read命令
    C 使用命令行参数 D使用命令的输出
    18. D 命令可以从文本文件的每一行中截取指定内容的数据。
    A cp B dd C fmt D cut
    19. 下列不是Linux系统进程类型的是 D 。
    A 交互进程 B 批处理进程 C 守护进程 D 就绪进程
    20.配置Apache 1.3.19服务器需要修改的配置文件为___A______
    A httpd.conf B access.conf C srm.conf D named.conf
    21. 内核不包括的子系统是 D 。
    A 进程管理系统 B 内存管理系统 C I/O管理系统 D硬件管理系统
    22. 在日常管理中,通常CPU会影响系统性能的情况是: A 。
    A CPU已满负荷地运转 B CPU的运行效率为30%
    C CPU的运行效率为50% D CPU的运行效率为80%
    23. 若一台计算机的内存为128MB,则交换分区的大小通常是 C 。
    A 64MB B 128MB C 256MB D 512MB
    24. 在安装Linux的过程中的第五步是让用户选择安装方式,如果用户希望安装部分组件(软件程序),并在选择好后让系统自动安装,应该选择的选项是 D 。
    A full B expert C newbie D menu
    25. Linux有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用 C 命令。
    A cat B more C less D menu
    26. 下列信息是某系统用ps –ef命令列出的正在运行的进程, D 进程是运行Internet超级服务器,它负责监听Internet sockets上的连接,并调用合适的服务器来处理接收的信息。
    A root 1 4.0 0.0 344 204? S 17:09 0:00 init
    B root 2 0.0 0.1 2916 1520? S 17:09 0:00 /sbin/getty
    C root 3 0.0 0.2 1364 632? S 17:09 0:00 /usr/sbin/syslogd
    D root 4 0.0 1344 1204? S 17:09 0:10 /usr/sbin/inetd
    27.在TCP/IP模型中,应用层包含了所有的高层协议,在下列的一些应用协议中, B 是能够实现本地与远程主机之间的文件传输工作。
    A telnet B FTP C SNMP D NFS
    28.当我们与某远程网络连接不上时,就需要跟踪路由查看,以便了解在网络的什么位置出现了问题,满足该目的的命令是 C 。
    A ping B ifconfig C traceroute D netstat
    29.对名为fido的文件用chmod 551 fido 进行了修改,则它的许可权是 D 。
    A -rwxr-xr-x B -rwxr--r-- C -r--r--r-- D -r-xr-x—x
    30. 在i节点表中的磁盘地址表中,若一个文件的长度是从磁盘地址表的第1块到第11块,则该文件共占有 B 块号。
    A 256 B 266 C 11 D 256×10
    31. 用ls –al 命令列出下面的文件列表, D 文件是符号连接文件。
    A -rw-rw-rw- 2 hel-s users 56 Sep 09 11:05 hello
    B -rwxrwxrwx 2 hel-s users 56 Sep 09 11:05 goodbey
    C drwxr--r-- 1 hel users 1024 Sep 10 08:10 zhang
    D lrwxr--r-- 1 hel users 2024 Sep 12 08:12 cheng
    32. DNS域名系统主要负责主机名和 A 之间的解析。
    A IP地址 B MAC地址 C 网络地址 D 主机别名
    33. WWW服务器是在Internet上使用最为广泛,它采用的是 B 结构。
    A 服务器/工作站 B B/S C 集中式 D 分布式
    34.Linux系统通过 C 命令给其他用户发消息。
    A less B mesg y C write D echo to
    35.NFS是 C 系统。
    A 文件 B 磁盘 C 网络文件 D 操作
    36. B 命令可以在Linux的安全系统中完成文件向磁带备份的工作。
    A cp B tr C dir D cpio
    37.Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在 C 目录中。
    A /bin B /etc C /dev D /lib
    38.在重新启动Linux系统的同时把内存中的信息写入硬盘,应使用 D 命令实现。
    A # reboot B # halt C # reboot D # shutdown –r now
    39.网络管理具备以下几大功能:配置管理、 A 、性能管理、安全管理和计费管理等。
    A 故障管理 B 日常备份管理 C 升级管理 D 发送邮件
    40.关于代理服务器的论述,正确的是 A 。
    A 使用internet上已有的公开代理服务器,只需配置客户端。
    B 代理服务器只能代理客户端http的请求。
    C 设置好的代理服务器可以被网络上任何主机使用。
    D 使用代理服务器的客户端没有自己的ip地址。
    41.关闭linux系统(不重新启动)可使用命令 B 。
    A Ctrl+Alt+Del B halt C shutdown -r now D reboot
    42.实现从IP地址到以太网MAC地址转换的命令为: C 。
    A ping B ifconfig C arp D traceroute
    43.在vi编辑器中的命令模式下,键入 B 可在光标当前所在行下添加一新行。
    A <a>; B <o>; C <I>; D A
    44.在vi编辑器中的命令模式下,删除当前光标处的字符使用 A 命令。
    A <x>; B <d>;<w>; C <D>; D <d>;<d>;
    45.在vi编辑器中的命令模式下,重复上一次对编辑的文本进行的操作,可使用 C 命令。
    A 上箭头 B 下箭头 C <.>; D <*>;
    46.用命令ls -al显示出文件ff的描述如下所示,由此可知文件ff的类型为 A 。
    -rwxr-xr-- 1 root root 599 Cec 10 17:12 ff
    A 普通文件 B 硬链接 C 目录 D 符号链接
    47.删除文件命令为: D 。
    A mkdir B rmdir C mv D rm
    48.在下列的名称中,不属于DNS服务器类型的是:____C_____
    A Primary Master Server B Secondary Master Server
    C samba D Cache_only Server
    49.网络管理员对WWW服务器进行访问、控制存取和运行等控制,这些控制可在 A 文件中体现。
    A httpd.conf B lilo.conf C inetd.conf D resolv.conf
    50.邮件转发代理也称邮件转发服务器,它可以使用SMTP协议,也可以使用 C 协议。
    A FTP B TCP C UUCP D POP
    51.启动samba服务器进程,可以有两种方式:独立启动方式和父进程启动方式,其中前者是在 C 文件中以独立进程方式启动。
    A /usr/sbin/smbd B /usr/sbin/nmbd C rc.samba D /etc/inetd.conf
    52.DHCP是动态主机配置协议的简称,其作用是可以使网络管理员通过一台服务器来管理一个网络系统,自动地为一个网络中的主机分配___D______地址。
    A 网络 B MAC C TCP D IP
    53.为了保证在启动服务器时自动启动DHCP进程,应将 A文件中的dhcpd=no改为dhcpd=yes。
    A rc.inet1 B lilo.conf C inetd.conf D httpd.conf
    54.对文件进行归档的命令为 D 。
    A dd B cpio C gzip D tar
    55.改变文件所有者的命令为 C 。
    A chmod B touch C chown D cat
    56.在给定文件中查找与设定条件相符字符串的命令为: A 。
    A grep B gzip C find D sort
    57.建立一个新文件可以使用的命令为 D 。
    A chmod B more C cp D touch
    58.在下列命令中,不能显示文本文件内容的命令是: D 。
    A more B less C tail D join
    59.在使用匿名登录ftp时,用户名为 B 。
    A users B anonymous C root D guest
    60.在实际操作中,想了解命令logname 的用法,可以键入 D 得到帮助。
    A logname --man B logname/? C help logname D logname --help
    61.如果LILO被安装在MBR,使用 A 命令即可卸载LILO。
    A lilo –u B lilo –c C lilo –v D lilo -V
    62.当用命令ls –al查看文件和目录时,欲观看卷过屏幕的内容,应使用组合键 D 。
    A Shift+Home B Ctrl+ PgUp C Alt+ PgDn D Shift+ PgUp
    63.mc是UNIX风格操作系统的 C 。
    A 文件编辑器/程序编译器 B 配置网络的窗口工具
    C 目录浏览器/文件管理器 D Samba服务器管理工具
    64.i节点是一个 D 长的表,表中包含了文件的相关信息。
    A 8字节 B 16字节 C 32字节 D 64字节
    65.文件权限读、写、执行的三种标志符号依次是 A 。
    A rwx B xrw C rdx D srw
    66.Linux 文件名的长度不得超过 C 个字符。
    A 64 B 128 C 256 D 512
    67.进程有三种状态: C 。
    A 准备态、执行态和退出态 B 精确态、模糊态和随机态
    C 运行态、就绪态和等待态 D 手工态、自动态和自由态
    68. 从后台启动进程,应在命令的结尾加上符号 A 。
    A & B @ C # D $
    69. B 不是邮件系统的组成部分。
    A 用户代理 B 代理服务器 C 传输代理 D 投递代理
    70.在Shell脚本中,用来读取文件内各个域的内容并将其赋值给Shell变量的命令是 D 。
    A fold B join C tr D read
    71.crontab文件由六个域组成,每个域之间用空格分割,其排列如下: B 。
    A MIN HOUR DAY MONTH YEAR COMMAND
    B MIN HOUR DAY MONTH DAYOFWEEK COMMAND
    C COMMAND HOUR DAY MONTH DAYOFWEEK
    D COMMAND YEAR MONTH DAY HOUR MIN
    72.用ftp进行文件传输时,有两种模式: C 。
    A Word和binary B .txt和Word Document
    C ASCII和binary D ASCII和Rich Text Format
    73.某文件的组外成员的权限为只读;所有者有全部权限;组内的权限为读与写,则该文件的权限为 D 。
    A 467 B 674 C 476 D 764
    74.在DNS系统测试时,设named进程号是53,命令 D 通知进程重读配置文件。
    A kill –USR2 53 B kill –USR1 53 C kill -INT 63 D kill –HUP 53
    75.Apache服务器默认的接听连接端口号是 C 。
    A 1024 B 800 C 80 D 8
    76.PHP和MySQL的联合使用解决了 C 。
    A 在Proxy上处理数据库的访问问题 B 在WWW服务器上处理黑客的非法访问问题
    C 在WWW服务器上处理数据库的访问问题
    D 在Sendmail邮件系统上处理数据库的访问问题
    77.OpenSSL是一个 A 。
    A 加密软件 B 邮件系统 C 数据库管理系统 D 嵌入式脚本编程语言
    78.Samba服务器的配置文件是 D 。
    A httpd.conf B inetd.conf C rc.samba D smb.conf
    79.关于DNS服务器,叙述正确的是 D 。
    A DNS服务器配置不需要配置客户端
    B 建立某个分区的DNS服务器时只需要建立一个主DNS服务器
    C 主DNS服务器需要启动named进程,而辅DNS服务器不需要
    D DNS服务器的root.cache文件包含了根名字服务器的有关信息
    80.退出交互模式的shell,应键入 C 。
    A <Esc>; B ^q C exit D quit
    81.将Windows C:盘(hda1)安装在Linux文件系统的/winsys目录下,命令是 B 。
    A root@l04.edu.cn:~#mount dev/had1 /winsys
    B root@l04.edu.cn:~#mount /dev/had1 /winsys
    C root@l04.edu.cn:~#mount /dev/had1 winsys
    D root@l04.edu.cn:~#mount dev/had1 winsys
    82.设超级用户root当前所在目录为:/usr/local,键入cd命令后,用户当前所在目录为 B 。
    A /home B /root C /home/root D /usr/local
    83.字符设备文件类型的标志是 B 。
    A p B c C s D l
    84.将光盘CD-ROM(hdc)安装到文件系统的/mnt/cdrom目录下的命令是 C 。
    A mount /mnt/cdrom B mount /mnt/cdrom /dev/hdc
    C mount /dev/hdc /mnt/cdrom D mount /dev/hdc
    85.将光盘/dev/hdc卸载的命令是 A 。
    A umount /dev/hdc B unmount /dev/hdc
    C umount /mnt/cdrom /dev/hdc D unmount /mnt/cdrom /dev/hdc
    86.在/home/stud1/wang目录下有一文件file,使用 D 可实现在后台执行命令,此命令将file文件中的内容输出到file.copy文件中。
    A cat file >;file.copy B cat >;file.copy C cat file file.copy & D cat file >;file.copy &
    87.在DNS配置文件中,用于表示某主机别名的是: B 。
    A NS B CNAME C NAME D CN
    88.可以完成主机名与IP地址的正向解析和反向解析任务的命令是: A 。
    A nslookup B arp C ifconfig D dnslook
    89.下列变量名中有效的shell变量名是: C 。
    A -2-time B _2$3 C trust_no_1 D 2004file
    90.qmail是 B 。
    A 收取邮件的协议 B 邮件服务器的一种 C 发送邮件的协议 D 邮件队列
    91.已知某用户stud1,其用户目录为/home/stud1。如果当前目录为/home,进入目录/home/stud1/test的命令是 C 。
    A cd test B cd /stud1/test C cd stud1/test D cd home
    92.已知某用户stud1,其用户目录为/home/stud1。分页显示当前目录下的所有文件的文件或目录名、用户组、用户、文件大小、文件或目录权限、文件创建时间等信息的命令是 D 。
    A more ls –al B more –al ls C more < ls –al D ls –al | more
    93.关于进程调度命令, B 是不正确的。
    A 当日晚11点执行clear命令,使用at命令:at 23:00 today clear
    B 每年1月1日早上6点执行date命令,使用at命令:at 6am Jan 1 date
    C 每日晚11点执行date命令,crontab文件中应为:0 23 * * * date
    D 每小时执行一次clear命令,crontab文件中应为:0 */1 * * * clear
    94.系统中有用户user1和user2,同属于users组。在user1用户目录下有一文件file1,它拥有644的权限,如果user2用户想修改user1用户目录下的file1文件,应拥有 B 权限。
    A 744 B 664 C 646 D 746
    95.如果想配置一台匿名ftp服务器,应修改 C 文件。
    A /etc/gateway B /etc/ftpservers C /etc/ftpusers D /etc/inetd.conf
    96.Samba服务器的进程由B 两部分组成 。
    A named和sendmail B smbd和nmbd C bootp和dhcpd D httpd和squid
    97.要配置NFS服务器,在服务器端主要配置 C 文件。
    A /etc/rc.d/rc.inet1 B /etc/rc.d/rc.M C /etc/exports D /etc/rc.d/rc.S
    98.为保证在启动服务器时自动启动DHCP进程,应对 B 文件进行编辑。
    A /etc/rc.d/rc.inet2 B /etc/rc.d/rc.inet1 C /etc/dhcpd.conf D /etc/rc.d/rc.S
    99.在配置代理服务器时,若设置代理服务器的工作缓存为64MB,配置行应为 D 。
    A cache 64MB B cache_dir ufs /usr/local/squid/cache 10000 16 256
    C cache_ mgr 64MB D cache_ mem 64MB
    100.安全管理涉及的问题包括保证网络管理工作可靠进行的安全问题和保护网络用户及网络管理对象问题。 C 属于安全管理的内容。
    A 配置设备的工作参数 B 收集与网络性能有关的数据
    C 控制和维护访问权限 D 监测故障
    101.以下命令对中,正确的是: B 。
    A ls和sl B cat和tac C more和erom D exit和tixe
    102. B 命令是在vi编辑器中执行存盘退出。
    A :q B ZZ C :q! D :WQ
    103.下列关于/etc/fstab文件描述,正确的是 D 。
    A fstab文件只能描述属于linux的文件系统 B CD_ROM和软盘必须是自动加载的
    C fstab文件中描述的文件系统不能被卸载 D 启动时按fstab文件描述内容加载文件系统
    104.通过文件名存取文件时,文件系统内部的操作过程是通过 C 。
    A 文件在目录中查找文件数据存取位置。B 文件名直接找到文件的数据,进行存取操作。
    C 文件名在目录中查找对应的I节点,通过I节点存取文件数据。
    D 文件名在中查找对应的超级块,在超级块查找对应i节点,通过i节点存取文件数据
    105.Linux将存储设备和输入/输出设备均看做文件来操作, C 不是以文件的形式出现。
    A 目录 B 软链接 C i节点表 D 网络适配器
    106.关于i节点和超级块,下列论述不正确的是 B 。
    A i节点是一个长度固定的表 B 超级块在文件系统的个数是唯一的
    C i节点包含了描述一个文件所必需的全部信息
    D 超级块记录了i节点表和空闲块表信息在磁盘中存放的位置
    107. D 设备是字符设备。
    A hdc B fd0 C hda1 D tty1
    108. B 目录存放着Linux的源代码。
    A /etc B /usr/src C /usr D /home
    109.关于文件系统的安装和卸载,下面描述正确的是 A 。
    A 如果光盘未经卸载,光驱是打不开的 B 安装文件系统的安装点只能是/mnt下
    C 不管光驱中是否有光盘,系统都可以安装CD-ROM设备
    D mount /dev/fd0 /floppy 此命令中目录/floppy是自动生成的
    110. B 不是进程和程序的区别。
    A 程序是一组有序的静态指令,进程是一次程序的执行过程
    B 程序只能在前台运行,而进程可以在前台或后台运行
    C 程序可以长期保存,进程是暂时的
    D 程序没有状态,而进程是有状态的
    111.文件exer1的访问权限为rw-r--r--,现要增加所有用户的执行权限和同组用户的写权限,下列命令正确的是 A 。
    A chmod a+x g+w exer1 B chmod 765 exer1
    C chmod o+x exer1 D chmod g+w exer1
    112.有关归档和压缩命令,下面描述正确的是 C 。
    A 用uncompress命令解压缩由compress命令生成的后缀为.zip的压缩文件
    B unzip命令和gzip命令可以解压缩相同类型的文件
    C tar归档且压缩的文件可以由gzip命令解压缩
    D tar命令归档后的文件也是一种压缩文件
    113.不是shell具有的功能和特点的是 C 。
    A 管道 B 输入输出重定向 C 执行后台进程 D 处理程序命令
    114.下列对shell变量FRUIT操作,正确的是: C 。
    A 为变量赋值:$FRUIT=apple B 显示变量的值:fruit=apple
    C 显示变量的值:echo $FRUIT D 判断变量是否有值:[ -f “$FRUIT” ]

    三.简答题:
    1.简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程。
    参考答案:
    Linux通过i节点表将文件的逻辑结构和物理结构进行转换。
    i节点是一个64字节长的表,表中包含了文件的相关信息,其中有文件的大小、文件所有者、文件的存取许可方式以及文件的类型等重要信息。在i节点表中最重要的内容是磁盘地址表。在磁盘地址表中有13个块号,文件将以块号在磁盘地址表中出现的顺序依次读取相应的块。Linux文件系统通过把i节点和文件名进行连接,当需要读取该文件时,文件系统在当前目录表中查找该文件名对应的项,由此得到该文件相对应的i节点号,通过该i节点的磁盘地址表把分散存放的文件物理块连接成文件的逻辑结构。
    2.简述进程的启动、终止的方式以及如何进行进程的查看。
    参考答案:
    在Linux中启动一个进程有手工启动和调度启动两种方式:
    (1)手工启动
    用户在输入端发出命令,直接启动一个进程的启动方式。可以分为:
    ①前台启动:直接在SHELL中输入命令进行启动。
    ②后台启动:启动一个目前并不紧急的进程,如打印进程。
    (2)调度启动
    系统管理员根据系统资源和进程占用资源的情况,事先进行调度安排,指定任务运行的时间和场合,到时候系统会自动完成该任务。
    经常使用的进程调度命令为:at、batch、crontab。
    3. 简述DNS进行域名解析的过程。
    参考答案:
    首先,客户端发出DNS请求翻译IP地址或主机名。DNS服务器在收到客户机的请求后:
    (1)检查DNS服务器的缓存,若查到请求的地址或名字,即向客户机发出应答信息;
    (2)若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户机发出应答信息;
    (3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。
    (4)若没有找到,则返回错误信息。
    4.系统管理员的职责包括那些?管理的对象是什么?
    参考答案:
    系统管理员的职责是进行系统资源管理、设备管理、系统性能管理、安全管理和系统性能监测。管理的对象是服务器、用户、服务器的进程及系统的各种资源等。
    5.简述安装Slackware Linux系统的过程。
    参考答案:
    (1)对硬盘重新分区。 (2)启动Linux系统(用光盘、软盘等)。
    (3)建立Linux主分区和交换分区。(4)用setup命令安装Linux系统。
    (5)格式化Linux主分区和交换分区(6)安装Linux软件包
    (7)安装完毕,建立从硬盘启动Linux系统的LILO启动程序,或者制作一张启动Linux系统的软盘。重新启动Linux系统。
    6.什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
    参考答案:
    静态路由是由系统管理员设计与构建的路由表规定的路由。适用于网关数量有限的场合,且网络拓朴结构不经常变化的网络。其缺点是不能动态地适用网络状况的变化,当网络状况变化后必须由网络管理员修改路由表。
    动态路由是由路由选择协议而动态构建的,路由协议之间通过交换各自所拥有的路由信息实时更新路由表的内容。动态路由可以自动学习网络的拓朴结构,并更新路由表。其缺点是路由广播更新信息将占据大量的网络带宽。
    7.进程的查看和调度分别使用什么命令?
    参考答案:
    进程查看的命令是ps和top。
    进程调度的命令有at,crontab,batch,kill。
    8.当文件系统受到破坏时,如何检查和修复系统?
    参考答案:
    成功修复文件系统的前提是要有两个以上的主文件系统,并保证在修复之前首先卸载将被修复的文件系统。
    使用命令fsck对受到破坏的文件系统进行修复。fsck检查文件系统分为5步,每一步检查系统不同部分的连接特性并对上一步进行验证和修改。在执行fsck命令时,检查首先从超级块开始,然后是分配的磁盘块、路径名、目录的连接性、链接数目以及空闲块链表、i-node。
    9.解释i节点在文件系统中的作用。
    参考答案:
    在linux文件系统中,是以块为单位存储信息的,为了找到某一个文件在存储空间中存放的位置,用i节点对一个文件进行索引。I节点包含了描述一个文件所必须的全部信息。所以i节点是文件系统管理的一个数据结构。
    10.什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
    参考答案:
    链接分硬链接和符号链接。
    符号链接可以建立对于文件和目录的链接。符号链接可以跨文件系统,即可以跨磁盘分区。符号链接的文件类型位是l,链接文件具有新的i节点。
    硬链接不可以跨文件系统。它只能建立对文件的链接,硬链接的文件类型位是-,且硬链接文件的i节点同被链接文件的i节点相同。
    11.在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则。
    参考答案:
    磁盘簇(或i节点密度)是文件系统调度文件的基本单元。磁盘簇的大小,直接影响系统调度磁盘空间效率。当磁盘分区较大时,磁盘簇也应选得大些;当分区较小时,磁盘簇应选得小些。通常使用经验值。
    12.简述网络文件系统NFS,并说明其作用。
    参考答案:
    网络文件系统是应用层的一种应用服务,它主要应用于Linux和Linux系统、Linux和Unix系统之间的文件或目录的共享。对于用户而言可以通过NFS方便的访问远地的文件系统,使之成为本地文件系统的一部分。采用NFS之后省去了登录的过程,方便了用户访问系统资源。
    13.某/etc/fstab文件中的某行如下:
    /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2
    请解释其含义。
    参考答案:
    (1)第一列:将被加载的文件系统名;(2)第二列:该文件系统的安装点;
    (3)第三列:文件系统的类型;(4)第四列:设置参数;
    (5)第五列:供备份程序确定上次备份距现在的天数;
    (6)第六列:在系统引导时检测文件系统的顺序。
    14.Apache服务器的配置文件httpd.conf中有很多内容,请解释如下配置项:
    (1)MaxKeepAliveRequests 200 (2)UserDir public_html
    (3)DefaultType text/plain (4)AddLanguare en.en
    (5)DocumentRoot“/usr/local/httpd/htdocs”
    (6)AddType application/x-httpd-php.php.php.php4
    参考答案:
    (1)允许每次连接的最大请求数目,此为200;(2)设定用户放置网页的目录;
    (3)设置服务器对于不认识的文件类型的预设格式;
    (4)设置可传送语言的文件给浏览器;(5)该目录为Apache放置网页的地方;
    (6)服务器选择使用php4。
    15.某Linux主机的/etc/rc.d/rc.inet1文件中有如下语句,请修正错误,并解释其内容。
    /etc/rc.d/rc.inet1:
    ……
    ROUTE add –net default gw 192.168.0.101 netmask 255.255.0.0 metric 1
    ROUTE add –net 192.168.1.0 gw 192.168.0.250 netmask 255.255.0.0 metric 1
    参考答案:
    修正错误:
    (1)ROUTE应改为小写:route;(2)netmask 255.255.0.0应改为:netmask 255.255.255.0;
    (3)缺省路由的子网掩码应改为:netmask 0.0.0.0;
    (4)缺省路由必须在最后设定,否则其后的路由将无效。
    解释内容:
    (1)route:建立静态路由表的命令;(2)add:增加一条新路由;
    (3)-net 192.168.1.0:到达一个目标网络的网络地址;
    (4)default:建立一条缺省路由;(5)gw 192.168.0.101:网关地址;
    (6)metric 1:到达目标网络经过的路由器数(跳数)。
    16.试解释apache服务器以下配置的含义:
    (1)port 1080 (2)UserDir userdoc
    (3)DocumentRoot “/home/htdocs”
    (4)<Directory /home/htdocs/inside>;
    Options Indexes FollowSymLinks
    AllowOverride None
    Order deny,allow
    deny from all
    allow from 192.168.1.5
    </Directory>;
    (5)Server Type Standlone
    参考答案:
    Apache服务器配置行含义如下:
    (1)将apache服务器的端口号设定为1080;
    (2)设定用户网页目录为userdoc;
    (3)设定apache服务器的网页根目录:/home/htdocs;
    (4)在此apache服务器上设定一个目录/home/htdocs/inside,且此目录只允许IP地址为192.168.1.5的主机访问;
    (5)定义apache服务器以独立进程的方式运行。
    17.简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
    参考答案:
    (1)ftp有两种登录方式:匿名登录和授权登录。使用匿名登录时,用户名为:anonymous,密码为:任何合法email地址;使用授权登录时,用户名为用户在远程系统中的用户帐号,密码为用户在远程系统中的用户密码。
    区别:使用匿名登录只能访问ftp目录下的资源,默认配置下只能下载;而授权登录访问的权限大于匿名登录,且上载、下载均可。
    (2)ftp文件传输有两种文件传输模式:ASCII模式和binary模式。ASCII模式用来传输文本文件,其他文件的传输使用binary模式。
    (3)常用的ftp文件传输命令为:bin、asc、put、get、mput、mget、prompt、bye。

    四.编程与应用题:
    1.用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下。
    参考程序:
    #!/bin/sh
    FILENAME=
    echo “Input file name:”
    read FILENAME
    if [ -c "$FILENAME" ]
    then
    cp $FILENAME /dev
    fi
    2.请下列shell程序加注释,并说明程序的功能和调用方法:#!/bin/sh
    #!/bin/sh
    #
    # /etc/rc.d/rc.httpd
    #
    # Start/stop/restart the Apache web server.
    #
    # To make Apache start automatically at boot, make this
    # file executable: chmod 755 /etc/rc.d/rc.httpd
    #
    case "$1" in
    'start')
    /usr/sbin/apachectl start ;;
    'stop')
    /usr/sbin/apachectl stop ;;
    'restart')
    /usr/sbin/apachectl restart ;;
    *)
    echo "usage $0 start|stop|restart" ;;
    esac
    参考答案:
    (1)程序注释
    #!/bin/sh 定义实用的shell
    #
    # /etc/rc.d/rc.httpd 注释行,凡是以星号开始的行均为注释行。
    #
    # Start/stop/restart the Apache web server.
    #
    # To make Apache start automatically at boot, make this




    # file executable: chmod 755 /etc/rc.d/rc.httpd
    #
    case "$1" in #case结构开始,判断“位置参数”决定执行的操作。本程序携带一个“位置参数”,即$1
    'start') #若位置参数为start
    /usr/sbin/apachectl start ;; #启动httpd进程
    'stop') #若位置参数为stop
    /usr/sbin/apachectl stop ;; #关闭httpd进程
    'restart') #若位置参数为stop
    /usr/sbin/apachectl restart ;; #重新启动httpd进程
    *) #若位置参数不是start、stop或restart时
    echo "usage $0 start|stop|restart" ;; #显示命令提示信息:程序的调用方法
    esac #case结构结束
    (2)程序的功能是启动,停止或重新启动httpd进程
    (3)程序的调用方式有三种:启动,停止和重新启动。
    3.设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。
    参考答案:
    #!/bin/sh
    i=1
    groupadd class1
    while [ $i -le 30 ]
    do
    if [ $i -le 9 ] ;then
    USERNAME=stu0${i}
    else
    USERNAME=stu${i}
    fi
    useradd $USERNAME
    mkdir /home/$USERNAME
    chown -R $USERNAME /home/$USERNAME
    chgrp -R class1 /home/$USERNAME
    i=$(($i+1))
    done

    4.编写shell程序,实现自动删除50个账号的功能。账号名为stud1至stud50。
    参考程序:
    #!/bin/sh
    i=1
    while [ $i -le 50 ]
    do
    userdel -r stud${i}
    i=$(($i+1 ))
    done
    5.某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:
    (1)在下午4 :50删除/abc目录下的全部子目录和全部文件;
    (2)从早8:00~下午6:00每小时读取/xyz目录下x1文件中每行第一个域的全部数据加入到/backup目录下的bak01.txt文件内;
    (3)每逢星期一下午5:50将/data目录下的所有目录和文件归档并压缩为文件:backup.tar.gz;
    (4)在下午5:55将IDE接口的CD-ROM卸载(假设:CD-ROM的设备名为hdc);
    (5)在早晨8:00前开机后启动。
    参考答案:
    解决方案:
    (1)用vi创建编辑一个名为prgx的crontab文件;
    (2)prgx文件的内容:
    50 16 * * * rm -r /abc/*
    0 8-18/1 * * * cut -f1 /xyz/x1 >;>; /backup/bak01.txt
    50 17 * * * tar zcvf backup.tar.gz /data
    55 17 * * * umount /dev/hdc
    (3)由超级用户登录,用crontab执行 prgx文件中的内容:
    root@xxx:#crontab prgx;在每日早晨8:00之前开机后即可自动启动crontab。
    6.设计一个shell程序,在每月第一天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。Shell程序fileback存放在/usr/bin目录下。
    参考答案:
    (1)编写shell程序fileback:
    #!/bin/sh
    DIRNAME=`ls /root | grep bak`
    if [ -z "$DIRNAME" ] ; then
    mkdir /root/bak
    cd /root/bak
    fi
    YY=`date +%y`
    MM=`date +%m`
    DD=`date +%d`
    BACKETC=$YY$MM$DD_etc.tar.gz
    tar zcvf $BACKETC /etc
    echo "fileback finished!"
    (2)编写任务定时器:
    echo "0 0 1 * * /bin/sh /usr/bin/fileback" >; /root/etcbakcron
    crontab /root/etcbakcron
    或使用crontab -e 命令添加定时任务:
    0 1 * * * /bin/sh /usr/bin/fileback
    7.有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?
    参考答案:(1)第一种方法:
    用户应使用crontab –e 命令创建crontab文件。格式如下:
    0 0 * * sun cp –r /user/backup /tmp
    (2)第二种方法:
    用户先在自己目录下新建文件file,文件内容如下:
    0 * * sun cp –r /user/backup /tmp
    然后执行 crontab file 使生效。
    8.设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。
    参考答案: 建立程序 Pro16如下:
    #!/bin/sh
    i=1
    while [ i -le 50 ]
    do
    if [ -d /userdata ];then
    mkdir -p /userdata/user$i
    chmod 754 /userdata/user$i
    echo "user$i"
    let "i = i + 1" (或i=$(($i+1))
    else
    mkdir /userdata
    mkdir -p /userdata/user$i
    chmod 754 /userdata/user$i
    echo "user$i"
    let "i = i + 1" (或i=$(($i+1))
    fi
    done


    五、多选题
    1.关于硬链接的描述正确的(BE)。
    A 跨文件系统 B不可以跨文件系统 D可以做目录的连接
    C 为链接文件创建新的i节点 E链接文件的i节点同被链接文件的i节点
    2.在网站发布用户wang的个人网页时,需要创建用户网页目录,假定用户网页目录设定为web
    (用户目录在/home目录下),如下描述正确的是(BCE)
    A 存放用户网页的绝对路径/wang/web B存放用户网页的目录~wang/
    C 存放用户网页的绝对路径/home/wang/web D存放用户网页的绝对路径/home/web
    E 在本机访问用户wang的个人网页的URL地址http://localhost/~wang/
    3.在一台WWW服务器上将端口号设定为8000,默认的网页文件index.html,服务器网页的根目录/www。在本机访问服务器时,正确的用法是(BDE)
    A 浏览器访问该服务器的URL地址http://localhost/
    B 浏览器访问该服务器的URL地址http://localhost:8000/
    C 浏览器访问该服务器的用户li网页URL地址http://localhost/~li
    D 浏览器访问该服务器的用户li网页URL地址http://localhost:8000/~li
    E 浏览器访问该服务器的URL地址localhost:8000/
    4.在shell编程中关于$2的描述正确的是(CE)
    A 程序后携带了两个位置参数 B 宏替换 C 程序后面携带的第二个位置参数
    D 携带位置参数的个数 E 用$2引用第二个位置参数
    5.某文件的权限是 - r w x r - - r- -,下面描述正确的是(CD)
    A 文件的权限值是755 B 文件的所有者对文件只有读权 限
    C 文件的权限值是 744 D 其他用户对文件只有读权限 E同组用户对文件只有写权限
    6.关于OpenSSH的作用的描述正确的是(ACE)
    A 开放源代码的安全加密程序 B OpenSSH常用于为http协议加密
    C OpenSSH用于提高远程登录访问的安全性 D 它和telnet实用同样的端口号
    E OpenSSH是免费下载的应程序
    7.关于NFS服务器描述正确的是(BC)
    A 网络中实现Windows系统之间文件系统共享的应用软件
    B 网络中实现Linux系统之间文件系统共享的应用软件
    C 网络中实现Unix系统之间文件系统共享的应用软件
    D 网络中实现Windows系统和Unix之间文件系统共享的应用软件
    E 网络中实现Windows系统和Linux之间文件系统共享的应用软件
    8.关于sed描述正确的是(ABD)
    A sed 是Linux系统中的流编辑器 B sed 是UNIX系统中的流编辑器
    C sed 网络文件系统的类型

    D 利用管道对标准输入/标准输入的数据进行编辑和组合
    E sed是NFS的应用程序
    9.关于限制磁盘限额,描述正确的是(ABD)
    A 使用edquota可以监控系统所有用户使用的磁盘空间,并在接近极限时提示用户
    B 用户组的磁盘限额是用户组内所有用户予设磁盘空间总和
    C 单个用户的磁盘限额就是该用户所在用户组内所有磁盘限额的总合
    D 在Linux系统下限制用户使用的磁盘空间可以使用edquota
    E 用户组的磁盘限额就是该用户组内拥有最大磁盘限额值的用户的磁盘限额
    10.关于建立系统用户的正确描述是()
    A 在Linux系统下建立用户使用adduser命令
    B 每个系统用户分别在/etc/passwd和/etc/shadow文件中有一条记录
    C 访问每个用户的工作目录使用命令“cd /用户名”
    D 每个系统用户在默认状态下的工作目录在/home/用户名
    E 每个系统用户在/etc/fstab文件中有一条记录
  • PICT—基于Pairwise的用例组合算法

    jx9747 发布于 2009-12-22 17:45:41

    1、Pairwise算法:
     Pairwise (a.k.a. all-pairs) testing is an effective test case generation technique that is based on the observation that most faults are caused by interactions of at most two factors. Pairwise-generated test suites cover all combinations of two therefore are much smaller than exhaustive ones yet still very effective in finding defects.

    常用的Pairwise工具集:http://www.pairwise.org/tools.asp

    2、通过对测试变量的所有维度及维度的组合,避免穷举测试所有维度的所有值及其组合来减少测试用例数量的一种方法

    3、基于Pairwise算法的PICT工具:
    微软Pairwise算法程序Pairwise Independent Combinatorial Testing (PICT) Tool
    例如:准备文本文件(.txt) 内容包括(注意格式<ParamName> : <Value1>, <Value2>, <Value3>, ...)
    OS:WinNT,HP-UX,AIX,Solaries
    数据库:DB2,Oracle,SQLServer,PostgreSQL
    JDK:1.6.0,1.5.0
    字符集:utf-8,GBK

    4、通过PICT程序运算:
    结果如上图,较一般的排列组合算法(各维度值乘积)明显较少
    需将结果输出保存至文件:命令
    D:\Program Files\PICT>pict test2.txt > OutputFile.txt
    D:\Program Files\PICT>pict test2.txt > OutputFile.xls

    5、PICT选项:
     /o:N    - Order of combinations (default: 2)
     /d:C    - Separator for values  (default: ,)
     /a:C    - Separator for aliases (default: |)
     /n:C    - Negative value prefix (default: ~)
     /e:file - File with seeding rows
     /r[:N]  - Randomize generation, N - seed
     /c      - Case-sensitive model evaluation
     /s      - Show model statistics

    6、提供丰富的分组模式

    另外:
    PICT帮组手册:App/PICT/PICTHelp.htm


  • IBM将提供软件开发测试商用云服务

    flying-kite 发布于 2010-03-17 09:34:12

     3月17日消息,据外电报道,接近IBM云服务的企业、政府客户透露,IBM周四将宣布一项新的云计划,将为客户提供软件开发、软件测试方面的商用云服务。

      云测试服务已经有很好的案例,Sauce Labs和SOASTA公司就提供大量初级阶段的云测试服务,允许客户测试应用程序,而不用自己再构建大量的测试设备。

      根据IBM的研究,一般企业IT部门购置的技术基础设施,有50%以上是用于研发和测试,而可用的测试基础设施90%是闲置的。

      此外,IBM正与合作伙伴一起,向客户提供云管理、云安全和软件开发、测试支持等方面的解决方案。

      中国软件资讯网获悉,为了能够获得新的收入增长渠道,IBM已经投入超过200亿美元的资金,用于云计算领域的并购。

      另据Gartner提供的数据,2009年全球云计算市场的销售额达到563亿美元,同比增长21%。

  • 自动化测试框架模型

    liqf 发布于 2010-02-05 08:53:49

    1.      框架整体模型

    1.1.         模型图

    说明:

    Ø  这是整个自动化测试框架模型,采用混合驱动的模式实现(即数据驱动+关键字驱动)。

    ü  数据驱动框架:把测试数据与测试脚本进行分离,通过增加或修改测试数据来达到自动化测试覆盖的目的,测试框架的运行与否,取决于数据。

    ü  数据-关键字框架:是指在数据驱动框架的基础上实现加入关键字框架的思想来实现自动化框架,即把测试脚本进行提取,通过一些函数的解析与封装,把测试脚本演变成一种Excel或其他形式的工具或界面保存测试步骤与逻辑关系的记录集,包含对象与操作和逻辑,实现快速自动化开发和高可维护性

    Ø  支撑层、辅助工具的内容将由自动化测试底层框架完成支持,与被测系统无关,该部分内容应支持被测系统的自动化测试应用。

    Ø  操作组件资源库、功能点测试脚本、业务流程测试脚本:与被测系统、功能息息相关,属于具体的自动化测试实现层。

    Ø  实现层内容将统一设置模板,统一格式、规则,以为支撑层所调用支持。

     

    1.2.         模型简介

    l  支撑层

    支撑层是整个自动化测试体系的核心执行引擎,包括封装的基础函数,整个框架的执行体系及结果体系。

    Ø  基础函数

    ü  配置函数

    通过配置,实现在不同环境、不同机器、不同目录、不同程序地址等场景下能够自动执行测试。

    ü  对象识别

    能够对对象库及描述性编程两种方式正确进行各类型对象的识别,对象库的加载应用。

    ü  对象操作

    封装对各种类型对象的操作事件,各类对象属性的获取、动态修改等。

    ü  数据读写

    整个框架涉及对基础资源库数据的操作,对被测应用系统数据库的操作,封装对整个框架应用到的各种类型数据文件及数据库的连接、读取、替换、增、删、改等基本操作。

     

    Ø  执行体系

    ü  执行控制组件

    控制自动化测试用例的执行顺序、执行数据等,实现批量、定制、自动执行。

    ü  数据驱动引擎

    对数据文件的解释,通过数据驱动脚本执行。

    ü  关键字驱动引擎

    对关键字表格的解释、执行。将关键字表格(操作组件)解释为QTP可执行的脚本。

    ü  异常处理机制

    对执行过程中非预期错误,能够正确判别,并能够做出相应处理后继续执行(中止、跳过、跳出当前循环等方式),同时异常处理过程要记入执行日志。

    ü  恢复机制

    用例执行后,能够自动恢复初始状态,以实现循环验证。

    ü  版本管理

    被测系统存在版本信息,同样,对于自动化测试脚本、资源库等也存在版本问题,需要进行有效的版本管理与执行。

    Ø  结果体系

    ü  执行日志

    将执行过程生成日志,通过执行日志进一步分析、查找问题。

    ü  结果识别

    对测试用例执行结果进行正确识别,重点是通过实际结果与预期结果的比对。

    ü  结果输出

    正确输出测试结果,包括:每条用例执行的最终结果、每条用例执行过程中检查点的详细结果、错误截图

     

    l  操作组件资源库

    Ø  操作组件库

    操作组件库用于描述用例执行的操作步骤,说明对什么对象调用什么数据执行什么操作,同时会调用一些基本的业务逻辑及通用检查点,按被测系统的功能点分离方式进行组织,统一管理。

    Ø  对象库

    被测系统的对象资源库,通过对象识别函数解析后被操作组件所调用。按程序页面方式进行组织,对象命名规则一致,统一管理。

    Ø  测试数据库

    执行测试的测试用例数据,包括输入数据、预期结果、输出的公共数据,按功能页面分离方式进行组织,统一管理。

    Ø  业务逻辑函数库

    对基本业务逻辑、通用的检查点进行提炼、封调,统一规划为基础业务逻辑函数库,用于在操作组件或功能点测试脚本中调用,通过复用,提升脚本开发效率并提升维护性。

     

    l  功能点测试脚本

    对功能点执行测试的测试脚本,主要是组织对操作组件库、对象库、测试数据库的调用关系,以及复杂的业务逻辑,以实现对功能点的自动化测试。

    按功能模块—功能点的结构化方式进行组织管理脚本,并对公共功能进行提炼,统一应用。

     

    l  业务流程测试脚本

    按顺序组织功能点,调用待验证的测试数据库,组织成对系统业务流程的测试脚本。

     

    l  辅助工具

    为更好的提升测试效率,提供辅助工具进行支持。

    Ø  操作组件生成工具

    通过手工录制脚本,自动生成操作组件,再进行调整。

    Ø  用例数据生成工具

    目前测试用例不会编写到测试数据级,手工测试用例只会描述输入数据的特征,而且是对单个字段的验证,要做自动化测试用例,输入数据必须细化到具体的数据级,并且对同一个功能涉及的所有字段进行组合,准备测试数据的工作量是具大的,考虑开发用例数据生成工具,依据字段的数据类型、最大值、最小值限制等规则,根据测试用例的设计方法自动组合生成测试用例数据。

  • 国内测试专业blog(部份),欢迎一起完善

    liangjz 发布于 2009-10-29 01:40:15

       偶对平常访问较多or有意思的专业测试blog做一个简单的分类,或许有错,也肯定有很多遗漏.呵呵,欢迎大家一起完善,给大家提供一些便利.

    Webx朱少民—质量管理

    http://blog.csdn.net/kerryzhu

    陈绍英--- 性能测试
     http://blog.csdn.net/chenshaoying

    段念---性能测试:
     http://www.guanhe.cn/
     http://guanhe.cnblogs.com/

    深圳oracle 朱波 –oracle测试,性能/自动化测试
    http://www.rickyzhu.com/

    陈雷-- 性能,管理 :
     http://jackei.cnblogs.com/

    柳胜(性能+自动化):
     http://www.cesoo.com/
     http://blog.csdn.net/namesliu/category/236043.aspx

    文斯(白盒):
    http://blog.csdn.net/vincetest/
     http://blog.csdn.net/wayne_chan/category/241332.aspx

    微软余正洋:
     http://blog.csdn.net/rogeryu/

    jack-测试架构:
     http://www.51testing.com/?uid-293557

    广东赛宝陈能技-自动化:
     http://blog.csdn.net/Testing_is_believing

    刘艳会—c++工具:
     http://www.51testing.com/?uid-10851

    于涌—性能测试:
     http://tester2test.cnblogs.com/

    深圳金蝶杨学明:
     http://mikeyond.cnblogs.com/

    秋阳-综合:

    http://www.cnitblog.com/qiuyangzh/category/375.html

    阳光:
    http://blog.csdn.net/Test_sunny

    微软李和恒:

     http://blog.csdn.net/papercrane
    微软安全测试:
       http://blog.csdn.net/goldcattle/

    楷子狐:
     http://hi.baidu.com/higkoo

    zee ---性能测试:
    http://www.7dtest.com/
    http://blog.csdn.net/zeeslo
    http://blog.csdn.net/zeeslo/category/215291.aspx


    盛大龚X—性能测试:
    http://blog.csdn.net/jacky8024
    http://blog.csai.cn/user1/37626/index.html

    成都四方辛凯:
     http://blog.csdn.net/nilxin/category/144266.aspx

    安全测试:
     http://www.51testing.com/?uid/59943

    51testing云层—性能测试

     http://www.51testing.com/?uid-104

    崔启亮---本地化:
     http://blog.csdn.net/giltworld/

    mayingbao—测试管理:
    http://mayingbao.cnblogs.com/

    贺炘:
     http://blog.csdn.net/hxcat

    小布播客---性能:
     http://wilson66.cublog.cn/
     
    阿里云刘新宇:
       http://blog.csdn.net/omomo/
      
    阿里巴巴 SQA :
     http://hi.baidu.com/jacob/blog/index/0

    阿里巴巴QA:
     http://www.51testing.com/index.php?uid-159438
    阿里云陈洪:
     http://hi.csdn.net/linkyou

    淘宝QA:
      http://www.51testing.com/?uid-84753

    阿里之家:
     http://fafeng.blogbus.com/


    陈卫俊:
    http://www.51testing.com/?uid/5534

    51testing朴春龙---LR:
    http://blog.csdn.net/piaocl

    宋峰---QTP自动化:
    http://www.51testing.com/?uid-35-action-spacelist-type-blog

    苏州风过无息---QTP自动化:
    http://www.51testing.com/?uid-3528

    更夫:
    http://www.51testing.com/?uid-1592

  • 公共用例的个人见解

    woodcraft 发布于 2009-09-09 17:10:40

    本周的“每周一问”问题。

    以下为楼主原文:

    一个系统基本上构造是由:1.增删改查   2.数据流程   这两大块组合的
    在整个系统中相同的操作、相似的操作可以说比比皆是,如何构造公共的测试用例呢?大家构造过么?

    问题难点:
    1.公共用例尺度应该如何把握
    2.带参数化的公共用例难于评审(TD,QC这类可以带参数的,其他我不是很了解)
    3.测试人员的水平还有测试人员编写用例的表述及方法。


    从2008年初,我就在思考这个问题,如何去权衡这些问题呢,大家来一起讨论,下面是我们公司一个测试人员编写的公共用例里面的正常新增(当然跟我理解的是不一样的):
    输入:输入所有字段,执行新增操作
    输出:
    能正常完成新增操作。
    1.一般有给予相关提示信息,如'保存成功'。(不强制规定)
    2.如果系统有提供数据回显那么回显数据与新增数据是一致的。
    3.如果新增数据后有返回到列表,则一般是新增的数据排在首页首行,但也可根据具体
    的排序需求而定。

    换成是我来写的话,我会带上参数化:
    输入:<<<users>>>登录系统,点击【<<<模块1>>>】||【<<<模块1子模块>>>】,点击新增,<<<所有字段>>>录入正确有效的数据后,点击保存
    输出:1.保存成功并正确返回页面  2.录入前后数据一致。
    我的方法嘛好处自然是在执行测试的时候知道谁登录,哪个模块执行了什么样的操作,但如果让开发已经公司其他成员来评审的时候,这样的可读性就很低了(毕竟TD上还得经过调用,可读性几乎为0了,评审人员只能查看公共用例模板,调用部分都无法查看清了)

    大家平时写用例都主要关注什么呢?如何把握公共用例?欢迎大家讨论!
    ==========================================================

    下面是我的一点看法。
    ==========================================================

    目前的测试团队,一般而言,不同的项目都存在许多的共通之处,通过构建公共用例库的好处我认为有以下两方面:

    1、缩短用例开发时间。

    2、继承团队的项目经验。

     

    公共用例的定义与使用,我是这么理解的:

    首先,公共用例并不在在某些项目上拿来就可用的(具体项目具体而言),如果是抱着这样的思路去构建,那么公共用例的编写与维护需要投入大量的资源(因为要考虑兼容多个项目)。

    其次,在公共用例库建立后,对于每个项目,需要将公共用例提取建立基线后与此项目的私有用例合并,单独维护。否则,项目有独立的私有用例与公共用例,对于测试者来说反而容易混乱。在用例的维护中,如果发现公共用例有需要更新的地方,再对公共用例更新补充,建立新的基线。

     

    在具体的实施过程中,我认为公共用例库应该从以下两个侧重点出发进行构建:

     

    一是基于相同的开发实现平台的公共用例库。

    基于相同的开发实现平台,一般而言,在界面风格、公共模块的实现上基本都是一样的,因此建立公共用例库应该从界面或者菜单方面着手,以缩短多个项目的用例开发时间。

    此类公共用例库,个人建议一定要将用例与需求挂钩,这样,通过对需求的变化,我们将需求不变的部分筛选出来,可用的公共用例也就筛选出来了,测试者可将更多的精力放在需求变化的部分构建新用例。

     

    二是基于类似应用业务需求的公共用例库。

    基于相同或类似的业务应用需求,就和楼主说的一样,系统都是一样的,在构建公共用例库时,应该从功能点出发,将流程与参数分离,以达到用例复用的目的。

     

    基于类似应用业务需求的公共用例库,在编辑时建议采用二维图表构建,原理如图1。

    示例如图2。

    与楼主举的2个例子比较,这种格式应该更直观,在参数的选择上,可采用等价类分法选择。

     

    接下来回答楼主的3个问题:

     

    1、公共用例尺度应该如何把握?

    这个尺度,我有些不太明白,是指用例的颗粒度,还是指其他的?

    对于用例的颗粒度,这个我觉得应该根据团队成员的共识与项目情况决定。

     

    2、带参数化的公共用例难于评审(TD,QC这类可以带参数的,其他我不是很了解)

    我们团队的评审分两种:

    一是有项目组参与的评审,个人认为在这种评审中,项目组主要关注流程方面。

    二是测试团队的内部评审,相比较上一种评审,这种评审可能更关注参数的选择。

     

    3、测试人员的水平还有测试人员编写用例的表述及方法。

    测试人员水平,没什么好说的,只有通过工作学习提升。

    现在我编制一份测试相关文档,都需要写三份,以便于测试者实行统一的规范:

    一是空白格式,这没什么好说的。

    二是填写规范或作业指导书,估计楼主也会写,至少口头有在宣导。

    三是实际案例。完成了空白格式与规范后,由于个人理解不一,有时候写出来千差万别,这时候你就得写一些实际的案例,通过案例结合规范,使得团队达到同一表述。

     

    =========================================================

    最近事情比较多,博客N久没更新了.......

     

  • QTP视频总汇

    zxy_yocky 发布于 2009-07-01 11:30:11

    为了自己查看比较方便,对BOOBOOKE内所有的QTP视频做个汇总贴.51Testing软件测试网a&xHk2Qp
    ================================================================================51Testing软件测试网 {(u7o#i @.q*[1e
    [V] QTP 9的新特性 1 - 英文视频
    urdL*B| Gb.C177152http://www.boobooke.com/v/bbk105051Testing软件测试网 n4m%V Blt|y%J$Z
    是QTP 9软件中自带的视频讲座,英语讲座51Testing软件测试网9{-M BQuj`g%G,K
    [V] QTP 9的新特性 2 - 英文视频
    AY5h7FZ,Tr4E177152http://www.boobooke.com/v/bbk1051
    j4q m?J177152QTP 9软件中自带的视频讲座,英语发音51Testing软件测试网c6c iBd jW-Gn
    [V] QTP 9的新特性 3 - 英文视频
    GZ5CTu177152http://www.boobooke.com/v/bbk1052
    7~ ` IK6Vu5_9QE:k177152QTP 9软件自带的视频讲座,英语发音,希望大家喜欢。
    e0O,b ]H177152这些视频都在QTP 9的安装目录的help目录下面。51Testing软件测试网twCW1^)M1L7G2t
    help目录包括了QTP全部的联机文档和帮助。
    G:E u#{%@ V1o0k177152================================================================================
    K7B8TJG%mAj177152[V]小布老师QTP系列培训视频 - 1
    @9~XA!dE g177152http://www.boobooke.com/v/bbk1043
    Y kn!M0S3d177152本讲讲了QTP的概述,希望大家喜欢。51Testing软件测试网5^ LXK3r-d-kh$J2P
    [V] 小布老师QTP系列培训视频 - 2
    |#cu Z3S3K5g177152http://www.boobooke.com/v/bbk1044
    Eo$j ? n.c,Ts177152本讲讲了测试规划,希望大家喜欢。51Testing软件测试网t.X ]f:F&`BM
    [V] 小布老师QTP系列培训视频 - 3
    WDLF*F L7K;I177152http://www.boobooke.com/v/bbk1045
    {QL y)A#s s177152本讲讲了录制测试脚本,是使用QTP的第一步,希望大家喜欢。
    ^"h(~!Gy*YdLd177152================================================================================51Testing软件测试网 g[&^,{x7kYq0^.r2_
    小强作品-零基础学习软件测试-qtp-目录
    +r[@{bx-d1771521 qtp目录分析
    JBMT6f9z1771522 qtp界面分析51Testing软件测试网0PN(dx5ej }
    3 qtp示例程序分析
    Qsj5~3d1771524 qtp学习指南51Testing软件测试网1j9?nm1L!k
    5 qtp基本操作录制与回放
    #]0Z.s1V`&Oy1771526 qtp的三种录制方式
    v[Pr N~1771527 增强help步骤51Testing软件测试网_&m\Wc
    8 checkpoint
    :P[&EQ6k w2oa1771529 参数化
    5sP9eI x)N b&[17715210 Tools下的工具介绍
    EV"K7B5P&o.p$LO17715211 qtp插件分析51Testing软件测试网 c.zM7j(D3W D
    12 qtp测试用例设计考题51Testing软件测试网 N6Xg~a[8O3P@k&m
    13 vbs
    ,C5U v6x6_Q17715214 recovery Scenarios51Testing软件测试网/b$i\bA5Pl
    15 虚拟对象
    ]P9Obb$QrO/z17715216 专家视图测试脚本开发51Testing软件测试网sXN'V},o*uJ
    17 qtp描述性编程
    u`WQ1vf(rV17715218 qtp测试脚本编写规范
    ^k7SwOLsWj*D17715251Testing软件测试网t'vO/Lv7bd
    [V]小强老师系列作品:QTP的安装目录分析
    'qM'Sr-aL w3R"z177152http://www.boobooke.com/v/bbk1590
    ;P;w |fG\5l177152在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP安装后的各个目录,重点介绍了大家需要关注的东西,希望对大家有帮助。51Testing软件测试网Z d `]TlZ]
    [V] 小强老师系列作品:QTP界面剖析
    z~&v]N%t177152http://www.boobooke.com/v/bbk1594
    +WJ|7E{ws177152本集是承接上集,小强老师向刚刚接触QTP的朋友介绍了QTP的常用界面和菜单选项,希望对大家有帮助。51Testing软件测试网#x[D+q+g3z3jn4f
    [V] 小强老师系列作品:QTP示例程序之研究
    r @W(J:mX#Um*w177152http://www.boobooke.com/v/bbk159851Testing软件测试网*s O}wKyN/[6s
    本集是承接上集,小强老师向刚刚接触QTP的朋友介绍了QTP自带的示例程序-飞机订票系统,别小看这个示例程序,小程序里面有大文章,且听小强老师给你道来, 希望对大家有帮助。
    @]k5LX0Z177152[V] 小强老师系列作品:QTP学习指南
    8aME^(e8kk"S177152http://www.boobooke.com/v/bbk1515
    J7Yp+H;X_ mNKs177152在本集中,小强老师根据自己的经验和体会,向刚刚接触QTP的朋友介绍了如何学习QTP的一些方法和经验,希望对大家有帮助。
    6B-c;D#v{;Z5_ I177152[V] 小强老师系列作品:QTP脚本的录制和回放
    7d(D$?5b$a[/b177152http://www.boobooke.com/v/bbk1591
    *I$~OrTz)L177152在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP最基本的脚本录制回放的功能,希望对大家有帮助。
    US2Z%]&IhUF177152[V] 小强老师系列作品:QTP三种录制方式51Testing软件测试网Z`,O%?7}Z|
    http://www.boobooke.com/v/bbk1516
    5u5t.Z2EL177152这是该系列讲座的第三集。在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP录制脚本的三种模式,希望对大家有帮助。
    P{9@3? e^3uSR177152[V] 小强老师系列作品:QTP检查点之研究
    .j_@;xAQq.Z,XF177152http://www.boobooke.com/v/bbk1595
    o#gw3JC{q&SS177152本集是承接上集,小强老师向刚刚接触QTP的朋友介绍了QTP的重要功能 - 检查点,希望对大家有帮助。
    c_'DA8C"y^177152[V] 小强老师系列作品:QTP参数化之研究51Testing软件测试网"},EM0S'c,A)zt
    http://www.boobooke.com/v/bbk1599
    xUr#q0F'KVv177152本集是承接上集,小强老师向刚刚接触QTP的朋友介绍了QTP重要的功能-参数化, 希望对大家有帮助。51Testing软件测试网 Goh]*nt xF
    [V] 小强老师系列作品:QTP的常用工具阐释
    /q%gau}[p!r177152http://www.boobooke.com/v/bbk158951Testing软件测试网4^t{G9` D
    在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP附带的常用工具,希望对大家有帮助。
    k(`5`?r7C(Q177152[V] 小强老师系列作品:QTP插件分析51Testing软件测试网$E$VsRk)WS9zAIYY
    http://www.boobooke.com/v/bbk168951Testing软件测试网%\9l9@"qa
    在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP插件的基本知识,希望对大家有帮助。51Testing软件测试网H6W(ND"V_{,boU_
    [V] 小强老师系列作品:QTP认证考试试题分析一则51Testing软件测试网%AUAdyB
    http://www.boobooke.com/v/bbk1575
    k$U| S9C3U|*W177152小强老师针对想入行软件测试行业的菜鸟级别的朋友,推出了零基础学习软件测试系列培训视频。
    D5j?J6Qa0ca177152在本集中,小强老师根据自己的经验和体会,向刚刚接触QTP的朋友介绍了如何QTP认证考试的一道典型题目的分析.
    _pI2n_`mPs{177152[V] 小强老师系列作品:QTP中VBS介绍
    [f?N%\X:grv'Pc e k177152http://www.boobooke.com/v/bbk1621
    ]'Gi{(V S177152在本集中,小强老师给大家介绍了QTP脚本语言VBS的基本知识,希望大家喜欢。51Testing软件测试网&e-Y5wa-E_L
    [V] 小强老师系列作品:QTP之场景恢复(Recovery Scenarios)
    #@o"d*zgz177152http://www.boobooke.com/v/bbk1692
    !k,{F'x b aD j-e177152在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP的场景恢复(Recovery Scenarios)的基本知识,希望对大家有帮助。
    /m1@Qy/P7Ar(_To!r1o177152[V] 小强老师系列作品:QTP中的虚拟对象入门51Testing软件测试网%WM"J-h F
    http://www.boobooke.com/v/bbk1695
    .aE8PR Xf"@177152在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP中虚拟对象的基本知识,希望对大家有帮助。51Testing软件测试网6VT~hX2w/K y7OV
    [V] 小强老师系列作品:QTP之专家视图和测试脚本开发51Testing软件测试网 s,bTK&S6t+TR
    http://www.boobooke.com/v/bbk1690
    4y3YK*@T:c9` tjb ~v m`177152在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP的专家视图,并介绍了脚本开发的几个重要对象,希望对大家有帮助。
    s)J$Rv G)R(a177152[V] 小强老师系列作品:QTP之描述性编程
    ut4T-|w"l2O177152http://www.boobooke.com/v/bbk1691
    su!j0Tu_'kDE,y177152在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP的描述性编程的基本知识,希望对大家有帮助。51Testing软件测试网)t [ D#R^5o;r u
    [V] 小强老师系列作品:QTP之测试脚本开发规范51Testing软件测试网 IA8P6G/t @4U(M W+ar
    http://www.boobooke.com/v/bbk1693
    3UOXk`1^177152在本集中,小强老师向刚刚接触QTP的朋友介绍了QTP脚本开发的基本规范,希望对大家有帮助。51Testing软件测试网FH`HN.C
    [V] 小强老师系列作品:QTP脚本的增强一则
    T [BpK Tg0F177152http://www.boobooke.com/v/bbk159251Testing软件测试网;wJ3h.jG)C
    本集是承接上集,小强老师向刚刚接触QTP的朋友介绍了如何对录制的脚本进行增强,希望对大家有帮助。51Testing软件测试网)my#?.p`x"zX
    51Testing软件测试网*]v9t&tHF%?LF
    小强作品:QTP之Excel操作
    Hc`%nw177152http://www.boobooke.com/v/bbk2835
    5oEI'i5vG7A%c17715251Testing软件测试网:Nq S}On/Y
    小强作品:QTP之描述性编程实例
    )D7R9|vY8`[2QW177152http://www.boobooke.com/v/bbk283651Testing软件测试网)E/` ~8\f;Z3RBIg"l
    51Testing软件测试网;V!e8X^!m,k!m-q`
    小强作品:QTP之DLL
    /C {ZP6U(y0y:X)S177152小强老师又出新品,QTP中使用动态库DLL技术,希望大家喜欢!
    &TK5p'~I#x177152http://www.boobooke.com/v/bbk2834
    |I[@.}-?f+fTj177152==============================================================================
    uW-GVF0gW&GWs t177152Happy1tiann作品:使用QTP连接数据库
    .S3oH DFI#Dy!h,J177152在线观看:http://www.boobooke.com/v/bbk201751Testing软件测试网%M gW,~(z
    Happy1tian作品:QTP自动化对象模型51Testing软件测试网+AY/HNX
    在线观看:http://www.boobooke.com/v/bbk209851Testing软件测试网pZ0|;^x n,ei
    Happy1tian作品:QTP实战示例51Testing软件测试网'M0\Q[%x!vM
    在线观看:http://www.boobooke.com/v/bbk2099

    转自:http://www.51testing.com/?uid-84226-action-viewspace-itemid-132060

  • [总结]性能测试

    musk 发布于 2008-04-29 11:41:00

        从事软件测试快1年了,各方面的书籍和知识也看了不少,实践却不是很多,虽然学了不少非测试的知识,对软件工程也算有了比较清晰的认识,但对于把测试作为主要学习对象的我来说。测试上的技术还远远不够,测试工具的使用有待进一步的加强。所以,这里也把一些知识总结一下,方便自己以后查询和复习。

    1.介绍

    软件性能:是一种指标,是参考一定标准的表现,表明软件系统或构件对于其及时性要求的符合程度,即在相应的硬件和软件环境下,该软件系统应该达到的一个水平。另外,性能是一种特性,可以用时间和空间来进行度量。

    3种角度看性能:(1)用户角度:直观印象,主要是从响应时间来看;(2)管理员角度:建立在响应时间基础上,要考虑系统状态如系统资源的利用率,系统的扩展性和系统的稳定性;(3)开发人员:主要从系统架构,数据库设计,代码的优化来看待。

    2.主要关键词

    响应时间:对请求作出响应所需要的时间。web的普遍标准是2/5/10秒,即2秒以内的客户响应被认为是“非常好非常吸引人”的,5秒内是“比较不错”的,10秒是能接受的上限。但是响应时间具有相对性,如:一个月才进行一次的操作,20分钟是一个可以接受的等待时间。即:具体环境具体判断。

    用户并发数:主要取决于服务端和客户端的性能。对服务端来说,每个用户和服务断都是离散的,用比较形象的话来说,就是一群小孩对着一堵墙踢球,每个小孩都有一个球,具体多少个小孩,每个小孩每次对着墙踢球的时间是不确定的或有一定规律的。而墙能承受多少小孩踢球而不跨掉,便是一个用户并发数的问题。而对客户端来说,每个小孩踢球的时间都是根据自己的实际情况来决定的,即根据用户实际的业务场景来决定的。所以,系统的服务端能承受的最大并发访问数主要取决于并发用户数和业务场景,一般可以通过对服务器日志的分析可以得到。                                                                                 并发数确定的理论公式:C=nL/T (C是平均的并发用户数,n是login session“用户从登陆系统到退出系统的时间段”,T是考察的时间段即用户可能使用系统的总时间段)C^=C+3根号C。

    例如:一OA系统,该系统有200用户,每天大约100人访问系统,一天内用户从登陆系统到退出系统的平均时间是4小时,一天内,用户最多使用8小时。

    那么可以得到C=200*4/8=100     (并发用户数)

              C^=100+3*根号100    (最大用户数)

    吞吐量:单位时间内系统处理的客户请求的数量,主要体现软件系统的性能承载能力。

    吞吐量的单位不定,可以是:请求数/秒,人数/天,业务数/小时……对于web系统来说,常用的是请求数(点击数)/秒或字节数/秒来体现

    计算公式:F=N*R/T

    F代表吞吐量,N代表Virtuae User的个数,R代表每个用户的请求数,T代表性能测试的时间

    可以看到上列公式在图表里显示理论上是一根平滑的斜线,理论上随着用户数的请求数增加,时间也跟着增加,如果实际测试中。系统的性能出问题时,即用户数增加到一定数量,系统不能及时处理,此时,图表表现出来就会发生变化。

    一般来说,2个不同的系统可能具有不同的用户数和用户使用模式,但如果具有基本一致的吞吐量,则可以说,他们具有基本相同的平均处理能力。

    性能计数器(Counter)是描述服务器或操作系统性能的一些数据指标。例如,对windows操作系统来说,使用内存数,进程时间等都是常见的计数器。

    思考时间:指用户在进行操作时,每个请求之间的间隔时间。

    待续。。。

  • Web的系统测试方法

    U2GIGN 发布于 2009-05-05 13:42:23

    Web的系统测试方法


    随着Internet和Intranet/Extranet的快速增长,Web已经对商业、工业、银行、财政、教育、政府和娱乐及我们的工作和生活产生了深远的影响。许多传统的信息和数据库系统正在被移植到互联网上,电子商务迅速增长,早已超过了国界。范围广泛的、复杂的分布式应用正在Web环境中出现。Web的流行和无所不在,是因为它能提供支持所有类型内容连接的信息发布,容易为最终用户存取。

      Yogesh Deshpande和Steve Hansen在1998年就提出了Web工程的概念。Web工程作为一门新兴的学科,提倡使用一个过程和系统的方法来开发高质量的基于Web的系统。它"使用合理的、科学的工程和管理原则,用严密的和系统的方法来开发、发布和维护基于Web的系统"。目前,对于web工程的研究主要是在国外开展的,国内还刚刚起步。

      在基于Web的系统开发中,如果缺乏严格的过程,我们在开发、发布、实施和维护Web的过程中,可能就会碰到一些严重的问题,失败的可能性很大。而且,随着基于Web的系统变得越来越复杂,一个项目的失败将可能导致很多问题。当这种情况发生时,我们对Web和Internet的信心可能会无法挽救地动摇,从而引起Web危机。并且,Web危机可能会比软件开发人员所面对的软件危机更加严重、更加广泛。

      在Web工程过程中,基于Web系统的测试、确认和验收是一项重要而富有挑战性的工作。基于Web的系统测试与传统的软件测试不同,它不但需要检查和验证是否按照设计的要求运行,而且还要测试系统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试。然而,Internet和Web媒体的不可预见性使测试基于Web的系统变得困难。因此,我们必须为测试和评估复杂的基于Web的系统研究新的方法和技术。

      一般软件的发布周期以月或以年计算,而Web应用的发布周期以天计算甚至以小时计算。Web测试人员必须处理更短的发布周期,测试人员和测试管理人员面临着从测试传统的C/S结构和框架环境到测试快速改变的Web应用系统的转变。

      一、功能测试

      1、链接测试

      链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。链接测试可分为三个方面。首先,测试所有链接是否按指示的那样确实链接到了该链接的页面;其次,测试所链接的页面是否存在;最后,保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问。

      链接测试可以自动进行,现在已经有许多工具可以采用。链接测试必须在集成测试阶段完成,也就是说,在整个Web应用系统的所有页面开发完成之后进行链接测试。

      2、表单测试

      当用户给Web应用系统管理员提交信息时,就需要使用表单操作,例如用户注册、登陆、信息提交等。在这种情况下,我们必须测试提交操作的完整性,以校验提交给服务器的信息的正确性。例如:用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等。如果使用了默认值,还要检验默认值的正确性。如果表单只能接受指定的某些值,则也要进行测试。例如:只能接受某些字符,测试时可以跳过这些字符,看系统是否会报错。

      3、Cookies测试

      Cookies通常用来存储用户信息和用户在某应用系统的操作,当一个用户使用Cookies访问了某一个应用系统时,Web服务器将发送关于用户的信息,把该信息以Cookies的形式存储在客户端计算机上,这可用来创建动态和自定义页面或者存储登陆等信息。

      如果Web应用系统使用了Cookies,就必须检查Cookies是否能正常工作。测试的内容可包括Cookies是否起作用,是否按预定的时间进行保存,刷新对Cookies有什么影响等。

      4、设计语言测试

      Web设计语言版本的差异可以引起客户端或服务器端严重的问题,例如使用哪种版本的HTML等。当在分布式环境中开发时,开发人员都不在一起,这个问题就显得尤为重要。除了HTML的版本问题外,不同的脚本语言,例如Java、JavaScript、 ActiveX、VBScript或Perl等也要进行验证。

      5、数据库测试

      在Web应用技术中,数据库起着重要的作用,数据库为Web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。在Web应用中,最常用的数据库类型是关系型数据库,可以使用SQL对信息进行处理。

      在使用了数据库的Web应用系统中,一般情况下,可能发生两种错误,分别是数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起的,针对这两种情况,可分别进行测试。

      二、性能测试

      1、连接速度测试

      用户连接到Web应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网。当下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。如果Web系统响应时间太长(例如超过5秒钟),用户就会因没有耐心等待而离开。

      另外,有些页面有超时的限制,如果响应速度太慢,用户可能还没来得及浏览内容,就需要重新登陆了。而且,连接速度太慢,还可能引起数据丢失,使用户得不到真实的页面。

      2、负载测试

      负载测试是为了测量Web系统在某一负载级别上的性能,以保证Web系统在需求范围内能正常工作。负载级别可以是某个时刻同时访问Web系统的用户数量,也可以是在线数据处理的数量。例如:Web应用系统能允许多少个用户同时在线?如果超过了这个数量,会出现什么现象?Web应用系统能否处理大量用户对同一个页面的请求?

      3、压力测试

      负载测试应该安排在Web系统发布以后,在实际的网络环境中进行测试。因为一个企业内部员工,特别是项目组人员总是有限的,而一个Web系统能同时处理的请求数量将远远超出这个限度,所以,只有放在Internet上,接受负载测试,其结果才是正确可信的。

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

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

      三、可用性测试

      1、导航测试

      导航描述了用户在一个页面内操作的方式,在不同的用户接口控制之间,例如按钮、对话框、列表和窗口等;或在不同的连接页面之间。通过考虑下列问题,可以决定一个Web应用系统是否易于导航:导航是否直观?Web系统的主要部分是否可通过主页存取?Web系统是否需要站点地图、搜索引擎或其他的导航帮助?

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

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

      Web应用系统的层次一旦决定,就要着手测试用户导航功能,让最终用户参与这种测试,效果将更加明显。

      2、图形测试

      在Web应用系统中,适当的图片和动画既能起到广告宣传的作用,又能起到美化页面的功能。一个Web应用系统的图形可以包括图片、动画、边框、颜色、字体、背景、按钮等。图形测试的内容有:

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

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

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

      (4)图片的大小和质量也是一个很重要的因素,一般采用JPG或GIF压缩。

      3、内容测试

      内容测试用来检验Web应用系统提供信息的正确性、准确性和相关性。

      信息的正确性是指信息是可靠的还是误传的。例如,在商品价格列表中,错误的价格可能引起财政问题甚至导致法律纠纷;信息的准确性是指是否有语法或拼写错误。这种测试通常使用一些文字处理软件来进行,例如使用Microsoft Word的"拼音与语法检查"功能;信息的相关性是指是否在当前页面可以找到与当前浏览信息相关的信息列表或入口,也就是一般Web站点中的所谓"相关文章列表"。

      4、整体界面测试

      整体界面是指整个Web应用系统的页面结构设计,是给用户的一个整体感。例如:当用户浏览Web应用系统时是否感到舒适,是否凭直觉就知道要找的信息在什么地方?整个Web应用系统的设计风格是否一致?
    对整体界面的测试过程,其实是一个对最终用户进行调查的过程。一般Web应用系统采取在主页上做一个调查问卷的形式,来得到最终用户的反馈信息。

      对所有的可用性测试来说,都需要有外部人员(与Web应用系统开发没有联系或联系很少的人员)的参与,最好是最终用户的参与。

      四、客户端兼容性测试

      1、平台测试

      市场上有很多不同的操作系统类型,最常见的有Windows、Unix、Macintosh、Linux等。Web应用系统的最终用户究竟使用哪一种操作系统,取决于用户系统的配置。这样,就可能会发生兼容性问题,同一个应用可能在某些操作系统下能正常运行,但在另外的操作系统下可能会运行失败。

      因此,在Web系统发布之前,需要在各种操作系统下对Web系统进行兼容性测试。

      2、浏览器测试

      浏览器是Web客户端最核心的构件,来自不同厂商的浏览器对Java,、JavaScript、 ActiveX、 plug-ins或不同的HTML规格有不同的支持。例如,ActiveX是Microsoft的产品,是为Internet Explorer而设计的,JavaScript是Netscape的产品,Java是Sun的产品等等。另外,框架和层次结构风格在不同的浏览器中也有不同的显示,甚至根本不显示。不同的浏览器对安全性和Java的设置也不一样。

      测试浏览器兼容性的一个方法是创建一个兼容性矩阵。在这个矩阵中,测试不同厂商、不同版本的浏览器对某些构件和设置的适应性。

      五、安全性测试

      Web应用系统的安全性测试区域主要有:

      (1)现在的Web应用系统基本采用先注册,后登陆的方式。因此,必须测试有效和无效的用户名和密码,要注意到是否大小写敏感,可以试多少次的限制,是否可以不登陆而直接浏览某个页面等。

      (2)Web应用系统是否有超时的限制,也就是说,用户登陆后在一定时间内(例如15分钟)没有点击任何页面,是否需要重新登陆才能正常使用。

      (3)为了保证Web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进了日志文件、是否可追踪。

      (4)当使用了安全套接字时,还要测试加密是否正确,检查信息的完整性。

      (5)服务器端的脚本常常构成安全漏洞,这些漏洞又常常被黑客利用。所以,还要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。

      六、总结

      本文从功能、性能、可用性、客户端兼容性、安全性等方面讨论了基于Web的系统测试方法。

      基于Web的系统测试与传统的软件测试既有相同之处,也有不同的地方,对软件测试提出了新的挑战。基于Web的系统测试不但需要检查和验证是否按照设计的要求运行,而且还要评价系统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试。

  • 典型的测试周期的十大阶段

    U2GIGN 发布于 2009-05-05 13:41:49

    阶段 1 - 编写测试目标和主计划文档
    测试过程的第一步,是以文档形式明确测试目标,以及如何实现这些目标。确定测试的所有相关因素并形成文档是非常重要的,这包括测试假定、时间表、测试优先级、测试级别、职责、预期效果和决定因素、风险及其规避等等。完成计划后,将得到主测试计划文档,它在整个测试生命周期中是一个动态的文档。

    在这一阶段需要的源文档是功能规范文档和代码的高级版本发布时间表。

    请参阅本章前面“制订测试策略”中,测试小组在编制主测试计划时应考虑的测试区域和测试类型。

    阶段 2 - 编写详细测试计划
    详细测试计划描述所有用户或帐号的各种不同使用场景和进入路径。这些测试使用场景以应用程序设计过程中确定的使用场景为基础。详细测试计划还确定要测试的每个场景的优先级。

    这一阶段需要的源文档是功能规范文档和高级应用程序和体系结构设计。

    阶段 3 - 审核详细测试计划
    开发小组必须审核详细测试计划,确保它符合应用程序的测试要求。测试计划获得批准后,才可以开始测试。

    阶段 4 - 定义测试案例
    应根据已批准的详细测试计划来产生详细测试案例,定义要在应用程序上执行的***作、输入的数据和预期的结果,以及记录结果时应采用的预定格式。在这个阶段,应按照要测试的功能的重要性来确定测试案例的优先级。(有时需要将详细测试计划中的每个场景都扩充成详细测试案例文档中的一个或多个案例。)另外,您可能需要制作一个测试案例执行顺序文档,从而节省执行时间。

    阶段 5 - 测试应用程序
    在实际测试阶段,您应该以端对端的方式测试所有应用程序路径,以确保它们符合功能规范。测试小组使用缺陷跟踪工具向项目管理人员报告测试过程中发现的所有缺陷。另外,测试小组可能要隔离这些缺陷。

    此阶段需要的文档是详细测试案例。

    阶段 6 - 确定生成/测试周期是否完成
    仅在一轮测试过后便准备发布应用程序是不太可能的。是否重复执行另一轮生成和测试取决于很多因素,包括现存错误的严重性、预算限制和时间期限等。您的项目计划应该允许在发布前重复进行若干次生成/测试。

    阶段 7 - 举行鉴定会议
    测试小组、项目管理小组和开发小组将在鉴定会议中讨论缺陷的状况,以及哪个缺陷指定给哪个开发人员去解决。

    阶段 8 - 消除错误
    开发小组必须协同工作,消除鉴定会议上确定的所有错误。完成之后,将每个错误返回给相应的负责人(提交该错误的测试工程师)进行验证,如果验证合格就结束这个错误。错误消除之后,将每个错误返回给相应的负责人(验证该错误的测试工程师),如果该错误已修正就结束,否则就采取进一步行动。

    阶段 9 - 编写测试报告
    测试报告包含测试计划中列出的具体项目的状态信息,以及按严重程度分类的缺陷说明信息。

    该报告对于发布决策会议(将在以下小节讨论)非常重要。

    阶段 10 - 发布决策会议
    测试完成后,程序管理小组举行发布决策会议,确定是否可以发布该应用程序。除了项目管理小组外,测试小组和开发小组都应参加此会议。

    此会议要用到的文件主要是发布标准(在主测试计划阶段确定)和测试报告。

  • 老徐最近为某大型银行测试中心制作的“性能测试分析报告评审规范”,分享给大家!

    cloudxu 发布于 2007-03-03 23:54:15

     

    老徐的本家:www.testfocus.com.cn   ;www.xsz.com.cn

    欢迎大家访问!

    1      引言

    1.1   编写目的

    本文档明确性能测试分析报告的评审行为,明确评审过程中使用的各项指标,使性能测试分析报告评审相关人员能够依据此规范检查性能测试分析报告的内容填写是否符合模版要求,检查性能测试分析报告是否正确反映了性能测试的完整过程,检查性能测试分析报告是否符合本规范中规定的质量标准。

    1.2   适用范围

    ü     性能检测测试分析报告评审

    ü     性能诊断测试分析报告评审

    ü     性能调优测试分析报告评审

    ü     容量规划测试分析报告评审

    1.3   预期读者

    参与性能测试分析报告评审的各方面人员,包括:

    ü     测试管理部测试经理

    ü     技术测试部技术测试经理、技术测试分析师、技术测试工程师

    ü     项目(群)组项目经理、技术经理及其他相关人员

    ü     业务部门相关人员

    ü     数据中心相关人员

    1.4   参考资料

    ü     《信息技术管理部测试管理办法》

    ü     《信息技术管理部性能测试规程》

     

    2      与评审规程的关系

    在评审规程中规定性能测试分析报告的评审过程和具体活动,包括评审内容的准备、评审会议的召集、评审会议、评审结果的发布、评审结果的跟踪。

    本规范为评审规程中的具体活动提供可依据的方法、判断标准以及相关模版。

    3      标准与模版

    3.1 活动:评审内容的准备

    3.1.1准入标准

    性能测试计划中的任务完成率=100%,包括所有开发任务、所有执行任务、所有分析任务

     

    3.1.2准出标准

    性能测试分析报告经过技术测试经理审核并签字

    性能测试相关所有文档已经放置于可供获取的位置,包括性能测试计划、性能测试方案、性能测试场景/脚本、数据文件、执行日志、性能测试分析报告。

     

    3.1.3模版

    N/A

    3.2 活动:评审会议的召集

    3.2.1准入标准

     

    3.2.2准出标准

    会议召集通知书已经发送给所有相关评审方,包括:被测应用系统所属项目(群)组、业务部门、数据中心、测试管理部、技术测试部、业务测试部。

    性能测试分析报告和所有相关文档同时随会议召集通知书发送给了所有相关评审方。

    3.2.3模版

    名称:《性能测试分析报告评审会议通知书》。

    内容:

    ü     发送信息,应包括姓名、Email、座机、手机、角色、所属部门

    ü     项目(群)组名称

    ü     会议召集时间

    ü     会议持续时间

    ü     会议地点

    ü     参加人员和角色及部门名称

    ü     主持人和角色及部门名称

    ü     记录人和角色及部门名称

    ü     会议议程

    ü     期望达成目标

    ü     附件名称及简要说明

    ü     初审意见

    3.3 活动:评审会议

    3.3.1准入标准

    ü     所有与会人员准时到场(现场/或视频)

    ü     所有与会人员已经预先审阅了性能测试分析报告及相关文档

    ü     所有与会人员已经在《性能测试分析报告评审会议通知书》中填写了初审意见并发送给会议主持人

    ü     会议主持人已组织性能测试实施人员对各方与会人员的初审意见进行了汇总和分析

    3.3.2准出标准

    ü     性能测试背景评审完成

    o       应具备详细的、明确的性能测试工作背景描述

    ü     性能测试需求评审完成

    o       性能测试需求应明确表明本次性能测试的类型,应为性能检测测试、性能诊断测试、性能调优测试或者容量规划测试

    o       性能测试需求中应具备明确的性能测试范围

    ü     性能测试目标评审完成

    o       性能测试目标中应具备期望达到的明确的响应时间指标

    o       性能测试目标中应具备期望达到的明确的处理能力指标

    o       性能测试目标中应具备期望达到的明确的资源利用率指标

    o       性能测试目标中应具备期望达到的明确的稳定性测试时间长度指标以及交易成功率指标

    o       性能测试目标中应对响应时间和处理能力指标进行明确的定义

    ü     性能测试模型评审完成

    o       性能测试模型中应具备明确的测试场景名称以及使用该场景的原因说明

    o       测试场景中应具备明确的虚拟用户名称、数量/百分比、思考时间(ThinkTime)、检查点、测试数据说明

    o       测试场景应具备明确的测试环境说明,包括应用版本、网络架构、应用技术架构、服务器硬件设备信息、应用平台的版本和关键参数设置信息

    o       测试场景应具备明确的被测应用系统基础数据信息,包括基础数据量、类型(模拟数据/生产数据)

    ü     性能测试过程评审完成

    o       性能测试过程包含了性能测试规程中规定的所有不可裁减的测试任务

    o       每项测试任务应具备明确的测试方法说明

    o       每项测试任务应具备明确的状态(完成/未完成)

    o       若某项测试任务未完成,则该项测试任务应具备明确的未完成原因以及解决方法说明

    ü     性能测试单项任务数据分析评审完成

    o       每个单项任务应具备明确的测试目的

    o       每个单项任务应具备明确的测试数据分析

    ü     性能测试结论评审完成

    o       每个性能测试目标应具备至少一条结论

    o       每条结论应针对一个具体的性能测试目标

    ü     性能测试缺陷评审完成

    o       所有已发现缺陷都具备了明确的状态(已解决/未解决)

    o       所有遗留缺陷都具备了明确的追踪解决方案(监督责任人、期望解决结果、期望解决时间、解决方法、解决责任人)

    ü     性能测试分析报告评审完成

    o       若有一项评审结果为“不通过”,则此项为“不通过”

    ü     所有与会各方人员签字认可评审结果

    o       若有一方人员未到场,此次评审视为无效。评审会议结束后,将会议记录与会议结论发送给缺席方人员进行离线评审。

    o       获得缺席方离线评审意见后,修订评审结果,此次评审方可视为有效。

     

    3.3.3模版

     

    名称:《性能测试分析报告评审报告》

    内容:

    ü     项目(群)组名称

    ü     会议召集时间

    ü     会议地点

    ü     与会人员、角色及部门名称

    ü     主持人员、角色及部门名称

    ü     记录人员、角色及部门名称

    ü     性能测试背景评审结果:通过/不通过

    ü     性能测试需求评审结果:通过/不通过

    ü     性能测试目标评审结果:通过/不通过

    ü     性能测试模型评审结果:通过/不通过

    ü     性能测试过程评审结果:通过/不通过

    ü     性能测试单项任务数据分析评审结果:通过/不通过

    ü     性能测试结论评审结果:通过/不通过

    ü     性能测试缺陷评审结果:通过/不通过

    ü     性能测试分析报告评审结果:通过/不通过

    ü     性能测试评审会议有效性:有效/无效

    ü     参与各方人员签字

    3.4 活动:评审结果的发布

    3.4.1准入标准

    ü     性能测试评审会议有效性:有效

    ü     性能测试分析报告:通过

    3.4.2准出标准

    ü     性能测试分析报告评审报告已经发送给所有相关各方,应包括:项目实施管理条线、业务IT管理条线、相关业务部门、数据中心、项目(群)组、测试管理部、技术测试部、业务测试部等

    ü     性能测试分析报告评审报告由技术测试部备案

     

    3.4.3模版

    N/A

     

    3.5 活动:评审结果的跟踪

    3.5.1准入标准

  • 时髦白领英语100句

    kumas 发布于 2008-10-23 10:41:13

    1.I’m an office worker. 我是上班族。

    2.I work for the government. 我在政府机关做事。

    3.I’m happy to meet you. 很高兴见到你。

    4.I like your sense of humor. 我喜欢你的幽默感。

    5.I’m glad to see you again. 很高兴再次见到你。

    6.I’ll call you. 我会打电话给你。

    7.I feel like sleeping/ taking a walk. 我想睡/散步。

    8.I want something to eat. 我想吃点东西。

    9.I need your help. 我需要你的帮助。

    10.I would like to talk to you for a minute. 我想和你谈一下。

    11.I have a lot of problems. 我有很多问题。

    12.I hope our dreams come true. 我希望我们的梦想成真。

    13.I’m looking forward to seeing you. 我期望见到你。

    14.I’m supposed to go on a diet / get a raise. 我应该节食/涨工资。

    15.I heard that you’re getting married. Congratulations.听说你要结婚了,恭喜!

    16.I see what your mean. 我了解你的意思。

    17.I can’t do this. 我不能这么做。

    18.Let me explain why I was late. 让我解释迟到的理由。

    19.Let’s have a beer or something. 咱们喝点啤酒什么的。

    20.Where is your office? 你们的办公室在哪?

    21.What is your plan? 你的计划是什么? LNM中国英语学习网
    LNM中国英语学习网
    22.When is the store closing? 这家店什么时候结束营业? LNM中国英语学习网
    LNM中国英语学习网
    23.Are you sure you can come by at nine? 你肯定你九点能来吗? LNM中国英语学习网
    LNM中国英语学习网
    24.Am I allowed to stay out past 10? 我可以十点过后再回家吗? LNM中国英语学习网
    LNM中国英语学习网
    25.The meeting was scheduled for two hours, but it is now over yet. 会议原定了两个小时,不过现在还没有结束。LNM中国英语学习网
    LNM中国英语学习网
    26.Tom’s birthday is this week. 汤姆的生日就在这个星期。 LNM中国英语学习网
    LNM中国英语学习网
    27.Would you care to see it/ sit down for a while? 你要不要看/坐一会呢? LNM中国英语学习网
    LNM中国英语学习网
    28.Can you cover for me on Friday/help me/ tell me how to get there? 星期五能不能请你替我个班/你能帮我吗/你能告诉我到那里怎么走吗? LNM中国英语学习网
    LNM中国英语学习网
    29.Could you do me a big favor? 能否请你帮我个忙? LNM中国英语学习网
    LNM中国英语学习网
    30.He is crazy about Crazy English. 他对疯狂英语很着迷。 LNM中国英语学习网
    LNM中国英语学习网
    31.Can you imagine how much he paid for that car?你能想象他买那车花了多少钱吗? LNM中国英语学习网
    LNM中国英语学习网
    32.Can you believe that I bought a TV for $25? LNM中国英语学习网
    LNM中国英语学习网
    33.Did you know he was having an affair/cheating on his wife? 你知道他有外遇了吗?/欺骗他的妻子吗? LNM中国英语学习网
    LNM中国英语学习网
    34.Did you hear about the new project? 你知道那个新项目吗? LNM中国英语学习网
    LNM中国英语学习网
    35.Do you realize that all of these shirts are half off? 你知道这些衬衫都卖半价了吗? LNM中国英语学习网
    LNM中国英语学习网
    36.Are you mind if I take tomorrow off? 你介意我明天请假吗? LNM中国英语学习网
    LNM中国英语学习网
    37.I enjoy working with you very much. 我很喜欢和你一起工作。 LNM中国英语学习网
    LNM中国英语学习网
    38.Did you know that Stone ended up marrying his secretary? 你知道吗?斯通最终和他的秘书结婚了。 LNM中国英语学习网
    LNM中国英语学习网
    39.Let’s get together for lunch. 让我们一起吃顿午餐吧。 LNM中国英语学习网
    LNM中国英语学习网
    40.How did you do on your test? 你这次考试的结果如何?

    41.Do you think you can come? 你认为你能来吗? LNM中国英语学习网
    LNM中国英语学习网
    42.How was your weekend ? 你周末过得怎么样? LNM中国英语学习网
    LNM中国英语学习网
    43.Here is my card. 这是我的名片。 LNM中国英语学习网
    LNM中国英语学习网
    44.He is used to eating out all the time. 他已经习惯在外面吃饭了。 LNM中国英语学习网
    LNM中国英语学习网
    45.I’m getting a new computer for birthday present. 我得到一台电脑作生日礼物。 LNM中国英语学习网
    LNM中国英语学习网
    46.Have you ever driven a BMW? 你有没有开过“宝马”? LNM中国英语学习网
    LNM中国英语学习网
    47.How about if we go tomorrow instead? 我们改成明天去怎么样? LNM中国英语学习网
    LNM中国英语学习网
    48.How do you like Hong Kong? 你喜欢香港吗? LNM中国英语学习网
    LNM中国英语学习网
    49.How do you want your steak? 你的牛排要几分熟? LNM中国英语学习网
    LNM中国英语学习网
    50.How did the game turn out? 球赛结果如何? LNM中国英语学习网
    LNM中国英语学习网
    51.How did Mary make all of her money? 玛丽所有的钱是怎么赚到的? LNM中国英语学习网
    LNM中国英语学习网
    52.How was your date? 你的约会怎么样? LNM中国英语学习网
    LNM中国英语学习网
    53.How are you doing with your new boss? 你跟你的新上司处得如何? LNM中国英语学习网
    LNM中国英语学习网
    54.How should I tell him the bad news? 我该如何告诉他这个坏消息? LNM中国英语学习网
    LNM中国英语学习网
    55.How much money did you make? 你赚了多少钱? LNM中国英语学习网
    LNM中国英语学习网
    56.How much does it cost to go abroad? 出国要多少钱? LNM中国英语学习网
    LNM中国英语学习网
    57.How long will it take to get to your house? 到你家要多久? LNM中国英语学习网
    LNM中国英语学习网
    58.How long have you been here? 你在这里多久了? LNM中国英语学习网
    LNM中国英语学习网
    59.How nice/pretty/cold/funny/stupid/boring/interesting. LNM中国英语学习网
    LNM中国英语学习网
    60.How about going out for dinner? 出去吃晚餐如何?
    LNM中国英语学习网

    61.I’m sorry that you didn’t get the job. 很遗憾,你没有得到那份工作。 LNM中国英语学习网
    LNM中国英语学习网
    62.I’m afraid that it’s not going to work out. 我恐怕这事不会成的。 LNM中国英语学习网
    LNM中国英语学习网
    63.I guess I could come over. 我想我能来。 LNM中国英语学习网
    LNM中国英语学习网
    64.Is it okay to smoke in the office? 在办公室里抽烟可以吗? LNM中国英语学习网
    LNM中国英语学习网
    65.It was kind of exciting. 有点剌激。 LNM中国英语学习网
    LNM中国英语学习网
    66.I know what you want. 我知道你想要什么。 LNM中国英语学习网
    LNM中国英语学习网
    67.Is that why you don’t want to go home? 这就是你不想回家的原因吗? LNM中国英语学习网
    LNM中国英语学习网
    68.I’m sure we can get you a great / good deal. 我很肯定我们可以帮你做成一笔好交易。 LNM中国英语学习网
    LNM中国英语学习网
    69.Would you help me with the report? 你愿意帮我写报告吗? LNM中国英语学习网
    LNM中国英语学习网
    70.I didn’t know he was the richest person in the world.我不知道他是世界上最有钱的人。 LNM中国英语学习网
    LNM中国英语学习网
    71.I’ll have to ask my boss/wife first.我必须先问一下我的老板/老婆。 LNM中国英语学习网
    LNM中国英语学习网
    72.I take it you don’t agree. 这么说来,我认为你是不同意。 LNM中国英语学习网
    LNM中国英语学习网
    73.I tried losing weight, but nothing worked. 我曾试着减肥,但是毫无效果。 LNM中国英语学习网
    LNM中国英语学习网
    74.It doesn’t make any sense to get up so early.那么早起来没有任何意义。 LNM中国英语学习网
    LNM中国英语学习网
    75.It took years of hard work to speak good English. 讲一口流利的英语需要多年的刻苦操练。 LNM中国英语学习网
    LNM中国英语学习网
    76.It feels like spring/ I’ve been here before. 感觉好象春天到了/我以前来过这里。LNM中国英语学习网
    LNM中国英语学习网
    77.I wonder if they can make it. 我在想他们是不是能办得到。  LNM中国英语学习网
    LNM中国英语学习网
    78.It’s not as cold / hot as it was yesterday. 今天不想昨天那么冷/热。 LNM中国英语学习网
    LNM中国英语学习网
    79.It’s not his work that bothers me; it’s his attitude. 困扰我的不是他的工作,而是他的态度。 LNM中国英语学习网
    LNM中国英语学习网
    80.It sounds like you enjoyed it. 听起来你好象蛮喜欢的。

    81.It seems to me that be would like to go back home. 我觉得他好象想要回家。 LNM中国英语学习网
    LNM中国英语学习网
    82.It looks very nice. 看起来很漂亮。 LNM中国英语学习网
    LNM中国英语学习网
    83.Is everything under control? 一切都在掌握之中吗? LNM中国英语学习网
    LNM中国英语学习网
    84.I thought you could do a better job. 我以为你的表现会更好。 LNM中国英语学习网
    LNM中国英语学习网
    85.It’s time for us to say “No” to America. 是我们对美国说不的时候了。 LNM中国英语学习网
    LNM中国英语学习网
    86.The show is supposed to be good. 这场表演应当是相当好的。 LNM中国英语学习网
    LNM中国英语学习网
    87.It really depends on who is in charge. 那纯粹要看谁负责了。 LNM中国英语学习网
    LNM中国英语学习网
    88.It involves a lot of hard work. 那需要很多的辛勤工作。 LNM中国英语学习网
    LNM中国英语学习网
    89.That might be in your favor. 那可能对你有利。 LNM中国英语学习网
    LNM中国英语学习网
    90.I didn’t realize how much this meant to you. 我不知道这个对你的意义有这么大。 LNM中国英语学习网
    LNM中国英语学习网
    91.I didn’t mean to offend you. 我不是故意冒犯你。 LNM中国英语学习网
    LNM中国英语学习网
    92.I was wondering if you were doing anything this weekend. 我想知道这个周末你有什么要做。 LNM中国英语学习网
    LNM中国英语学习网
    93.May I have your attention., please? 请大家注意一下。 LNM中国英语学习网
    LNM中国英语学习网
    94.This is great golfing / swimming/ picnic weather. 这是个打高尔夫球/游泳/野餐的好天气。 LNM中国英语学习网
    LNM中国英语学习网
    95.Thanks for taking me the movie. 谢谢你带我去看电影。 LNM中国英语学习网
    LNM中国英语学习网
    96.I am too tired to speak. 我累得说不出活来。 LNM中国英语学习网
    LNM中国英语学习网
    97.Would you tell me your phone number? 你能告诉我你的电话号码吗? LNM中国英语学习网
    LNM中国英语学习网
    98.Where did you learn to speak English? 你从哪里学会说英语的呢? LNM中国英语学习网
    LNM中国英语学习网
    99.There is a TV show about AIDS on right now. 电视正在播放一个关于爱滋病的节目。 LNM中国英语学习网
    LNM中国英语学习网
    100.What do you think of his new job/ this magazine? 你对他的新工作/这本杂志看法如何? 
  • X银行营销服务系统性能测试小记(转)

    紫梦 发布于 2007-03-09 11:03:21

        1、 背景本次性能测试的系统是X银行营销服务系统总行版,该系统使用的数据库服务器、应用服务器均布署在总行机房,各地分行通过WEB方式登录访问本系统。系统上线后的总用户数(包括各分行、支行主管,客户经理等)在5000左右。该系统采用DB2数据库、WebLogic应用服务器。本次性能测试进入的条件是系统的代码已经基本完成并经过功能测试。
        2、 测试计划在确定了本次性能测试的要点后,我们初步拟定一份性能测试计划,提交给客户,并获得了客户的认可。在本文中不列出项目测试计划中的所有内容,仅就主要问题进行说明。测试范围:在真实业务局域网测试环境下,对系统实施并发性能测试的同时,监控Web 服务器和数据库服务器的系统资源,以及数据库资源的使用情况。测试内容:并发性能测试、系统资源监控。测试方法与工具:采用自动测试与人工测试相结合的测试方法,测试工具使用LoadRunner。测试资源:测试环境及测试数据准备。
         3、 测试用例确定了测试计划,我们针对该系统的特点,从中挑选出三个有代表性的功能点,作为本次性能测试的用例。我们认为作为银行的营销服务系统,最常使用且对于系统的整体性能有着较大影响的是“客户信息查询”和“客户对账单查询”两个模块。因此,我们设计了三个单交易性能测试用例,分别是:“用户签到/签退”、“客户信息查询”、“客户对账单查询”。然而客户却对此提出异议,他们认为我们设计的测试用例数量太少,要求我们的测试用例应包含更多的功能模块。经过会议讨论,最终我们根据客户给出的一份性能测试大纲,针对其中提出的测试内容、测试策略,以及测试目标,将单交易测试用例增加到十四个。测试用例采用以下格式:案例名称 并发用户数 数据量 操作步骤 备注 要求清晰地描述出详细的操作步骤。
        4、 测试数据针对以上设计的测试用例,需要准备大量的业务数据。本次性能测试的环境即系统上线后真实运行的环境,所有的业务数据均来自X银行的真实核心系统(通过ETL转换),数据量已经能满足测试的需要。由于测试用例中要求执行并发操作的时候使用不同身份的用户登录系统,因此在测试开始前需要准备一批具有不同身份的用户名(包括各分支行的主管以及客户经理),并且要有相应的操作权限。对于“积分转移”、“积分兑换”、“礼品兑换”等等交易,则需要提供一批卡上有足够积分的客户理财卡号。以上测试数据由X银行负责提供,在性能测试执行之前提供给我们。
        5、 测试脚本使用性能测试工具LoadRunner录制并调试测试脚本,对相关的输入项进行参数化。
        6、 测试实施在LoadRunner中执行测试脚本,实施性能测试。对于每个单交易测试脚本各执行一轮测试,并按一定的用户比例设计出一个混合交易场景,令其自动持续运行五小时左右,观察系统的性能表现。每次执行的结果文件均保存下来,待测试完成后连同性能测试报告一并交付客户确认。在此过程中,需要监视相关的系统资源使用情况,包括:应用服务器和数据库服务器的所有系统资源指标,所有数据库资源指标。
        7、 测试结果经过本次性能测试,发现了系统五个主要的性能问题。我们与程序开发人员一同分析问题产生的原因,并给出改进建议,一起记录到测试报告中。其中的一个问题在性能测试报告提交客户之前已经过优化,得到显著改进。
        8、 测试结论测试结果显示,系统性能能满足测试目标,交易并发数达到或超过30个,批量交易(查询记录50条以上的交易)并发数也能达到或超过10个,交易平均响应时间在2-12秒内,90%平均响应时间在2-15秒间完成。混合交易案例持续运行5小时,运行结果正常,系统没有报任何错误,系统稳定,可用率应达到100%。另外如在ETL批处理期间运行营销服务系统,系统性能明显下降,建议ETL批处理在夜间处理,避免影响系统的正常运行。

        9、 经验在本次性能测试的过程中,我们遇到一些问题,通过解决这些问题,从中获得了一些经验。
        现总结如下: 问题一在我们对系统进行测试的过程中,某些操作是相关联的。例如我们测试“查看客户资产历史”这个交易的系统响应时间,这时需要先列出客户的基本信息,选中一个客户,点击打开另一个页面,才能查看到该客户的资产历史信息,同时,在测试脚本中需要对所选择的客户编号做一个参数化,但由于LoadRunner不提供像WinRunner或QTP一样识别页面对象的功能,如果在Vugen中直接抓取页面上显示的客户编号去参数化,实现起来将十分烦琐。考虑到在以上那两步操作中,第一步“列出客户基本信息”只是辅助的操作,而第二步操作“查看客户资产历史”才是我们要测试的功能点,因此我们忽略了这二者之间的关联性,仅对第二步操作中的客户编号进行参数化。(只要服务器端对此不加验证,甚至我们将第一步操作都忽略掉,也是可行的)。结论:LoadRunner的工作原理是根据所选择的协议组装成相应的报文在前后台之间通讯,以此达到模拟实际操作的目的,因此我们只需将要测试的交易或功能点所需要组装的报文传送给后台服务器即可(因为我们关注的只是系统的性能,不是功能),而不必像功能测试那样,按部就班地重现每一步操作。
        问题二在测试过程中,我们发现有一个查询交易的系统响应速度特别慢,无论是在Controller中使用单个虚拟用户执行脚本,还是在Vuser中直接运行,情况均是如此,然而当我们用手工进行同样操作的时候,响应时间却明显地小于工具统计出来的时间,也就是说,在LoadRunner中模拟操作的结果与真实操作的结果明显不一致。经过反复尝试与观察,我们才终于找到问题的原因所在:该查询交易是通过客户的证件号码查询客户信息,当用户输入客户的证件号码时,如果没有选择证件类型,系统会自动将证件类型设置为默认值“身份证”。按“证件类型+证件号码”为组合索引查询客户信息表,查询速度极快,而在我们录制脚本时,忽视了“证件类型”这项输入,只有“证件号码”,因此查询的效率大为降低。解决办法:只需在测试脚本中,对CertType(“证件类型”)一项赋值为“A”(“身份证”),此时在LoadRunner中重新运行该脚本,响应速度提高,统计结果与实际完全一致!结论:LoadRunner的工作原理是根据所选择的协议组装成相应的报文在前后台之间通讯,以此达到模拟实际操作的目的,因此我们在测试脚本中组装发送到服务器端的报文时,注意一定要和实际操作时的发送报文完全一致,这样才能保证测试的结果与真实情况相吻合。这就要求在测试正式开始执行时,要对测试脚本进行反复的调试,通常的做法是:在Vugen中执行一遍脚本,统计执行某个事务的时间,再用手工实际做一遍同样的操作,大体上比较一下,确保与实际估算的时间没有太大出入后,再逐渐增加并发用户数,正式开始性能测试。
        问题三在我们的每个测试脚本中的init部分,都录制了登录系统的操作,并且对登录的用户名进行了参数化,使用各种不同身份的用户(分行主管、支行主管、客户经理等)进行相同的操作。在并发测试过程中发现对某些查询交易测试的结果波动较大,系统响应时间从零点几秒到几十秒不等。经检查后发现原因在于:使用不同身份的用户登录系统后,在输入查询条件后,点击查询按钮后会将根据该用户的身份,将其所属的分行机构号、支行机构号、客户经理编号等一并提交,因此在脚本中,就必须根据不同的用户身份,分别将其对应的分支行机构号等也运用参数提交,否则在执行脚本时就会出现查询不到记录或查询速度变慢等各种问题。解决方法有三个:1、修改脚本,使其能够依据用户的身份分别传送相应参数,2、针对不同类型的用户使用不同的脚本分别测试。3、输入参数使用统一的用户类型。在实际中,我们为了简化脚本的复杂度,节省对脚本编程的时间,采取的是第三种方法。结论:由于LoadRunner的工作原理是根据所选择的协议组装成相应的报文在前后台之间通讯,因此它会跳过在应用程序前台进行的校验,所以在脚本回放的时候一定要注意在脚本中提前进行这些校验或改由人工控制,以保证发送报文的正确性(如操作权限的控制等)。
        问题四测试多用户并发登录系统的时候,从虚拟用户图和事务图上发现,总有一部分用户在登录的时候要等待很长时间,用户登录的最小时间与最大时间相差非常大。于是我们在让脚本自动运行的同时,手工再登录一个用户,发现无论如何都不会发生等待的情况,多次试验的结果均是如此,也就是说LoadRunner测试的结果与实际结果再次发生了偏差!经过反复的调试,以及与程序开发人员沟通,我们终于发现问题的原因所在:在用户登录系统的时候,系统会自动记录登录用户的信息,并产生一个登录ID,以此ID做为主键,向数据库插入记录。因此当大量用户在极短的时间内同时登录时,就有可能出现生成相同的登录ID的情况,此时便会造成数据库中的主键冲突,导致用户等待很长时间或登录失败。而我们手工测试时却无法做到在很短的时间内同时登录,因此很难用手工重现此种情况。通过LoadRunner的模拟表现出来的状况,正是我们测试出程序存在的性能问题,并非与实际结果的偏差。还有一个例子,在第二轮性能测试中,同样发生了类似的情况。在本系统中,如果同一个用户登录后,未正常退出超过5次,系统将会把该用户锁住,使其无法再次登录,而我们用于参数化的用户名个数有限,因此当脚本使用大量用户同时登录时,很容易造成同样的用户登录系统而未签退的情况发生(脚本正在执行,还未能退出),此时将会造成许多用户操作的失败。结论:使用LoadRunner可以模拟出大量用户同时对系统操作的情况,而这些情况通过手工往往是很难重现出来的。例如大量用户在同时对系统做某些操作时,很容易造成数据库的死锁、锁等待、主键冲突、数据混乱等等问题,因此在做性能测试的同时,也常常可以连带测试出系统的一些隐蔽的“缺陷”。在本次性能测试中,这种例子是很多的。对待此类“缺陷”,应具体情况具体分析。有些确实是程序的BUG,需要修正,而有些可能只是很极端的情况,只有在做压力测试时才有可能发生,可不必深究。
        问题五此问题发生在第二轮测试(即回归测试)中。在第一轮测试中发现的性能问题,经程序员修正后,我们对系统进行了第二轮性能测试,以验证其性能改进的效果。在前一轮测试中,我们发现通过选择客户级别为“未评级”时,查询的速度极慢,经过改进后,速度应有较大提高。然而在回归测试中,却依然很慢。经过对测试脚本和程序的仔细检查,才发现原来在程序中已将“未评级”这个选项去除,而我们的测试脚本的参数文件中仍然保留有该选项,因此测试的结果与前次没有区别。在参数文件中将该选项去掉后,测试结果正常,查询效率有所提高。
        结论:使用录制好的测试脚本进行回归测试之前,一定要先仔细检查、了解程序的改动,对原先的测试脚本做必要的修改后,才可以重新测试,否则只是在做无用功。
        10、 教训在本次测试过程中,由于经验不足,我们也得到了一些教训。前事不忘,后事之师,现总结出来与大家分享。
        与客户的沟通做得不够,客户要求我们做的性能测试用例数量太多,我们未能据理力争,最后导致工作量过大。
        按照原定的项目计划,我们要在系统的功能测试即将结束前进驻项目组,准备并进行性能测试。然而由于客户在功能测试的后期仍然不断的提出新需求,导致开发人员疲于奔命,系统的性能难以稳定下来,性能测试的前期准备工作也受到很大影响,不能正常开展,浪费了很多人力物力。
        由于客户无法提供一个单独的性能测试环境,我们的性能测试工作与业务组的功能测试在同一个环境下进行,而系统的功能测试迟迟未能完成,加上ETL(数据转换)小组对数据库资源的占用,因此我们的性能测试只能在夜间才能进行。导致时间上的浪费,使项目的成本增加。
        没有将性能测试中发现的缺陷记录到缺陷管理工具中加以跟踪,而仅仅体现在最后的测试报告上,个人认为这是比较不规范的做法。
        性能测试前的数据准备不够充分。客户提供测试的系统用户、身份数量有限,导致许多案例的测试只能使用少量数据进行参数化,由此带来许多本可以避免的问题。
        测试计划及测试报告的书写格式缺乏规范,尤其测试计划书未能包含本应包含的所有内容。
        在我们将LoadRunner的测试结果文件全部提交给客户的前提下,客户仍然要求我们在测试报告中将每一次测试的数据均以表格的形式填至测试报告中,此项工作的工作量十分巨大,个人认为这样做并无必要。以上是在本次性能测试及回归测试过程中总结出来的一些经验教训,在此做一个小小的总结,以便下次工作中改进。

  • 写给职场的测试新人

    sweetxmy 发布于 2009-03-12 11:24:31

       最近一直闷得慌,总觉得有很多话想对新的测试朋友说,其实也是想总结一下自己7个月真实的测试工作。

       不知不觉中已经入行1年,从去年3月到今年的3月。

       还记得第1位面试我的51testing云层老师,他给过我很多的帮助,有时真的不知道怎么去感谢。

    感觉他就像大海中的一个导航灯,每当我在海中远洋迷路时,他总是指引着我,让我有方向。

    因为很喜欢测试,所以在未入行大概5年了,我已经对这个行业有所了解,偶尔工作之余会看看信息。但一直都是行外人现在看来只能说看热闹了。从真的开始测试才感觉到自己虽然是计算机专业毕业,却对测试一无所知。

    为什么进入这个行业,因为上一份工作,有一部分测试工作,但真是非常好笑的一件事一直在我的脑海中回荡。原来的测试中,我知道错误但描述不出来或没有标准可以让自己与开发面对面进行沟通,经常被开发打回来。有时觉得问题很严重反映到PM那里,因为PM也不清楚,所以只能放弃。那时觉得自己做测试好孤独,有时想哭,但哭又不能解决问题。而且我的人生或在工作中从不会去屈服于这种事。

    直到08年2月的一天,51培训中心的一位PPMM再次给我打电话,我抱着试一下的心情去了解。结果,云层老师的面试改变了我近一年的生活。每每在工作中测试时那种激动的心情,那种快乐,真的无法用文字表述自己的心情。可能很多朋友会奇怪地问,能不能用金钱来衡量呢?我只能说一个字俗,如果什么事都用金钱去衡量,我们的人生就没有真正的实现自我。

    还是说说我为什么要写得职场测试的新人,一方面我觉得自己不可能会一辈子做测试,我想应该最多5年,如果真的自己很喜欢还会继续做,但职位应该会有很大的提升,估计到时应该是做一些总的方向把握了吧。先飘一下自己,大家别给鸡蛋或口水,小女子怕怕。另一方面发现这是自己职场10年来的总结,希望会对新人或正在职场中奋斗却没有突破的朋友一些启示。当然我更愿意你也能像我一样,有一些自己的感触能用文字描述下来。

    以下说说我对测试行业总结的一些规则,声明一下,不是什么测试技术,但是是职场的一些小规则。

    1、不要只做领导告诉你的事,而是做需要做的事

    这句话我寻找了很多年,2年前偶然得到,但更喜悦的是读到这本书。

    在一家公司,如果你只会做领导要你做的事,你会没有一点突破,而且你的领导会觉得你没有一点思考或创新能力。

    所以不止是按领导分配给你做的事,你还要帮领导想,做这件事时你可以做得更好的方面,当然最好是你的领导没有想到的。

    2、为你的人生只做加法,不做减法

    什么是加法,就是得到领导或同事认可,反之减法你也知道了吧。

    可能你无法完全做到,但你可以避免,做到风险控制到最低点。

    比如说你发现一个BUG,你自己无法确认,这时你应该怎么做呢?

    直接汇报给上级吗?可千万别这么做,你可以找身边的同事或质深人士沟通一下,做到心中有数,最好有完全的解决方案然后才汇报。

    3、先做人后做事

    在一个新的环境里,你先学会了做人后做事了吗?

    也许你很奇怪,我不是应该尽快出业绩让大家看到我吗?有时你觉得业绩重要吗?还是你在工作中范一个错误面临被裁的危险重要呢?其实做人和做事一样重要,因为在新的环境对你来说是陌生的,一切都要重新开始,就算你很聪明,学习或熟悉也总有一个过程吧。至少在第1星期里,你可以先学会做人。

    那天有人和我开玩笑说‘RP不行’,为了这句话,我特意学习了2个小时有关RP的释解,它的标准或规则是什么,不看不知道,一看吓一跳。你从来不会想到,你请同事或朋友吃一餐饭,你的RP在他们心中就会加分。

    4、不要太care你的薪资

    如果你太关心也许你一直得不到,年前无意间看到有一位朋友说自己很苦恼自己做测试为什么一直没有拿到1W。我还是说说自己怎么对待这个问题吧。前几年我是非常关心这个问题,后来发现我真的只懂得关心它,却忘记通向它的路是什么,一直没有太多的朝着它奔跑,只看着它又怎么可能得到结果呢?

    所以你可以每年年底给自己立一个目标,而且也要做出通向这个目标的路。

    不是有这样一句话吗?‘你已在我心里,而我却忘记来时的路’忘记在哪看到的,如果真的只是画饼充饥那多可悲啊。

    说说我的大学同学,在大学里谁都不会看他们一眼,因为他们一个月的生活费只有好可怜的200元,但你知道他们在做什么嘛。那时97年经常是花1半的生活费去买计算机书面的书,在自习室里你能看到他们拼命啃读的身影。你知道他们现在的薪资吗?还是不告诉你,只告诉你他们的行踪吧。已经服务全球了,也许你呼叫他的下一个电话,就能听到他就在大洋的彼岸的声音。要知道99年他们在深圳是1.5K/月。

    5、对新的领域测试,要学会提早搜集资料

    这里还要深入说明了一下,在你做新的领域测试前你应该做好测试前的准备。

    比如说我从来没有见过所谓的水晶报表,当时听到就被吓了一身冷汗。(读我文章的朋友大概发现了吧,其实我是一个胆子很小的人,人家不轻意的一句话就会吓倒我。)真的没办法,只能赶鸭子上轿,拼了命的在网上搜索水晶报表的测试方法,有2篇文章真的帮了我很大的忙。改天找出来share给大家,顺道感谢一下。

    6、如何弥补自己的短板

    我相信没有人是万能的,比如说我的英语,我真的觉得自己没有办法。但现在的工作是每天必须与美国的同事沟通。所以给自己列英语计划,其实在不知不觉中发现自己的进步还是很大。做必须做的事。

    不要在同一时间段内给自己定N个目标,即使你有N个短板,你也可以分时间段一个一个去增高,让整个水桶的水慢慢的增加。

    7、如何与开发人员保持友好关系

    刚开始进入测试的角色时,我全身的细胞都被振奋,一发现BUG我就非常开心。然后就大摇大摆去告诉开发,这是你的XXXX问题,外了还奸笑一下。

    一段时间后发现开发都对我怨气大增,平时打招呼也不像之前那么热情了。

    后来自己逐渐意识到这点,还好及时端正自己的态度,现在和开发都是称兄道弟。

    这里有一些小小的潜规则要给新的测试朋友:

    1)每个BUG重复多做几遍,直到你可以熟练的给开发演示;

    2)如果自己的英语不好,而又不得不给美国的同事提交BUG,最好有详细的操作步骤,配上图片说明,让别人看图就能明白意思,当然你还有能力可以外加几句英文说明一下。但忌大遍用文字说明。

    3)不是每个BUG都需要提交到BUG管理软件,有时BUG即使严重程度很高,如果想保持与开发的关系,可以私下里给他。也许这是一条妙招,百用不厌。但你自己要做一个BUG表,修正后的版本一定要记得做Check。外加2句也不能经常这样做,给个1-2回就可以了,千万不能过3,否则就没有用了。如果真的是严重到让系统奔溃的BUG,就要加入BUG管理软件了。

    4)学会给点小恩小惠,自己平时可以准备一点小零食在办公室。当然你要有心不要只是一般的饼干,而是精心准备的,同样不是经常,只是偶尔。要学会分享给所有的同事,当你和所有的同事一起吃美食的感觉,你会觉得非常的美妙。

    8、要学会并善于思考

    一直很崇拜那本书《思考与致富》,好像已经断版了。只见过他几眼没有仔细翻阅。

    在工作中为什么要学会思考,做测试不止是简单的执行,你要想想你同事做的测试用例有没有到位,是不是已经是最好的,如果让你来做是不是可以更简单就可以达到目标。

    当然我的工作只有我一个人做测试不存在这些,我是想着方法为难我自己,但一般我能想到的我都会有解决方案。很困扰没太多把自己为难住。后来我想到了,如果我有助理怎么去考核他,然后我就学会了先考核自己。

    说实话,以前我做的工作有时思考只是停留在表面,比如说我的目标只是尽快解决问题。但现在我觉得自己的观念已经转变,不只是为了解决问题,而是要达到多方赢。如果你也愿意,只要你尽自己最大的努力你就可以做到,一件事可以让很多人都满意。如果大家都满意了,你的老板还会不给你加工资吗?

    9、对自己所从事的工作,要有热情

    我不知道你现在做的工作或测试是不是你喜欢的,但我想告诉你,暂时我还没有发现比测试能让我疯狂的工作,也许以后有。因为现在没有,我就很开心的做我的测试,很享受现在的测试工作。有时觉得真得到了一种疯狂的地步。虽然测试技术不是很高,但能让自己很开心,很认真的工作,也觉得值得,关键是测试给了我很多,至少实现自己的价值,一种满足感。

    不要只是把测试工作限在8小时之内,也许只做国内的软件测试的朋友可以吧。但我觉得应该在8小时之外,如果你的系统在美国时间上线,那你就应该在上线后再做一次完整的测试。如果没有发现大的问题,你才能安心去睡觉。

    10、要学会拉外联

    大家都知道国足了对吧,我对足球也不是太了解,只是借用一下外联吧。

    因为我们毕竟刚入这行,什么都不懂,也不能只局限在自己的小井里看天。要走出去,寻求专家和能人的帮助。大家如果认真看前文都应该知道,我经常请51培训中心的老师帮忙。

    11、要学会尊重你自己

    为什么要这么说,如果你自己都看不起自己,别人就会更看不起你。

    要学会自信--》自尊--》自强--》自立

    这是最重要的,其它都是次要的,如果没有这条,其它N条有了你都不会有大的发展,更不可能以后自己开公司,达到财富自由。

    12、外加一点,要经常复习你学过的测试技术,当然用到的时候一定要再认真的学习一次。

    在培训中心学习到的都是精华的测试技术,在工作中如果不细细品,用到时不认真回头去看看,把那些知识用到极致。那你真的对不起你花的钱,也许你父母为这笔钱不知扣了几次牙,或是你自己为这笔钱省了。。。反正我的意思是你要让你学过的知识保值。

    给新学MMDD们,要经常看看1-2册的内容,我能肯定的是刚开始工作时也许你只能用到1-2册的内容。第3-4册的内容是技术性的,当过了1年后,你就要重点去研究它们了。

    其实不止是这些课本的知识,你还要找到课外以外的知识作补充,这样你的工作才能圆满完成。反正51论坛里有很多的精华,还有很多的专家博客。有事没事都可以QJ一下自己的眼睛嘛。

    一下子写了这么多真是开心,改天再补充吧。

  • [转] 软件测试中的网站测试技术要领

    yangmei1985 发布于 2009-04-23 11:41:53

    转自:

    http://www.51testing.com/?uid-116289-action-viewspace-itemid-118938

    软件缺陷的原则
    •   软件缺陷区别于软件bug,它是在测试过程中出现的对系统有影响的,但是在设计中没有的或者对修改后的bug测试和开发人员有不同意见等
    •   软件未达到产品说明书标明的功能。
    •   软件出现了产品说明书指明不会出现的错误。
    •   软件功能超出产品说明书指明范围。
    •   软件未达到产品说明书虽未指出但应达到的目标。
    •   软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。

      测试的主要方面:

      一、功能测试

      对于网站的测试而言,每一个独立的功能模块需要单独的测试用例的设计导出,主要依据为《需求规格说明书》及《详细设计说明书》,对于应用程序模块需要设计者提供基本路径测试法的测试用例。

      1、链接测试

      链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。链接测试可分为三个方面:

      1)测试所有链接是否按指示的那样确实链接到了该链接的页面;

      2)测试所链接的页面是否存在;

      3)保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问。

      链接测试可以自动进行,现在已经有许多工具可以采用。链接测试必须在集成测试阶段完成,也就是说,在整个Web应用系统的所有页面开发完成之后进行链接测试。

      Xenu------主要测试链接的正确性的工具

      可惜的是对于动态生成的页面的测试会出现一些错误。

      2、表单测试

      当用户给Web应用系统管理员提交信息时,就需要使用表单操作,例如用户注册、登陆、信息提交等。在这种情况下,我们必须测试提交操作的完整性,以校验提交给服务器的信息的正确性。例如:用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等。如果使用了默认值,还要检验默认值的正确性。如果表单只能接受指定的某些值,则也要进行测试。例如:只能接受某些字符,测试时可以跳过这些字符,看系统是否会报错。

      要测试这些程序,需要验证服务器能正确保存这些数据,而且后台运行的程序能正确解释和使用这些信息。

      B/S结构实现的功能可能主要的就在这里,提交数据,处理数据等如果有固定的操作流程可以考虑自动化测试工具的录制功能,编写可重复使用的脚本代码,可以在测试、回归测试时运行以便减轻测试人员工作量。

      我们对UM子系统中各个功能模块中的各项功能进行逐一的测试,主要测试方法为:边界值测试、等价类测试,以及异常类测试。测试中要保证每种类型都有2个以上的典型数值的输入,以确保测试输入的全面性。

      3、Cookies测试

      Cookies通常用来存储用户信息和用户在某应用系统的操作,当一个用户使用Cookies访问了某一个应用系统时,Web服务器将发送关于用户的信息,把该信息以Cookies的形式存储在客户端计算机上,这可用来创建动态和自定义页面或者存储登陆等信息。

      如果Web应用系统使用了Cookies,就必须检查Cookies是否能正常工作而且对这些信息已经加密。测试的内容可包括Cookies是否起作用,是否按预定的时间进行保存,刷新对Cookies有什么影响等。

      4、设计语言测试

      Web设计语言版本的差异可以引起客户端或服务器端严重的问题,例如使用哪种版本的HTML等。当在分布式环境中开发时,开发人员都不在一起,这个问题就显得尤为重要。除了HTML的版本问题外,不同的脚本语言,例如Java、Javascrīpt、 ActiveX、VBscrīpt或Perl等也要进行验证。

      5、数据库测试

      在Web应用技术中,数据库起着重要的作用,数据库为Web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。在Web应用中,最常用的数据库类型是关系型数据库,可以使用SQL对信息进行处理。

      在使用了数据库的Web应用系统中,一般情况下,可能发生两种错误,分别是数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起的,针对这两种情况,可分别进行测试。



    二、性能测试

      网站的性能测试对于网站的运行而言异常重要,但是目前对于网站的性能测试做的不够,我们在进行系统设计时也没有一个很好的基准可以参考,因而建立网站的性能测试的一整套的测试方案将是至关重要的。

      网站的性能测试主要从三个方面进行:连接速度测试、负荷测试(Load)和压力测试(Stress),

      连接速度测试指的是打开网页的响应速度测试。负荷测试指的是进行一些边界数据的测试,压力测试更像是恶意测试,压力测试倾向应该是致使整个系统崩溃。

      1、连接速度测试

      用户连接到Web应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网。当下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。如果Web系统响应时间太长(例如超过5秒钟),用户就会因没有耐心等待而离开。

      另外,有些页面有超时的限制,如果响应速度太慢,用户可能还没来得及浏览内容,就需要重新登陆了。而且,连接速度太慢,还可能引起数据丢失,使用户得不到真实的页面。

      2、负载测试

      负载测试是为了测量Web系统在某一负载级别上的性能,以保证Web系统在需求范围内能正常工作。负载级别可以是某个时刻同时访问Web系统的用户数量,也可以是在线数据处理的数量。例如:Web应用系统能允许多少个用户同时在线?如果超过了这个数量,会出现什么现象?Web应用系统能否处理大量用户对同一个页面的请求?

      3、压力测试

      负载测试应该安排在Web系统发布以后,在实际的网络环境中进行测试。因为一个企业内部员工,特别是项目组人员总是有限的,而一个Web系统能同时处理的请求数量将远远超出这个限度,所以,只有放在Internet上,接受负载测试,其结果才是正确可信的。

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

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

      采用的测试工具:

      性能测试可以采用相应的工具进行自动化测试,我们目前采用如下工具

      ab -----Apache 的测试工具

      OpenSTA—开发系统测试架构


    、接口测试

      在很多情况下,web 站点不是孤立。Web 站点可能会与外部服务器通讯,请求数据、

      验证数据或提交订单。

      1、 服务器接口

      第一个需要测试的接口是浏览器与服务器的接口。测试人员提交事务,然后查看服务器

      记录,并验证在浏览器上看到的正好是服务器上发生的。测试人员还可以查询数据库,确认事务数据已正确保存。

      2、 外部接口

      有些 web 系统有外部接口。例如,网上商店可能要实时验证信用卡数据以减少欺诈行

      为的发生。测试的时候,要使用 web 接口发送一些事务数据,分别对有效信用卡、无效信用卡和被盗信用卡进行验证。如果商店只使用 Visa 卡和 Mastercard 卡, 可以尝试使用 Discover 卡的数据。(简单的客户端脚本能够在提交事务之前对代码进行识别,例如 3 表示 American Express,4 表示 Visa,5 表示 Mastercard,6 代表Discover。)通常,测试人员需要确认软件能够处理外部服务器返回的所有可能的消息。

      3、错误处理

      最容易被测试人员忽略的地方是接口错误处理。通常我们试图确认系统能够处理所有错

      误,但却无法预期系统所有可能的错误。尝试在处理过程中中断事务,看看会发生什么情况?

      订单是否完成?尝试中断用户到服务器的网络连接。尝试中断 web 服务器到信用卡验证服

      务器的连接。在这些情况下,系统能否正确处理这些错误?是否已对信用卡进行收费?如果

      用户自己中断事务处理,在订单已保存而用户没有返回网站确认的时候,需要由客户代表致

      电用户进行订单确认。

    四、可用性测试

      可用性/易用性方面目前我们只能采用手工测试的方法进行评判,而且缺乏一个很好的评判基准进行,此一方面需要大家共同讨论。

      1、导航测试

      导航描述了用户在一个页面内操作的方式,在不同的用户接口控制之间,例如按钮、对话框、列表和窗口等;或在不同的连接页面之间。通过考虑下列问题,可以决定一个Web应用系统是否易于导航:导航是否直观?Web系统的主要部分是否可通过主页存取?Web系统是否需要站点地图、搜索引擎或其他的导航帮助?

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

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

      Web应用系统的层次一旦决定,就要着手测试用户导航功能,让最终用户参与这种测试,效果将更加明显。

      2、图形测试

      在Web应用系统中,适当的图片和动画既能起到广告宣传的作用,又能起到美化页面的功能。一个Web应用系统的图形可以包括图片、动画、边框、颜色、字体、背景、按钮等。图形测试的内容有:

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

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

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

      (4)图片的大小和质量也是一个很重要的因素,一般采用JPG或GIF压缩。

      3、内容测试

      内容测试用来检验Web应用系统提供信息的正确性、准确性和相关性。

      信息的正确性是指信息是可靠的还是误传的。例如,在商品价格列表中,错误的价格可能引起财政问题甚至导致法律纠纷;信息的准确性是指是否有语法或拼写错误。这种测试通常使用一些文字处理软件来进行,例如使用Microsoft Word的"拼音与语法检查"功能;信息的相关性是指是否在当前页面可以找到与当前浏览信息相关的信息列表或入口,也就是一般Web站点中的所谓"相关文章列表"。

      4、整体界面测试

      整体界面是指整个Web应用系统的页面结构设计,是给用户的一个整体感。例如:当用户浏览Web应用系统时是否感到舒适,是否凭直觉就知道要找的信息在什么地方?整个Web应用系统的设计风格是否一致?

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

      对所有的可用性测试来说,都需要有外部人员(与Web应用系统开发没有联系或联系很少的人员)的参与,最好是最终用户的参与。



    五、兼容性测试

      需要验证应用程序可以在用户使用的机器上运行。如果您用户是全球范围的,需要测试各种操作系统、浏览器、视频设置和 modem 速度。最后,还要尝试各种设置的组合。

      1、平台测试

      市场上有很多不同的操作系统类型,最常见的有Windows、Unix、Macintosh、Linux等。Web应用系统的最终用户究竟使用哪一种操作系统,取决于用户系统的配置。这样,就可能会发生兼容性问题,同一个应用可能在某些操作系统下能正常运行,但在另外的操作系统下可能会运行失败。

      因此,在Web系统发布之前,需要在各种操作系统下对Web系统进行兼容性测试。

      2、浏览器测试

      浏览器是Web客户端最核心的构件,来自不同厂商的浏览器对Java,、Javascrīpt、 ActiveX、 plug-ins或不同的HTML规格有不同的支持。例如,ActiveX是Microsoft的产品,是为Internet Explorer而设计的,Javascrīpt是Netscape的产品,Java是Sun的产品等等。另外,框架和层次结构风格在不同的浏览器中也有不同的显示,甚至根本不显示。不同的浏览器对安全性和Java的设置也不一样。

      测试浏览器兼容性的一个方法是创建一个兼容性矩阵。在这个矩阵中,测试不同厂商、不同版本的浏览器对某些构件和设置的适应性。

      采用测试工具:

      通过白盒测试或者黑盒测试导出的测试用例,采用相应的工具进行测试,可以采用OpenSTA进行测试,此测试工具可以采用不同的浏览器进行测试。

      3.视频测试

      页面版式在 640x400、600x800 或 1024x768 的分辨率模式下是否显示正常? 字体是否太小以至于无法浏览? 或者是太大? 文本和图片是否对齐?

      4.Modem/连接速率测试

      是否有这种情况,用户使用 28.8 modem下载一个页面需要 10 分钟,但测试人员在测

      试的时候使用的是 T1 专线? 用户在下载文章或演示的时候,可能会等待比较长的时间,

      但却不会耐心等待首页的出现。最后,需要确认图片不会太大。

      5、打印机测试

      用户可能会将网页打印下来。因此网页在设计的时候要考虑到打印问题,注意节约纸张和油墨。有不少用户喜欢阅读而不是盯着屏幕,因此需要验证网页打印是否正常。有时在屏幕上显示的图片和文本的对齐方式可能与打印出来的东西不一样。测试人员至少需要验证订单确认页面打印是正常的。

      6、组合测试

      最后需要进行组合测试。600x800 的分辨率在 MAC 机上可能不错,但是在 IBM 兼容

      机上却很难看。在 IBM 机器上使用 Netscape 能正常显示,但却无法使用 Lynx 来浏览。

      如果是内部使用的 web 站点,测试可能会轻松一些。如果公司指定使用某个类型的浏览器,

      那么只需在该浏览器上进行测试。如果所有的人都使用 T1 专线,可能不需要测试下载施加。

      (但需要注意的是,可能会有员工从家里拨号进入系统) 有些内部应用程序,开发部门可能

      在系统需求中声明不支持某些系统而只支持一些那些已设置的系统。但是,理想的情况是,

      系统能在所有机器上运行,这样就不会限制将来的发展和变动。



    六、安全测试

      Web应用系统的安全性测试区域主要有:

      1、 目录设置

      Web 安全的第一步就是正确设置目录。每个目录下应该有 index.html 或 main.html 页

      面,这样就不会显示该目录下的所有内容。如果没有执行这条规则。那么选中一幅图片,单击鼠标右键,找到该图片所在的路径"… com/objects/images"。然后在浏览器地址栏中手工输入该路径,发现该站点所有图片的列表。这可能没什么关系。但是进入下一级目录 "…com/objects" ,点击 jackpot。在该目录下有很多资料,其中有些都是已过期页面。如果该公司每个月都要更改产品价格信息,并且保存过期页面。那么只要翻看了一下这些记录,就可以估计他们的边际利润以及他们为了争取一个合同还有多大的降价空间。如果某个客户在谈判之前查看了这些信息,他们在谈判桌上肯定处于上风。

      2.登录

      现在的Web应用系统基本采用先注册,后登陆的方式。因此,必须测试有效和无效的用户名和密码,要注意到是否大小写敏感,可以试多少次的限制,是否可以不登陆而直接浏览某个页面等。

      3.Session

      Web应用系统是否有超时的限制,也就是说,用户登陆后在一定时间内(例如15分钟)没有点击任何页面,是否需要重新登陆才能正常使用。

      4.日志文件

      为了保证Web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进了日志文件、是否可追踪。

      5.加密

      当使用了安全套接字时,还要测试加密是否正确,检查信息的完整性。

      6.安全漏洞

      服务器端的脚本常常构成安全漏洞,这些漏洞又常常被黑客利用。所以,还要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。

      目前网络安全问题日益重要,特别对于有交互信息的网站及进行电子商务活动的网站尤其重要。目前我们的测试没有涵盖网站的安全性的测试,我们拟定采用工具来测定,

      工具如下

      SAINT------- Security Administrator’s Integrated Network Tool

      此工具能够测出网站系统的相应的安全问题,并且能够给出安全漏洞的解决方案,不过是一些较为常见的漏洞解决方案。

    七、代码合法性测试

      代码合法性测试主要包括2个部分:程序代码合法性检查与显示代码合法性检查。

      1、程序代码合法性检查

      程序代码合法性检查主要标准为《intergrp小组编程规范》,目前采用由SCM管理员进行规范的检查,未来期望能够有相应的工具进行测试。

      2、显示代码合法性检查

      显示代码的合法性检查,主要分为Html、Javascrīpt、Css代码检查,目前采用

      HTML代码检查------采用CSE HTML Validator进行测试

      Javascrīpt、Css也可以在网上下载相应的测试工具。

      八、 文档测试

      l、产品说明书属性检查清单

      1)完整.是否有遗漏和丢失,完全吗? 单独使用是否包含全部内容

      2)准确.既定解决方案正确吗? 目标明确吗? 有没有错误?

      3)精确、不含糊、清晰.描述是否一清二楚? 还是自说自话?容易看懂和理解吗?

      4)一致.产品功能能描述是否自相矛盾,与其他功能有没有冲突

      5)贴切.描述功能的陈述是否必要?有没有多余信息? 功能是否原来的客户要求?

      6)合理.在特定的预算和进度下,以现有人力,物力和资源能否实现?

      7)代码无关.是否坚持定义产品,而不是定义其所信赖的软件设计,架构和代码

      8)可测试性.特性能否测试? 测试员建立验证操作的测试程序是否提供足够的信息?

      2、 产品说明书用语检查清单

      1)说明。 对问题的描述通常表现为粉饰没有仔细考虑的功能----可归结于前文所述的属性.从产品说明书上找出这样的用语,仔细审视它们在文中是怎样使用的.产品说明书可能会为其掩饰和开脱,也可能含糊其词----无论是哪一种情况都可视为软件缺陷.

      2)总是,每一种,所有,没有,从不.如果看到此类绝对或肯定的,切实认定的叙述,软件测试员就可以着手设计针锋相对的案例.

      3)当然,因此,明显,显然,必然.这些话意图诱使接受假定情况.不要中了圈套.

      4)某些,有时,常常,通常,惯常,经常,大多,几乎.这些话太过模糊."有时"发生作用的功能无法测试.

      5)等等,诸如此类,依此类推.以这样的词结束的功能清单无法测试.功能清单要绝对或者解释明确,以免让人迷惑,不知如何推论.

      6)良好,迅速,廉价,高效,小,稳定.这些是不确定的说法,不可测试.如果在产品说明书中出现,就必须进一步指明含义.

      7)已处理,已拒绝,已忽略,已消除.这些廉洁可能会隐藏大量需要说明的功能.

      8)如果...那么...(没有否则).找出有"如果...那么..."而缺少配套的"否则"结构的陈述.想一想"如果"没有发生会怎样.

      相关的测试工具

      OpenSTA

      主要做性能测试的负荷及压力测试,使用比较方便,可以编写测试脚本,也可以先行自动生成测试脚本,而后对于应用测试脚本进行测试。

      SAINT

      网站安全性测试,能够对于指定网站进行安全性测试,并可以提供安全问题的解决方案。

      CSE HTML Validator

      一个有用的对于HTML代码进行合法性检查的工具

      Ab(Apache Bench)

      Apache自带的对于性能测试方面的工具,功能不是很多,但是非常实用。

      Crash-me

      Mysql自带的测试数据库性能的工具,能够测试多种数据库的性能。


     
  • [论坛] 测试计划考虑的几点

    liangjz 发布于 2009-02-13 22:08:11

    测试计划最终结果把WBS有控制完成。测试计划符合SMART原则。

    1 选人:
    从几个纬度考虑
    (1) 尽量发挥技术特长
    (2) 结合项目兴趣
    (3) 技能高+ 技能低些的结合。涵盖项目所需技能。或者不完全具备,需要有学习能力强的排头兵

    2 工时估算

    这个是一个很难估算准确的活。因为一个项目充满变数。
    学会工作分解,然后再按每个功能点/测试范围乘一个冗余系数
    可以采用project, mindmap, excel等

    3 风险分析与规避
    通常测试项目风险
    1) 研发提交代码质量不高,冒烟测试失败
    2) 研发更改频繁,送测版本过多
    3) 需求文档或者设计书不够明确,QA 和需求/研发细化耗时
    4) QA 测试分析不够全面
    5) 性能问题分析以及调整影响面过大
    6) 测试的覆盖率过低
    7) 技术难题或者测试环境资源问题
    ...

    4 确定测试范围

    由于项目有外部耦合模块,要非常明确影响范围十分困难。
    通常做法: 用工具绘制调用网状图。或者分析正相关的模块结合自动化测试脚本确定测试范围

    5 确定测试策略

    确认系统是否需要性能测试,安全测试,兼容性测试,本地化测试...

    以及是否需要验证系统的高可用方案, 新旧系统平滑过渡方案 ,可扩展容量估算公式...。

    6 项目的工作约定

    比如采用的模版,沟通方式(IM/周会。。。),项目出现问题的解决流程
  • unix系统shell编写(一)

    Swwing 发布于 2009-02-05 12:44:03

    Unix下shell程序编写 一
                       

                      *Shell是什么?

                        任何发明都具有供用户使用的界面。UNIX供用户使用的界面就是Shell(DOS的command熟悉吧,但UNIX的要强大的多)。

                      Shell为用户提供了输入命令和参数并可得到命令执行结果的环境。

                        为了不同的需要,UNIX提供了不同的Shell。现在的UNIX大部分都支持BourneShell,以下教程就以BourneShell(Bsh)为例,一步步的领略UNIX

                      Shell的强大功能,占先其强大魅力,达到更方便灵活的管理、应用UNIX的目的。

                        1.UNIX内核和Shell的交互方法

                        启动UNIX时,程序UNIX(内核)将被调入计算机内存,并一直保留在内存中直到机器关闭。在引导过程中,程序
                      init将进入后台运行一直到机器关闭。该程序查询文件/etc/inittab,该文件列出了连接终端的各个端口及其特征。当发现一个活动的终端时,init程序调用getty程序在终端上显示login等登陆信息。(username和passwd),在输入密码后,

                      getty调用login进程,该进程根据文件/etc/passwd的内容来验证用户的身份。若用户通过身份验证,login进程

                      把用户的home目录设置成当前目录并把控制交给一系列setup程序。setup程序可以是指定的应用程序,通常setup程序
                      为一个Shell程序,如:/bin/sh 即Bourne Shell(command出来了,呵呵)。

                        得到控制后,Shell程序读取并执行文件/etc/.profile以及.profile。这两个文件分别建立了系统范围内的和

                      该用户自己的工作环境。最后Shell显示命令提示符,如$。(这是以bsh为例,若是csh,为.cshrc,ksh为.kshrc,bash为.bashrc等等)

                         

                        注不妨把/etc/.profile和.profile看成DOS的autoexec.bat 或
                      config.sys文件)

                        当shell退出时,内核把控制交给init程序,该程序重新启动自动登陆过程。有两种方法使shell退出,一是用户执行exit命令,二是

                      内核(例如root用kill命令)发出一个kill命令结束shell进程。shell退出后,内核回收用户及程序使用的资源。

                        用户登陆后,用户命令同计算机交互的关系为:命令进程--->Shell程序--->UNIX内核--->计算机硬件。当用户输入一个命令,如$ls,

                      Shell将定位其可执行文件/bin/ls并把其传递给内核执行。内核产生一个新的子进程调用并执行/bin/ls。当程序执行完毕后,内核取消

                      该子进程并把控制交给其父进程,即Shell程序。例如执行:

                          $ps

                          该命令将会列出用户正在执行的进程,即Shell程序(下来详细说说,别急现在)和ps程序。若执行:

                          $sleep 10 &
                          $ps

                        其中第一条命令将产生一个在后台执行的sleep子进程。ps命令执行时会显示出该子进程。

                        每当用户执行一条命令时,就会产生一个子进程。该子进程的执行与其父进程或Shell完全无关,这样可以使Shell去做其他工作。(Shell只是把用户的意图告诉内核,然后该干嘛干嘛)

                      现在windows有个计划任务(在固定的时间,日期自动执行某任务),其实UNIX很早就有这个功能了,也就是所谓的Shell的自动执行。一些UNIX

                      资源,如cron可以自动执行Shell程序而无需用户的参与,(这个功能好象在/var/spool/crotab目录里)。

                      Crontab 程序对于系统管理员来说是非常有用的。Cron
                      服务用于计划程序在特定时间(月、日、周、时、分)运行。我们以root的crontab 为例。根用户的
                      crontab 文件放在 /var/spool/crontab/root 中,其格式如下:

                        (1)  (2)  (3)  (4)  (5)  (6)
                         0   0   *   *   3   /usr/bin/updatedb
                            1. 分钟 (0-60)
                            2. 小时 (0-23)
                            3. 日 (1-31)
                            4. 月 (1-12)
                            5. 星期 (1-7)
                            6. 所要运行的程序
                        2.Shell的功能和特点
                        1>命令行解释
                        2>使用保留字
                        3>使用Shell元字符(通配符)
                        4>可处理程序命令
                        5>使用输入输出重定向和管道
                        6>维护一些变量
                        7>运行环境控制
                        8>支持Shell编程

                        对于"命令行解释"就不多说了,就是在shell提示符(例如:"$","%","#"等)后输入一行unix命令,Shell将接收用户的输入。


                        "使用保留字":Shell有一些具有特殊意义的字,例如在Shell脚本中,do,done,for等字用来控制循环操作,if,then等控制条件操作。

                      保留字随Shell环境的不同而不同。

                        "通配符":* 匹配任何位置
                             ? 匹配单个字符
                             [] 匹配的字符范围或列表 例如:
                             
                                $ls [a-c]*
                               
                                将列出以a-c范围内字符开头的所有文件
                                $ls [a,m,t]*
                               将列出以e,m或t开头的所有文件

                        "程序命令"
                      :当用户输入命令后,Shell读取环境变量$path(一般在用户自己的.profile中设置),该变量包含了命令可执行文件可能存在的目录列表。

                      shell从这些目录中寻找命令所对应的可执行文件,然后将该文件送给内核执行。

                        "输入输出重定向及管道" :重定向的功能同DOS的重定向功能:

                           ">" 重定向输出
                           "<" 重定向输入

                        而管道符号,是unix功能强大的一个地方,符号是一条竖线:"|",用法:
                      command 1 | command 2 他的功能是把第一个命令command 1执行的结果作为command
                      2的输入传给command 2,例如:

                          $ls -s|sort -nr|pg

                        该命令列出当前目录中的所有文件,并把输出送给sort命令作为输入,sort命令按数字递减的顺序把ls的输出排序。然后把排序后的

                      内容传送给pg命令,pg命令在显示器上显示sort命令排序后的内容。

                        "维护变量"
                      :Shell可以维护一些变量。变量中存放一些数据供以后使用。用户可以用"="给变量赋值,如:

                               $lookup=/usr/mydir

                      该命令建立一个名为lookup的变量并给其赋值/usr/mydir,以后用户可以在命令行中使用lookup来代替/usr/mydir,例如:

                               
                               $echo $lookup
                               结果显示:/usr/mydir

                               为了使变量能被子进程使用,可用exprot命令,例如:

                               $lookup=/usr/mydir
                               $export lookup

                        "运行环境控制"
                      :当用户登陆启动shell后,shell要为用户创建一个工作的环境,如下:

                        1>当login程序激活用户shell后,将为用户建立环境变量。从/etc/profile和.profile文件中读出,在这些文件中一般都用$TERM

                      变量设置终端类型,用$PATH变量设置Shell寻找可执行文件的路径。

                        2>从/etc/passwd文件或命令行启动shell时,用户可以给shell程序指定一些参数,例如"-x",可以在命令执行前显示该命令及其参数。后面详细介绍这些参数。


                        "shell编程" :本文主要介绍的内容。

                        shell本身也是一种语言(*可以先理解为unix命令的组合,加上类C的条件,循环等程序控制语句,类似dos批处理,但要强大的多),用户可以

                      通过shell编程(脚本,文本文件),完成特定的工作。

                      SHELL变量

                        下面我们详细的介绍Bourne Shell的编程:

                        自从贝尔实验室设计了Bourne
                      Shell。从那时起许多厂商根据不同的硬件平台设计了许多版本得unix。但在众多版本的unix中,Bourne Shell
                      一直保持一致。
                        1>Bsh的启动:用户在登陆后,系统根据文件/etc/passwd中有关该用户的信息项启动Shell。例如某用户在passwd中

                      的信息项为:

                          ice_walk:!:411:103:Imsnow
                      ,ice_walk:/home/ice_walk:/bin/bsh

                        则表明,用户名是ice_walk等信息,在最后一项"/bin/bsh"表明用户的sh环境类型是bsh,于是系统启动之。在启动或执行(包括下面我们要讲

                      的shell程序--脚本)过程中可以使用以下一些参数,我们一一说明:

                        -a 将所有变量输出
                        -c "string"从string中读取命令
                        -e 使用非交互式模式
                        -f 禁止shell文件名产生
                        -h 定义
                        -i 交互式模式
                        -k 为命令的执行设置选项
                        -n 读取命令但不执行
                        -r 受限模式
                        -s 命令从标准输入读取
                        -t 执行一命令,然后退出shell
                        -u 在替换时,使用未设置的变量将会出错
                        -v 显示shell的输入行
                        -x 跟踪模式,显示执行的命令

                      许多模式可以组合起来用,您可以试试了,但-ei好象不行,你说why呢?

                        使用set可以设置或取消shell的选项来改变shell环境。打开选项用"-",关闭选项用"+",多数unix允许打开或关闭a、f、e、h、k、n、

                      u、v和x选项。若显示Shell中已经设置的选项,执行:

                          $echo $-

                        Bsh中每个用户的home目录下都有一个.profile文件,可以修改该文件来修改shell环境。为了增加一个可执行文件的路径(例如/ice_walk/bin),

                      可以把下面代码加入.profile中

                          PATH=$PATH:/ice_walk/bin;exprot PATH

                         .profile中shell的环境变量意思如下:

                          CDPATH 执行cd命令时使用的搜索路径
                          HOME 用户的home目录
                          IFS 内部的域分割符,一般为空格符、制表符、或换行符
                          MAIL 指定特定文件(信箱)的路径,有UNIX邮件系统使用
                          PATH 寻找命令的搜索路径(同dos的config.sys的 path)
                          PS1 主命令提示符,默认是"$"
                          PS2 从命令提示符,默认是">"
                          TERM 使用终端类型

                        2>Bsh里特殊字符及其含义

                        在Bsh中有一组非字母字符。这些字符的用途分为四类:作为特殊变量名、产生文件名、数据或程序控制以及引用和逃逸字符控制。他们

                      可以让用户在Shell中使用最少的代码完成复杂的任务。

                           *> Shell变量名使用的特殊字符
                              $# 传送给命令Shell的参数序号
                              $- 在Shell启动或使用set命令时提供选项
                              $? 上一条命令执行后返回的值
                              $$ 当前shell的进程号
                              $! 上一个子进程的进程号
                              $@ 所有的参数,每个都用双括号括起
                              $* 所有参数,用双括号括起
                              $n 位置参数值,n表示位置
                               当前shell名
                           *>产生文件名的特殊字符
                              包括"*","?","[]",上面讲过,不再多说。
                           *>数据或程序控制使用的特殊字符
                              >(file) 输出重定向到文件中(没有文件则创建,有则覆盖)
                              >>(file)
                      输出重定向到文件中(没有则创建,有则追加到文件尾部)
                              <(file) 输入重定向到文件
                              ; 命令分割符
                              | 管道符
                              & 后台运行(例如:sleep 10 &)
                              ` ` 命令替换,重定向一条命令的输出作为另一命令的参数
                           *>对于引用或逃逸的特殊字符

                      Bsh用单引号' '和双引号"
                      "将特殊字符或由空白分隔的字引用起来组成一个简单的数据串.使用单引号和双引号的区别是双引号中的内容可进行参数和变量替换.逃逸字符也一样.


                              $echo "$HOME $PATH"
                               结果显示$/u/ice_walk/bin:/etc:/usr/bin
                              而$echo '$HOME $PATH' 结果显示$HOME $PATH

                        shell的逃逸符是一个"\",表示其后的字符不具有特殊的含义或不是shell的函数

                              $echo $HOME $PATH
                              结果显$$HOME /bin:/etc:/usr/bin:

                      3>Bsh的变量

                        前面我们在多个地方引用了变量,当Shell遇到一个"$"符时(没有被引用或逃逸),它将认为其后为一变量。不论该变量是环境变量还是用户自定义的变量,在命令行中变量名要被变量值替换。例如命令:ls

                      $HOME将列出变量HOME对应目录下的文件。
                      用户可以在命令行中的任何地方进行变量替换。包括命令名本身,例如:

                          $dir=ls
                          $$dir f*

                        将列出以f开头的文件。

                        现在详细的介绍下Bsh的变量。Bsh中有四类变量:用户定义的变量、位置变量(shell参数)、预定义变量及环境变量。

                        用户定义的变量:

                        用户定义的变量由字母和下划线组成,并且变量名的第一个字符不能为数字(0~9)。与其他UNIX名字一样,变量名是大小写敏感的。用户可以在命令行上用"="给变量赋值,例如:


                          $NAME=ice_walk

                        给变量NAME赋值为ice_walk,在应用变量NAME的时候,在NAME前加"$"即可,前面已说,不再废话(别说我废话多,关键是没当过老师)。可以用变量和其他字符组成新的字,例如:


                          $SUN=sun
                          $echo $day

                        在应用shell变量时候,可以在变量名字两边$后面加上{},以更加清楚的显示给shell,哪个是真正的变量,以实现字符串的合并等功能。

                       
                        结果显示:sunday(注意不能echo
                      $SUNday,因为SUNday变量没定义,读者试下执行结果)
                      用户也可以在命令行上同时对多个变量赋值,赋值语句之间用空格分开:

                          $X=x Y=y

                          注意变量赋值是从右到左进行的

                          $X=$Y Y=y
                          X的值是y
                          $X=z Y=$Z

                          Y的值是空(变量未赋值时,shell不报错,而是赋值为空)

                        用户可以使用"unset <变量>"命令清除给变量赋的值

                      用户使用变量时要在其前面加一"$"符,使变量名被变量值所替换。Bsh可以进行变量的条件替换,即只有某种条件发生时才进行替换。替换条件放在一对大括号{}中,如:


                          ${variable: -value}
                      variable是一变量值,value是变量替换使用的默认值

                          $echo Hello $UNAME
                          结果显示:Hello
                          $echo Hello ${UNAME: -there}
                          结果显示:Hello there
                          $echo $UNAME
                          结果显示: (空)
                          $UNAME=John
                          $echo Hello ${UNAME: -there}
                          结果显示:Hello John

                        可以看出,变量替换时将使用命令行中定义的默认值,但变量的值并没有因此而改变。另外一种替换的方法是不但使用默认值进行替换,而且将默认值赋给该变量。其形式如下:


                          $

                        该形式在变量替换后同时把值value符给变量variable。

                          $echo Hello $UNAME
                          结果显示:Hello
                          $echo Hello $
                          结果显示:Hello there
                          $echo $UNAME
                          结果显示:there
                          $UNAME=John
                          $echo Hello $
                          结果显示:Hello John

                        变量替换的值也可以是` `括起来的命令:

                          $USERDIR={$Mydir: -`pwd`}

                        第三种变量的替换方法是只有当变量已赋值时才用指定值替换形式:

                          ${variable: +value}

                          只有变量variable已赋值时,其值才用value替换,否则不进行任何替换,例如:

                          $ERROPT=A
                          $echo ${ERROPT: +"Error tracking is acitive"}
                          结果显示:Error tracking is acitive
                          $ERROPT=
                          $echo ${ERROPT: +"Error tracking is acitive"}
                          结果显示: (空)

                        我们还可以使用错误检查的条件进行变量替换:

                          $

                      当变量variable已设置时,正常替换。否则消息message将送到标准错误输出(若此替换出现在shell程序中,那么该程序将终止)。 例如:


                          $UNAME=
                          $echo $ {UNAME:?"UNAME HAS NOT BEEN SET"}
                          结果显示:UNAME HAS NOT BEEN SET

                          $UNAME=Stephanie
                          $echo $ {UNAME:?"UNAME HAS NOT BEEN SET"}

                          结果显示:Stephanie
                          当没有指定message时,shell将显示一条默认的消息,例如:

                          $UNAME=
                          $echo $
                          结果显示:sh:UNAME:parameter null or not set

                      4>位置变量或Shell参数

                        在shell解释用户的命令时,将把命令行的第一个字作为命令,而其他的字作为参数。当命令对应的可执行文件为Shell程序时,这些参数将作为位置变量传送给该程序。第一个参数记为,第二个为....第九个为。其中1到9是真正的参数名,"$"符只是用来标识变量的替换。


                        位置变量指命令对应的可执行文件名。在后面将详细介绍位置变量。

                        1.只读变量

                        用户将变量赋值后,为了防止以后对该变量的修改,可以用以下命令将该变量设置为只读变量:

                          readonly variable

                        2.export命令

                        shell执行一个程序时,首先为该程序建立一个新的执行环境,称为子shell。在Bourne
                      Shell中变量都是局部的,即他们只在创建他们的Shell中有意义。用户可以用export命令让变量被其他子Shell识别。但某用户的变量是没法让其他用户使用的。


                        当用户启动一个新shell时,该shell将使用默认的提示符。因为赋给变量PS1的值只在当前shell中有效。为了让子Shell使用当前Shell中定义的提示符号,可以使用export命令:


                          $PS1="Enter command:"
                          Enter command:export PS1
                          Enter command:sh
                          Enter command:

                          此时变量PS1变成了全局变量。它可以被其子Shell使用。当变量被设置成全局的以后,将一直保持有效直到用户退出该变量所在的Shell。用户可以在文件.profile中给一个变量永久赋值。详见"规范Shell"。


                      基本语句

                        从本节起,我们将详细介绍Shell程序设计的基本知识,通过编写Shell脚本,用户可以根据自己的需要有条件的或者重复的执行命令。通过Shell程序,可以把单个的UNIX命令组合成一个完全实用的工具,完成用户的任务。


                        1>什么是Shell程序

                        当用户在UNIX Shell中输入了一条复杂的命令,如:

                          $ls -R /|greo myname |pg

                        我们可以称用户在对Shell编程,当把这条语句写在一个文件里,并且符给该文件可执行权限,那么该文件就是我们传统上说的Shell程序。


                        2>简单的Shell程序

                        假设用户每天使用下述命令备份自己的数据文件:

                          $cd /usr/icewalk;ls * |cpio -o > /dev/fd0

                        我们可以把它写在一个文件,如:ba.sh中:

                          $cat >ba.sh
                          cd /usr/icewalk
                          ls * |cpio -o > /dev/fd0
                          ^D  (ctrl_d)

                        程序ba.sh就是Shell脚本,用户可以用vi或其他编辑工具编写更复杂的脚本。

                        此时用户备份文件只需要执行Shell程序ba.sh,执行时需在当前Shell中创建一个子Shell:

                          $sh ba.sh

                        程序sh与用户登陆时执行的Bourne
                      Shell相同,但当Sh命令带参数ba.sh后,它将不再是一个交互式的Shell,而是直接从文件ba.sh中读取命令。

                        执行ba.sh中命令的另一方法是给文件ba.sh执行权限:

                          $chmod +x ba.sh

                        此时,用户可以输入文件名ba.sh做为一个命令来备份自己的数据,需要注意的是,用这种方法执行命令的时候,文件ba.sh必须存在于环境变量$PATH所指定的路径上。

431/3123>
Open Toolbar