想要会的东西太多,却忘记了吃多嚼不烂的道理。

发布新日志

  • 转: 用户名密码的测试方法

    2011-09-26 18:39:25






    别小看了这个用户名密码这么简单的输入框。可测试的内容还是很多的,并且引发的问题也有很多种类。下面就说一说他的测试方法。

    一、用户注册

    只从用户名和密码角度写了几个要考虑的测试点,如果需求中明确规定了安全问题,Email,出生日期,地址,性别等等一系列的格式和字符要求,那就都要写用例测了~

    以等价类划分和边界值法来分析

    1.填写符合要求的数据注册: 用户名字和密码都为最大长度(边界值分析,取上点)

    2.填写符合要求的数据注册 :用户名字和密码都为最小长度(边界值分析,取上点)

    3.填写符合要求的数据注册:用户名字和密码都是非最大和最小长度的数据(边界值分析,取内点)

    4.必填项分别为空注册

    5.用户名长度大于要求注册1位(边界值分析,取离点)

    6.用户名长度小于要求注册1位(边界值分析,取离点)

    7.密码长度大于要求注册1位(边界值分析,取离点)

    8.密码长度小于要求注册1位(边界值分析,取离点)

    9.用户名是不符合要求的字符注册(这个可以划分几个无效的等价类,一般写一两个就行了,如含有空格,#等,看需求是否允许吧~)

    10.密码是不符合要求的字符注册(这个可以划分几个无效的等价类,一般写一两个就行了)

    11.两次输入密码不一致(如果注册时候要输入两次密码,那么这个是必须的)

    12.重新注册存在的用户

    13.改变存在的用户的用户名和密码的大小写,来注册。(有的需求是区分大小写,有的不区分)

    14.看是否支持tap和enter键等;密码是否可以复制粘贴;密码是否以* 之类的加秘符号显示

    备注:边界值的上点、内点和离点大家应该都知道吧,呵呵,这里我就不细说了~~

    二、修改密码

    当然具体情况具体分析哈~不能一概而论~

    实际测试中可能只用到其中几条而已,比如银行卡密码的修改,就不用考虑英文和非法字符,更不用考虑那些TAP之类的快捷键。而有的需要根据需求具体分析了,比如连续出错多少次出现的提示,和一些软件修改密码要求一定时间内有一定的修改次数限制等等。

    1.不输入旧密码,直接改密码

    2.输入错误旧密码

    3.不输入确认新密码

    4.不输入新密码

    5.新密码和确认新密码不一致

    6.新密码中有空格

    7.新密码为空

    8.新密码为符合要求的最多字符

    9.新密码为符合要求的最少字符

    10.新密码为符合要求的非最多和最少字符

    11.新密码为最多字符-1

    12.新密码为最少字符+1

    13.新密码为最多字符+1

    14.新密码为最少字符-1

    15.新密码为非允许字符(如有的密码要求必须是英文和数字组成,那么要试汉字和符号等)

    16.看是否支持tap和enter键等;密码是否可以复制粘贴;密码是否以* 之类的加秘符号

    17.看密码是否区分大小写,新密码中英文小写,确认密码中英文大写

    18.新密码与旧密码一样能否修改成功

    另外一些其他的想法如下:

    1 要测试所有规约中约定可以输入的特殊字符,字母,和数字,要求都可以正常输入、显示正常和添加成功

    2 关注规约中的各种限制,比如长度,大否支持大小写。

    3 考虑各种特殊情况,比如添加同名用户,系统是否正确校验给出提示信息,管理员帐户是否可以删除,因为有些系统管理员拥有最大权限,一旦删除管理员帐户,就不能在前台添加,这给最终用户会带来很多麻烦。比较特殊的是,当用户名中包括了特殊字符,那么对这类用户名的添加同名,修改,删除,系统是否能够正确实现,我就遇到了一个系统,添加同名用户时,如果以前的用户名没有特殊字符,系统可以给出提示信息,如果以前的用户名包含特殊字符,就不校验在插入数据库的时候报错。后来查到原因了,原来是在java中拼SQL语句的时候,因为有"_",所以就调用了一个方法在“_”,前面加了一个转义字符,后来发现不该调用这个方法。所以去掉就好了。所以对待输入框中的特殊字符要多关注。


    4 数值上的长度 之类的,包括出错信息是否合理
    5 特殊字符:比如。 / ' " \ </html> 这些是否会造成系统崩溃

    6 注入式bug:比如密码输入个or 1=1

    7 登录后是否会用明文传递参数

    8 访问控制(不知道这个算不算):登录后保存里面的链接,关了浏览器直接复制链接看能不能访问。
  • 基于Web的系统测试方法

    2011-09-26 16:30:52

  • 转:需求分析的20条法则

    2011-09-26 16:00:07

    需求分析的20条法则
    对商业用户来说,他们后面是成百上千个供应商,前面是成千上万个消费顾客。怎样利用软件管理错综复杂的供应商和消费顾客,如何做好精细到一个小小调料包的进、销、调、存的商品流通工作,这些都是商业企业需要信息管理系统的理由。软件开发的意义也就在于此。而弄清商业用户如此复杂需求的真面目,正是软件开发成功的关键所在。


      经理:“我们要建立一套完整的商业管理软件系统,包括商品的进、销、调、存管理,是总部-门店的连锁经营模式。通过通信手段门店自动订货,供应商自动结算,卖场通过扫条码实现销售,管理人员能够随时查询门店商品销售和库存情况。另外,我们也得为政府部门提供关于商品营运的报告。”

      分析员:“我已经明白这个项目的大体结构框架,这非常重要,但在制定计划之前,我们必须收集一些需求。”

      经理觉得奇怪:“我不是刚告诉你我的需求了吗?”

      分析员:“实际上,您只说明了整个项目的概念和目标。这些高层次的业务需求不足以提供开发的内容和时间。我需要与实际将要使用系统的业务人员进行讨论,然后才能真正明白达到业务目标所需功能和用户要求,了解清楚后,才可以发现哪些是现有组件即可实现的,哪些是需要开发的,这样可节省很多时间。”

      经理:“业务人员都在招商。他们非常忙,没有时间与你们详细讨论各种细节。你能不能说明一下你们现有的系统?”

      分析员尽量解释从用户处收集需求的合理性:“如果我们只是凭空猜想用户的要求,结果不会令人满意。我们只是软件开发人员,而不是采购专家、营运专家或是财务专家,我们并不真正明白您这个企业内部运营需要做些什么。我曾经尝试过,未真正明白这些问题就开始编码,结果没有人对产品满意。”

      经理坚持道:“行了,行了,我们没有那么多的时间。让我来告诉您我们的需求。实际上我也很忙。请马上开始开发,并随时将你们的进展情况告诉我。”

    风险躲在需求的迷雾之后

      以上我们看到的是某客户项目经理与系统开发小组的分析人员讨论业务需求。在项目开发中,所有的项目风险承担者都对需求分析阶段备感兴趣。这里所指的风险承担者包括客户方面的项目负责人和用户,开发方面的需求分析人员和项目管理者。这部分工作做得到位,能开发出很优秀的软件产品,同时也会令客户满意。若处理不好,则会导致误解、挫折、障碍以及潜在的质量和业务价值上的威胁。因此可见——需求分析奠定了软件工程和项目管理的基础。

    拨开需求分析的迷雾

      像这样的对话经常出现在软件开发的过程中。客户项目经理的需求对分析人员来讲,像“雾里看花”般模糊并令开发者感到困惑。那么,我们就拨开雾影,分析一下需求的具体内容:

      ·业务需求——反映了组织机构或客户对系统、产品高层次的目标要求,通常在项目定义与范围文档中予以说明。

      ·用户需求——描述了用户使用产品必须要完成的任务,这在使用实例或方案脚本中予以说明。

      ·功能需求——定义了开发人员必须实现的软件功能,使用户利用系统能够完成他们的任务,从而满足了业务需求。

      ·非功能性的需求——描述了系统展现给用户的行为和执行的操作等,它包括产品必须遵从的标准、规范和约束,操作界面的具体细节和构造上的限制。

      ·需求分析报告——报告所说明的功能需求充分描述了软件系统所应具有的外部行为。“需求分析报告”在开发、测试、质量保证、项目管理以及相关项目功能中起着重要作用。

      前面提到的客户项目经理通常阐明产品的高层次概念和主要业务内容,为后继工作建立了一个指导性的框架。其他任何说明都应遵循“业务需求”的规定,然而“业务需求”并不能为开发人员提供开发所需的许多细节说明。

      下一层次需求——用户需求,必须从使用产品的用户处收集。因此,这些用户构成了另一种软件客户,他们清楚要使用该产品完成什么任务和一些非功能性的特性需求。例如:程序的易用性、健壮性和可靠性,而这些特性将会使用户很好地接受具有该特点的软件产品。

      经理层有时试图代替实际用户说话,但通常他们无法准确说明“用户需求”。用户需求来自产品的真正使用者,必须让实际用户参与到收集需求的过程中。如果不这样做,产品很可能会因缺乏足够的信息而遗留不少隐患。

      在实际需求分析过程中,以上两种客户可能都觉得没有时间与需求分析人员讨论,有时客户还希望分析人员无须讨论和编写需求说明就能说出用户的需求。除非遇到的需求极为简单;否则不能这样做。如果您的组织希望软件成功,那么必须要花上数天时间来消除需求中模糊不清的地方和一些使开发者感到困惑的方面。

      优秀的软件产品建立在优秀的需求基础之上,而优秀的需求源于客户与开发人员之间有效的交流和合作。只有双方参与者都明白自己需要什么、成功的合作需要什么时,才能建立起一种良好的合作关系。

      由于项目的压力与日俱增,所有项目风险承担者有着一个共同目标,那就是大家都想开发出一个既能实现商业价值又能满足用户要求,还能使开发者感到满足的优秀软件产品。

    客户的需求观

      客户与开发人员交流需要好的方法。下面建议20条法则,客户和开发人员可以通过评审以下内容并达成共识。如果遇到分歧,将通过协商达成对各自义务的相互理解,以便减少以后的磨擦(如一方要求而另一方不愿意或不能够满足要求)。

    1、 分析人员要使用符合客户语言习惯的表达

      需求讨论集中于业务需求和任务,因此要使用术语。客户应将有关术语(例如:采价、印花商品等采购术语)教给分析人员,而客户不一定要懂得计算机行业的术语。

    2、分析人员要了解客户的业务及目标

      只有分析人员更好地了解客户的业务,才能使产品更好地满足需要。这将有助于开发人员设计出真正满足客户需要并达到期望的优秀软件。为帮助开发和分析人员,客户可以考虑邀请他们观察自己的工作流程。如果是切换新系统,那么开发和分析人员应使用一下目前的旧系统,有利于他们明白目前系统是怎样工作的,其流程情况以及可供改进之处。s

    3、 分析人员必须编写软件需求报告

      分析人员应将从客户那里获得的所有信息进行整理,以区分业务需求及规范、功能需求、质量目标、解决方法和其他信息。通过这些分析,客户就能得到一份“需求分析报告”,此份报告使开发人员和客户之间针对要开发的产品内容达成协议。报告应以一种客户认为易于翻阅和理解的方式组织编写。客户要评审此报告,以确保报告内容准确完整地表达其需求。一份高质量的“需求分析报告”有助于开发人员开发出真正需要的产品。

    4、 要求得到需求工作结果的解释说明

      分析人员可能采用了多种图表作为文字性“需求分析报告”的补充说明,因为工作图表能很清晰地描述出系统行为的某些方面,所以报告中各种图表有着极高的价值;虽然它们不太难于理解,但是客户可能对此并不熟悉,因此客户可以要求分析人员解释说明每个图表的作用、符号的意义和需求开发工作的结果,以及怎样检查图表有无错误及不一致等。

    5、 开发人员要尊重客户的意见

      如果用户与开发人员之间不能相互理解,那关于需求的讨论将会有障碍。共同合作能使大家“兼听则明”。参与需求开发过程的客户有权要求开发人员尊重他们并珍惜他们为项目成功所付出的时间,同样,客户也应对开发人员为项目成功这一共同目标所做出的努力表示尊重。

    6、 开发人员要对需求及产品实施提出建议和解决方案

      通常客户所说的“需求”已经是一种实际可行的实施方案,分析人员应尽力从这些解决方法中了解真正的业务需求,同时还应找出已有系统与当前业务不符之处,以确保产品不会无效或低效;在彻底弄清业务领域内的事情后,分析人员就能提出相当好的改进方法,有经验且有创造力的分析人员还能提出增加一些用户没有发现的很有价值的系统特性。

    转载请注明源自www.SCMLife.com,请保留版权. 本贴地址:http://bbs.scmlife.com/viewthread.php?tid=4500
    7、 描述产品使用特性

      客户可以要求分析人员在实现功能需求的同时还注意软件的易用性,因为这些易用特性或质量属性能使客户更准确、高效地完成任务。例如:客户有时要求产品要“界面友好”或“健壮”或“高效率”,但对于开发人员来讲,太主观了并无实用价值。正确的做法是,分析人员通过询问和调查了解客户所要的“友好、健壮、高效所包含的具体特性,具体分析哪些特性对哪些特性有负面影响,在性能代价和所提出解决方案的预期利益之间做出权衡,以确保做出合理的取舍。

    8、 允许重用已有的软件组件

      需求通常有一定灵活性,分析人员可能发现已有的某个软件组件与客户描述的需求很相符,在这种情况下,分析人员应提供一些修改需求的选择以便开发人员能够降低新系统的开发成本和节省时间,而不必严格按原有的需求说明开发。所以说,如果想在产品中使用一些已有的商业常用组件,而它们并不完全适合您所需的特性,这时一定程度上的需求灵活性就显得极为重要了。

    9、 要求对变更的代价提供真实可靠的评估

      有时,人们面临更好、也更昂贵的方案时,会做出不同的选择。而这时,对需求变更的影响进行评估从而对业务决策提供帮助,是十分必要的。所以,客户有权利要求开发人员通过分析给出一个真实可信的评估,包括影响、成本和得失等。开发人员不能由于不想实施变更而随意夸大评估成本。

    10、 获得满足客户功能和质量要求的系统

      每个人都希望项目成功,但这不仅要求客户要清晰地告知开发人员关于系统“做什么”所需的所有信息,而且还要求开发人员能通过交流了解清楚取舍与限制,一定要明确说明您的假设和潜在的期望,否则,开发人员开发出的产品很可能无法让您满意。

    11、 给分析人员讲解您的业务

      分析人员要依靠客户讲解业务概念及术语,但客户不能指望分析人员会成为该领域的专家,而只能让他们明白您的问题和目标;不要期望分析人员能把握客户业务的细微潜在之处,他们可能不知道那些对于客户来说理所当然的“常识”。

    12、 抽出时间清楚地说明并完善需求

      客户很忙,但无论如何客户有必要抽出时间参与“头脑高峰会议”的讨论,接受采访或其他获取需求的活动。有些分析人员可能先明白了您的观点,而过后发现还需要您的讲解,这时请耐心对待一些需求和需求的精化工作过程中的反复,因为它是人们交流中很自然的现象,何况这对软件产品的成功极为重要。

    13、 准确而详细地说明需求

      编写一份清晰、准确的需求文档是很困难的。由于处理细节问题不但烦人而且耗时,因此很容易留下模糊不清的需求。但是在开发过程中,必须解决这种模糊性和不准确性,而客户恰恰是为解决这些问题作出决定的最佳人选,否则,就只好靠开发人员去正确猜测了。

      在需求分析中暂时加上“待定”标志是个方法。用该标志可指明哪些是需要进一步讨论、分析或增加信息的地方,有时也可能因为某个特殊需求难以解决或没有人愿意处理它而标注上“待定”。客户要尽量将每项需求的内容都阐述清楚,以便分析人员能准确地将它们写进“软件需求报告”中去。如果客户一时不能准确表达,通常就要求用原型技术,通过原型开发,客户可以同开发人员一起反复修改,不断完善需求定义。

    14、 及时作出决定

      分析人员会要求客户作出一些选择和决定,这些决定包括来自多个用户提出的处理方法或在质量特性冲突和信息准确度中选择折衷方案等。有权作出决定的客户必须积极地对待这一切,尽快做处理,做决定,因为开发人员通常只有等客户做出决定才能行动,而这种等待会延误项目的进展。

    15、 尊重开发人员的需求可行性及成本评估

      所有的软件功能都有其成本。客户所希望的某些产品特性可能在技术上行不通,或者实现它要付出极高的代价,而某些需求试图达到在操作环境中不可能达到的性能,或试图得到一些根本得不到的数据。开发人员会对此作出负面的评价,客户应该尊重他们的意见。

    16、 划分需求的优先级

      绝大多数项目没有足够的时间或资源实现功能性的每个细节。决定哪些特性是必要的,哪些是重要的,是需求开发的主要部分,这只能由客户负责设定需求优先级,因为开发者不可能按照客户的观点决定需求优先级;开发人员将为您确定优先级提供有关每个需求的花费和风险的信息。

      在时间和资源限制下,关于所需特性能否完成或完成多少应尊重开发人员的意见。尽管没有人愿意看到自己所希望的需求在项目中未被实现,但毕竟是要面对现实,业务决策有时不得不依据优先级来缩小项目范围或延长工期,或增加资源,或在质量上寻找折衷。

    17、 评审需求文档和原型

      客户评审需求文档,是给分析人员带来反馈信息的一个机会。如果客户认为编写的“需求分析报告”不够准确,就有必要尽早告知分析人员并为改进提供建议。

      更好的办法是先为产品开发一个原型。这样客户就能提供更有价值的反馈信息给开发人员,使他们更好地理解您的需求;原型并非是一个实际应用产品,但开发人员能将其转化、扩充成功能齐全的系统。

    18、 需求变更要立即联系

      不断的需求变更,会给在预定计划内完成的质量产品带来严重的不利影响。变更是不可避免的,但在开发周期中,变更越在晚期出现,其影响越大;变更不仅会导致代价极高的返工,而且工期将被延误,特别是在大体结构已完成后又需要增加新特性时。所以,一旦客户发现需要变更需求时,请立即通知分析人员。

    19、 遵照开发小组处理需求变更的过程

      为将变更带来的负面影响减少到最低限度,所有参与者必须遵照项目变更控制过程。这要求不放弃所有提出的变更,对每项要求的变更进行分析、综合考虑,最后做出合适的决策,以确定应将哪些变更引入项目中。

    20、 尊重开发人员采用的需求分析过程

      软件开发中最具挑战性的莫过于收集需求并确定其正确性,分析人员采用的方法有其合理性。也许客户认为收集需求的过程不太划算,但请相信花在需求开发上的时间是非常有价值的;如果您理解并支持分析人员为收集、编写需求文档和确保其质量所采用的技术,那么整个过程将会更为顺利。

    “需求确认”意味着什么

      在“需求分析报告”上签字确认,通常被认为是客户同意需求分析的标志行为,然而实际操作中,客户往往把“签字”看作是毫无意义的事情。“他们要我在需求文档的最后一行下面签名,于是我就签了,否则这些开发人员不开始编码。”

      这种态度将带来麻烦,譬如客户想更改需求或对产品不满时就会说:“不错,我是在需求分析报告上签了字,但我并没有时间去读完所有的内容,我是相信你们的,是你们非让我签字的。”

      同样问题也会发生在仅把“签字确认”看作是完成任务的分析人员身上,一旦有需求变更出现,他便指着“需求分析报告”说:“您已经在需求上签字了,所以这些就是我们所开发的,如果您想要别的什么,您应早些告诉我们。”

      这两种态度都是不对的。因为不可能在项目的早期就了解所有的需求,而且毫无疑问地需求将会出现变更,在“需求分析报告”上签字确认是终止需求分析过程的正确方法,所以我们必须明白签字意味着什么。

      对“需求分析报告”的签名是建立在一个需求协议的基线上,因此我们对签名应该这样理解:“我同意这份需求文档表述了我们对项目软件需求的了解,进一步的变更可在此基线上通过项目定义的变更过程来进行。我知道变更可能会使我们重新协商成本、资源和项目阶段任务等事宜。”对需求分析达成一定的共识会使双方易于忍受将来的摩擦,这些摩擦来源于项目的改进和需求的误差或市场和业务的新要求等。

      需求确认将迷雾拨散,显现需求的真面目,给初步的需求开发工作画上了双方都明确的句号,并有助于形成一个持续良好的客户与开发人员的关系,为项目的成功奠定了坚实的基础。
  • 好久没有来了

    2009-11-03 18:19:18

    最近学着装好了eclipse +tomcat.

    前段时间EDI 的时候搞的我明天都很晚下班,没有精力学习。

    十一值班,忙忙碌碌,庸庸碌碌又一月。

  • perl study website

    2009-08-29 23:34:30

  • 关于Solaris的syslog机制

    2009-07-28 19:30:56

    syslog机制负责发送、记录系统内核及工具所产生的信息,由syslog()调用、syslogd守护进程和配置文件/etc/syslog.conf组成。当系统内核及工具产生信息时,通过调用syslog(),把信息送往syslogd,syslogd再根据/etc/syslog.conf中的配置要求,将这些信息分别作如下处理:
    1.记录到系统日志中;
    2.输出到系统控制台上;
    3.转发给指定的用户;
    4.通过网络转发给其它主机上的syslogd。
    通过syslog.conf的配置,我们可以灵活地对信息的发送和保存进行控制。

    syslogd进程在系统启动时由/etc/rc2.d/S74syslog启动。如果需要手工启动或停止syslogd,可以使用命令:
    # /etc/init.d/syslog start | stop

    /etc/syslog.conf文件中的一项配置记录由“选项”(selector)和“动作”(action)两个部分组成,两者间用tab制表符进行分隔。而“选项”又由一个或多个形如“类型.级别”格式的保留字段组合而成,各保留字段间用分号分隔。

    保留字段中的“类型”代表信息产生的源头,可以是:
    kern 由kernel产生的信息;
    user 由用户进程产生的信息。对那些由程序或不在此列出的工具产生的信息,其缺省类型都是“user”;
    mail 邮件系统产生的信息;
    daemon 系统守护进程的信息,如in.ftpd、telnetd;
    auth 由login, su, getty等进行身份认证时产生的信息;
    syslog 由syslogd自己内部产生的信息;
    lpr 行打印spooling系统的信息;
    news USENET 网络新闻系统的信息;
    uucp UUCP系统信息;
    cron cron和at工具信息;
    local0-7 保留为local使用;
    mark syslogd内部产生的时间戳信息;
    * 除mark之外的所有其它类型(此符号不可用以代表所有级别)。

    保留字段中的“级别”代表信息的重要性,可以是:
    emerg 紧急,处于Panic状态。通常应广播到所有用户;
    alert 告警,当前状态必须立即进行纠正。例如,系统数据库崩溃;
    crit  关键状态的警告。例如,硬件故障;
    err   其它错误;
    warning 警告;
    notice 注意;非错误状态的报告,但应特别处理;
    info  通报信息;
    debug 调试程序时的信息;
    none 通常调试程序时用,指示带有none级别的类型产生的信息无需送出。如*.debug;mail.none表示调试时除邮件信息外其它信息都送出。

    “动作”域指示信息发送的目的地。可以是:
    /filename 日志文件。由绝对路径指出的文件名,此文件必须事先建立;
    @host 远程主机;
    user1, user2 指定用户。如果指定用户已登录,那么他们将收到信息;
    * 所有用户。所有已登录的用户都将收到信息。

    我们来看看/etc/syslog.conf文件中的实例:
    ……
    *.err;kern.debug;daemon.notice;mail.crit /var/adm/messages
    ……

    这行中的“action”就是我们常关心的那个/var/adm/messages文件,输出到它的信息源头“selector”是:
    *.err - 所有的一般错误信息;
    kern.debug - 核心产生的调试信息;
    daemon.notice - 守护进程的注意信息;
    mail.crit - 邮件系统的关键警告信息

    于是我们对/var/adm/messages中的东东怎么来的大致清楚一点了。再看下面(不理会那个注释符号“#”):
    ……
    # if a non-loghost machine chooses to have authentication messages
    # sent to the loghost machine, un-comment out the following line:
    #auth.notice ifdef(‘LOGHOST’, /var/log/authlog, @loghost)
    ……

    这里涉及Solaris下的loghost和m4宏解释器。loghost好理解,就是在局域网内多台SUN机器中指定一台作为loghost,大家的syslogd有水就都往它上面灌。具体谁是loghost在/etc/hosts中定义:
    ……
    192.168.1.11 host1 loghost
    192.168.1.22 host2
    ……

    m4负责解释ifdef,它的事迹这里就不去深究了(要考SA的兄弟姐妹们可要去看啊,有题的),反正上面那个ifdef的意思就是:如果本机是loghost,那么信息送到/var/log/authlog中,否则送到@后的主机上。

    下面作为一个示例,看看如何使用syslog机制来对telnet登录进行记录。
    Telnet和ftp等许多网络服务是通过inetd来提供的。因此先检查一下inetd使用了什么类型和级别的syslog调用:

    # man inetd
    ……
    -t Instructs inetd to trace the incoming
    connections for all of its TCP services. It does this by
    logging the client’s IP address and TCP port number,
    along with the name of the service, using the syslog(3)
    facility. UDP services can not be traced. When tracing is
    enabled, inetd uses the syslog facility code ``daemon’’
    and ``notice’’ priority level.
    ……

    就是说,启动带-t选项的inetd,它才会调用syslog来记录TCP服务的细节,类型是daemon,级别是notice。于是先修改inetd的启动脚本/etc/init.d/inetsvc,找到inetd那行,改为:
    /usr/sbin/inetd -s -t &

    前面看到,daemon.notice已经包括在syslog.conf中,action是/var/adm/messages。如果action不想变,那么就不用做修改了。

    重启一下syslogd:
    # /etc/init.d/syslog stop
    # /etc/init.d/syslog start

    重启一下inetd:
    # /etc/init.d/inetsvc stop
    # /etc/init.d/inetsvc start

    试验一下结果。开一个窗口监视有没有新的message来:
    # tail -f /var/adm/messages

    从另一台机器上telnet或ftp上来。上面的监视窗口中应该有输出(^C 终止监视):
    ……
    Jun 18 12:08:42 host1 inetd[755]: [ID 317013 daemon.notice] ftp[759] from 192.168.1.88 1082
    Jun 18 12:09:13 host1 inetd[755]: [ID 317013 daemon.notice] telnet[760] from 192.168.1.88 1083
    Jun 18 12:11:22 host1 inetd[755]: [ID 317013 daemon.notice] ftp[771] from 192.168.1.88 1084

    对软件开发者来说,可以参考关于syslog()的有关资料,将你的软件中的信息进行适当的syslog()调用,以输出到所希望的地方。
  • Shatron_Inv_report.pl

    2009-07-22 15:58:17

    #!/bin/perl

    $ENV{'SYBASE'} = "/opt/sybase11";

    $out = "/tmp/Shatron_inventory_report.xls";

    $email = 'wendzhou@hotmail.com';

    open (OUT,">$out");

    $cmd = "(
            echo \"declare  \@today datetime \"
            echo \"select   \@today = getdate() \"
            echo \"select   'Shatron Inventory as of ', \"
            echo \"         getdate() \"
            echo \"select   'CUST_CODE' +'|'+  'PART_NO' +'|'+ \"
            echo \"         'PALLET_ID' +'|'+ 'NO_of_PKG' +'|'+ 'PKG_UNIT'+'|'+ \"
            echo \"         'QTY_per_PKG' +'|'+ 'QTY_INV' +'|'+ 'QTY_UNIT' +'|'+ \"
            echo \"          'DATE_CODE' +'|'+ 'PO#' \"
            echo \"select   cust_code +'|'+ \"
            echo \"         part_no +'|'+ \"
            echo \"         pallet_id +'|'+ \"
           echo \"          str(no_of_pkg,8) +'|'+ \"
           echo \"          pkg_unit +'|'+ \"
           echo \"          str(qty_per_pkg,8) +'|'+ \"
            echo \"         str(qty_inv,8) +'|'+ \"
           echo \"          qty_unit +'|'+ \"
           echo \"          revision_no +'|'+ \"
           echo \"          lot_rn_manu_no \"
            echo \"from     WOSINV..PALLET_PART_INFO_INV \"
            echo \"where    cust_code='SFO017387' \"
            echo \"order by part_no,pallet_id \"
            echo \"go \"
    ) | /opt/sybase11/bin/isql -Usa -Ppeaceful -SWSFO \\
    | awk '\$1 !~ /^\$|^-|^ +$|^\\\(/ { print \$0 }' \\
    | awk '\$3 !~ /affected/ { print \$0 }' ";

    $cmd = `$cmd`;
    $cmd =~ s/ {2,}/ /g;
    $cmd =~ s/\t//g;
    $cmd =~ s/\|/\t/g;

    print OUT "$cmd\n";

    close (OUT);

    `/icil/server_common_lib/bin/mpack -s 'Shatron(SFO017387)Inventory Report' $out $email`;

  • 重感冒

    2009-07-17 18:45:30

    回来一个星期了,热感冒,打喷嚏,流鼻涕,全身无力。
  • 休假归来

    2009-07-13 19:59:30

    休假2周(6.24-7.7),回家看了爸妈。

    继续学习。

  • 更新

    2009-06-16 21:34:15

    好久没有更新了,最近上班忙着写测试用例,感觉好累,晚上暂时先不看东西了。
  • 如何查看本机外网ip地址

    2009-06-08 22:21:14

    如果我在内网,怎样查看本机外网(公网)ip地址?

    访问本站: ip 查询页面 http://www.ip138.com/  可查看到本机外网(公网)ip地址

     

  • 快速给网站中的图片瘦身

    2009-05-31 23:15:37

    先登陆smushit网站http://smushit.com,然后点击URL按钮,进入网址优化选项。在下面的文本框中要优化的网址,如果有多个网址,换行输入。优化完成后,可以先下载到本地,在上传到服务器上。
    Smushit 还可以了本地优化图片的功能。
    此外,smushit 网站还提供了一个firefox 插件,安装这个插件后会在firefox浏览器的右下角出现一个笑脸的按钮,进入想要优化的网站,然后点击笑脸按钮,就会开始下载目前页面上的所有图片,并且帮助你进行图片瘦身。
  • 检测网站哪个部分影响到整体速度

    2009-05-31 22:55:15

    检测结果,右边显示各个元素的大小,以KB为单位。在左边显示载入的时间,这样就能很快的知道是哪个元素拉了网站载入速度的后腿,然后可以针对该元素进行优化,加快网站整体的运行速度。
  • 使用诱导推断逻辑发现推测

    2009-05-27 11:10:25

    摘抄学习--lessons learned in software testing
    诱导推断(abductive inference)又叫做假设归纳(hypothetical induction),是一种测试员每天都要使用的关键推理形式的有些怪的术语:最佳解释的推理。
    其主要内容是:
    1. 收集一些数据并要找出其中的意义。
    2. 构造可能说明这些数据的各种解释。
    3. 收集更多的数据,以确定或否定每种解释。
    4. 从候选解释中,选择能够最一致说明所有重要数据的解释,如果没有足够证据证实任何结论,则继续搜索。

     诱导推断是科学和测试的基本方法。医生在为病人诊断时就要使用这种方法,测试员在判断产品是什么和不是什么,产品应该怎样运行和不应该怎样运行时,也要使用这种方法。如果要更好的进行诱导推断,则:

    • 收集更多的数据。
    • 收集更重要的数据。
    • 收集更可靠的数据。
    • 理解应用于数据的原因和效果。
    • 找出可以说明数据的更多,更好的解释。
    • 收集更多否定每个解释的数据。
    • 收集更好区分解释的数据。
    • 除非某个解释能说明所有重要数据,并且明显得到比其他解释更好的解释,否则不要确定解释。

    诱导是寻找好的解释的一种系统化方法。尽管诱导推断过程并不提供绝对确定性,但是在很多情况下,这都是最佳手段。

  • 探索需要大量思考

    2009-05-27 10:51:13

    摘抄学习--lessons learned in software testing
    探索就是侦查,是没有边界的搜索。可把探索看做是在太空中遨游,需要前向,后向和侧向思索。
    • 前向思索。根据已知探索未知,从所看到的探索还没有看到的,注意支流和副作用。例如,看到一个打印菜单项,点击看看会发生什么。
    • 后向思索。从怀疑或想象的东西返回到已知,尝试证实或否定自己的推测。例如,怀疑是否有打印这个文档的方法,于是打开菜单并检查是否有打印菜单项。
    • 侧向思索。让自己的工作由于新冒出的想法而转移,然后再将探索主题返回到主线索上。例如,这个图很有意思。嘿!我想该打印一些更复杂的图,看看会怎么样。

    即使没有要测试的产品,也可以探索。可以使用同样的思索过程探索一组文档,或与程序员面谈。通过构建更丰富,更具想象力的产品模型,探索也会不断取得进展。这些模型以后会使测试员设计出有效的测试。

     

  • 为了测试,必须探索

    2009-05-25 22:37:50

    摘抄学习--lessons learned in software testing
    为了很好的测试产品,测试员就必须研究它,必须深入它。这是一种探索过程,即使已经有了产品的完美描述。直到通过想像或接触产品本身而探索规格说明之前,所得到的测试都会是肤浅的。即使充分研究了产品,对产品有了很深的了解,仍然要探索问题。因为所有测试都是采样,而且样本永远也不可能完备,探索式思考要在整个测试项目过程中,在寻求最大化测试价值时起作用。
    这里所谓的探索,是指有目的的漫游:带着一般使命在某个空间中漫游,但没有预先确定的路线。探索包括不断学习和实践。常常需要返回,重复或在没有经过培训的人看来是浪费的其他过程。也许正因为如此,探索对于测试和对软件工程的重要性,常常没有得到重视,甚至受到这个领域的文献作者和顾问的嘲笑。
    证明我们关于探索核心重要性的论断超出了本书的主题范围。生动地体验探索的一种方法,就是观察自己在不看印有盒子上的完成图的情况下,如何拼接拼图板,或玩20点问题或策划游戏。请注意,通过预先严格确定的步骤进行。在这些活动中会怎样遇到更多的困难,得到更少的回报。
  • 直觉是不错的开始,但又是糟糕的结束

    2009-05-25 22:22:02

    摘抄学习--lessons learned in software testing
    测试员很想根据自己的直觉使用具体的测试数据,或判断具体的输出,即测试员自己知道的“本能感觉”,即使说不出来使用这些知识的合理性的理由。我们认为这是有用的感觉,但是只是在开始时更有用,而不是在其他时候。
    除了直觉有很强的偏见这个事实之外,真正的问题还在于测试员试图让其他人(例如程序员和经理)认真地对待自己的错误报告和质量评估。除非这种发现基于大家都有的直觉,否则测试员的工作建议很可能不被采用。
    因此,我们建议把直觉当作指南,但不能用作合理性证明。当有“这是问题因为它显然是问题”的想法时,可考虑换一种方式:“这是问题,因为我观察到产品行为与需求X.Y和Z矛盾,而我的客户很看重这些需求。“
     
  • 所有测试都试图回答某些问题

    2009-05-09 10:56:59

    摘抄学习--lessons learned in software testing

    所执行的所有测试,都是要回答有关现实的产品和应该得到的产品之间关系的某个问题。有时测试员完全没有意识到自己在回答问题。如果测试员只是在寻找明显的问题可能还好,但是在很多情况下,问题并不会闪烁着“请报告我”的提示自己跳出来。产品的有些错误行为用户可能一眼就会看出,尽管测试员可能没有注意到。在任何测试活动中,都要问自己什么样的问题应该推动自己评估测试策略,否则就会更像是游客,而不是测试员。

  • 测试员不只是游客

    2009-05-09 10:40:19

    摘抄学习--lessons learned in software testing

    测试员对产品做的大量不是测试的事,有助于测试员对产品的了解。测试员可以浏览产品,看看产品由什么组成,怎么工作。这样做有很高价值,但这不能算是测试。测试员与游客之间的差别在于,测试员把精力放在评估产品上,而不是见证产品。虽然不必事先预测产品应该表现出的行为,但是试验产品能力的活动还没有成为测试,除非而且直到测试员运用某种如果问题存在就能标识的原理或过程时,这种活动才可能成为测试。

  • 黑盒测试并不是基于无知的测试

    2009-05-09 10:04:29

    摘抄学习--lessons learned in software testing

    黑盒测试意味着产品内部知识在测试中不起重要作用。大多数测试员都是黑盒测试员。为了做好黑盒测试,就要了解用户,了解他们的期望和需要,了解技术,了解软件运行的配置,了解这个软件与之交互的其他软件,了解软件需要的数据,了解开发过程,等等。黑盒测试的优势在于测试员可能与程序员的思考不同,因此有可能预测出程序员所遗漏的风险。

    黑盒测试强调有关软件的用户和环境知识,这一点并不是所有人都喜欢的。我们甚至把黑盒测试描述为基于无知的测试,因为测试员自始至终并不了解软件内部代码。我们认为这反映出对测试团队角色的根本误解。我们不反对测试员了解产品的工作原理。测试员对产品了解的越多,了解产品的方式越多,越能够更好的测试它。但是,如果测试员主要关注的是源代码,以及能够从源代码导出的测试,则测试员所做的工作也许就是程序员已经做过的,并且测试员关于这些代码的知识少于程序员。

371/212>
Open Toolbar