如果你是一个Linux用户,你可能听说过,不需要对你的Linux文件系统进行碎片整理。你可能还会注意到,Linux发行版并没有附带磁盘碎片整理工具。这是为什么呢?想要知道为什么在正常使用中,Linux文件系统不需要进行碎片整理,而Windows要。你需要了解为什么会生成碎片,而Linux和Windows这两个文件系统,它们分别是如何工作的。
什么是碎片
许多Windows用户,即使没有太多经验,我相信他们也会定期进行碎片整理,来加速其电脑。为什么要这么做,许多人也不知道。
简单的说,每个硬盘驱动器有许多的扇区,每一个扇区都可以包含一些小的数据片段。对于特别大的文件,就必须存储在许多不同的扇区里。再比方说文件系统中保存的一些不同的文件,其中每个文件都将存储在连续空间的扇区里。后来,你更新你原先保存的文件,增加文件的大小。文件系统将会尝试存储文件的新增部分到原先扇区空间的旁边。不幸的是,如果没有足够的连续空间,该文件必须被分割成多个片段 — 这就碎片生成的原因。当你的硬盘读取文件的时候,磁头必须跳过硬盘上不同的物理位置之间来读取每个扇区的数据 — 这就是变慢的原因。
碎片整理是一个集中的过程,移动比特文件,以减少碎片,确保每个文件在驱动器上是连续的。
当然,固态硬盘不同,它没有移动部件,不应该进行碎片整理 - 对SSD进行磁盘整理实际上会减少其使用寿命。此外,最新版本的Windows上,你不需要担心整理你的文件系统碎片 - Windows会自动帮你做。
Windows文件系统是如何工作的
微软旧的FAT文件系统,最后一次看到默认在Windows 98和ME,现在也使用在USB闪存盘上,它不能智能安排文件。当你保存文件到FAT文件系统上,它会尽可能将其保存在接近磁盘开始的空间上。当你保存第二个文件,它会保存紧接在第一个文件的后面, 以此类推。当原始文件大小增长,附近没有空闲空间为他们增长,他们总是会生成碎片。
微软新的NTFS文件系统,使用在Windows XP和2000上,似乎变得更智能一点儿,它给硬盘上的文件周围分配了更多的“缓冲”自由空间。虽然,任何Windows用户可以告诉你,随着时间的推移,NTFS文件系统仍然会生成碎片。
由于使用这些文件系统进行工作,他们需要进行碎片整理,以确保其性能不下降。微软最新版本的Windows可以在后台定时运行碎片整理来缓解了这个问题。
Linux文件系统是如何工作的
Linux有ext2、ext3和ext4文件系统,ext4文件系统使用在Ubuntu和其他当前的Linux发行版本中,它有着更智能的文件分配方式,而不是将多个文件相互靠近放在硬盘上。Linux文件系统分散在不同的文件磁盘,并留下了大量的自由空间。当一个文件需要编辑增长,通常是会有足够的空闲空间。如果碎片确实发生,文件系统将会试图移动文件,来减少碎片。在正常使用情况下,不需要碎片整理工具。
如果你的文件系统已满或是95%(甚至80%),你才可能开始看到一些碎片。总之,文件系统的设计,在正常使用过程中可以避免碎片的生成。
如果你的Linux上有碎片问题,你可能需要一个更大的硬盘。如果你确实需要整理文件系统,最简单的、最可靠的方法可能是:从分区中复制备份所有的文件,再从分区中清除所有文件,然后在将文件复制回到分区。这样文件系统将会智能地分配文件复制到磁盘上。
你也可以使用 fsck 命令衡量Linux文件系统的碎片 - 寻找输出“非相邻节点”。
在编写案例之前,首先先理解该交易对应的需求,把握交易中基本业务流以及备选流。其中基本业务流主要是看该交易的基本功能是否已正确实现;备选流 是看涉及到选输项连带出异于基本流的交易页面,以及一些反例的情况。然后根据交易类型或者交易代码来划分大的场景,在大场景下,根据交易类型来划分小的场 景。若小场景下还涉及到对应的关联关系,再根据关联关系来细化。最后根据划分的大小场景,根据所对应的需求,加之一些
测试案例的编写方法来编写案例。
一般系统中的栏位大致可以分为:1、输入项;2、选输项;3、跳过项;4、回显项;5、选择项(下拉框形式)。下面将对各中栏位的一般规则做详细的说明。
1、输入项:该种栏位一般是输入卡号,账号,金额,凭证等。这类的栏位,首先明确栏位的相关控制,然后再加上相对应的错误。例如一般的交易都会涉及到金 额这个输入项。除去一些栏位的特殊要求,在编写案例的时候,都应该考虑到金额的边界值,负数,除数字之外的字母,符号以及这个栏位的最大输入字符数等等。
2、选输项:这种栏位一般可输入,也可不输入。遇到类似的情况,首先考虑该栏位要是输入的话,是否有限制,是只输入汉字,还是只输入数字等;是否有规定 最大的字符数。其次我们考虑应该是若不输入,是不是对交易的完成进行有影响。最后一般交易都会涉及到打印这个操作,我们也应考虑交易完成之后,针对该栏位 打印出的结果是否能够正确显示
3、跳过项:该种栏位都会同一交易页面的某个栏位会有一定的联系。这类交易只需根据对应关系即可,当触发这个关系的是,看该栏位能否正确跳过就可以。
4、回显项:这种栏位跟上面跳过项有点类似,在涉案例的时候,我们除了考虑能否回显之外,还能考虑的是回显的内容是否正确,以及格式,排版方面是否美观等等
5、选输项:选输项的栏位分两种情况,第一种是根据之前的输入来选择该栏位的内容;第二中是该栏位不同的选择会影响之后栏位的内容。遇到这种栏位的时候,通常会用到等价类的方法来划分可选择的项,当然前提还是得先捋清楚这个栏位跟其他栏位的关联关系。
最后需要补充一点的是,上面的所说的内容都是单纯从单一交易来说的,在设计案例的时候,我们也应该考虑交易的一些后续操作。如:开了一个通存通兑的账 户,你得去验证该账户是否可以进行通存通兑的交易;做了一笔转账交易,应该考虑到去查看下涉及账号的变化是否正确,以及系统中的流水记录是否准确等等。
正好现在要求写一些设计案例的规则,上面是我目前所能想到的,欢迎大家多多批评,指教!
QTP支持以下环境:
Active X、Delphi、Java、Net、Oracle、People Soft Power Builder、SAP、Siebel、Stingray Terminal Emulator、Visual Basic Visual Age 、Web、Web Services
2)QTP的对象库类型是什么?
QTP支持两种类型的对象库:
(1) 共享对象库(也叫全局对象库)
(2) 单例对象库(也叫局域对象库)
共享对象库在处理多次测试中的静态对象时适用,扩展名是“.tsr”。
默认的是单例对象库,它的扩展名是“.mtr”
3)可以在其他测试中用脚本语言调用QTP测试吗?假设有四个测试,我想在一个主脚本中调用这些测试,这种QTP中可能吗?
答案是肯定的。你可以在你的测试中调用四个甚至更多脚本。为了达到这个目的,需保证相应脚本中的Actions是可重用的。然后从目标脚本中可以使调用这些可重用的actions。
4)什么是action split?在QTP中使用action split的目的何在?
Action split将存在的action拆分为两部分,目的在actions函数的基础上提高代码的可重用性。
5)在QTP中你如何处理Java树?
首先,选择 Java Add-In 启动QTP。第二步记录在Java树中的操作,如果在记录过程中遇到问题,选择Tools > Object Identification > Java、tree object,强制更改辅助属性来启用识别。
提示:对于任何环境的对象,你都可以把用类似的方法回答。
例如:如果问题是你怎样检查SAP多选框,你说,首先我该选择SAP Add in……等等。
6)解释一下QTP是如何识别对象的?
QTP识别任何GUI对象基于其相应的属性。当记录的时候,QTP在对象存储库的GUI对象中识别并且存储特殊属性(如在物体识别设置中定义的一样)。在运行时,QTP将比较存储属性值与屏幕上的属性。
7)QTP中有多少种记录模式?分别在什么时候用到?
QTP支持三种记录模式:
(1)普通模式,也叫上下文模式
(2)低级记录模式
(3)模拟模式
普通模式:默认的记录模式,充分利用了QTP的试验对象模型。它可识别屏幕任何位置的对象。这是重新编码的最佳模式,用于大多数的自动化测试。
低级记录模式: 这个模式准确地记录鼠标操作的x,y坐标。它有助于测试哈希表。它是用于记录QTP的正常模式下的不确定对象。
模拟模式:这个模式记录执行关于屏幕/应用程序窗口时鼠标和键盘的精确“动作”。这种模式对一些操作是很有用的,例如画画、记录签名、拖放操作。
8)你怎样在一个action中调用另一个action? 调用action有两种方法:
(1)调用复制的action。用这种方法,操作对象存储库、脚本和时间戳将被复制到目标测试脚本。
(2)调用现有的action。用这种方法,操作对象存储库、脚本和时间戳不会被复制,但一个调用(参考)将在源脚本的action上生成。
9)什么是虚拟对象?
应用程序可能包含有着像标准对象行为的对象,但不被QTP识别。您可以把这些对象定义为虚拟对象并将它们映射到标准的类,比如按钮或一个复选框。QTP在运行的会话中在虚拟对象上模拟用户的动作。在测试结果里,虚拟对象被当成标准的类对象展示出来。
例如,假设你想记录一个测试包含用户单击的位图的Web页面。位图包含几个不同的超链接区域,每个区域打开一个不同的目的页面。当你记录一个测试,Web站点匹配单击位图的坐标并且打开目标页面。
在运行的会话中启用QTP以点击所需坐标,你可以为一个区域的位图定义一个虚拟对象,其中包括那些坐标,并将其映射到按钮类。当运行一个测试时,QTP单击一个被定义为虚拟对象位图所在区域,这样网址就可以打开正确的目的地页面了。
10)如何使用QTP执行跨平台测试和跨浏览器测试?你能用一些例子解释说明吗?
创建单独的Actions,以满足不同的操作系统和浏览器的需要。
跨平台测试:
用内置的环境变量挖掘操作系统信息。
如:平台=环境(“操作系统”)。然后基于平台需要调用你记录在那个特定的平台的actions。
跨浏览器测试:
使用代码Browser("Core Values").GetROProperty("version"),可提取浏览器和它的相关版本。例如:Internet Explorer 6或Netscape 5,基于这个值您可以调用与浏览器相关的actions。
11)对象的逻辑名字是什么?
逻辑名字是QTP 在库里创建一个可唯一地与应用里的其他对象识别的对象时起的名字。它被QTP用来映射对象库中对象名相应的描述。如:Browser("Browser").Page("Guru99") ,在这里,Guru99 是对象的逻辑名字。
12)什么是描述性编程?
通常情况下,一个对象及其属性必须被记录在对象资源库,让QTP执行操作。
用描述性编程,你不用在对象资源库里储存对象及其属性值,而是在脚本里提到属性值对。
描述性编程背后的这种思想不是想绕开对象库,而是帮助识别静态对象。
13)运用描述性编程的时候,你用什么属性来识别浏览器网页?
可以用名字属性。
如:ex:
Browser("name:="xxx"").page("name:="xxxx"").....
或者,我们也可以用属性"micClass"。
如:ex:
Browser("micClass:=browser").page("micClass:=page")....
14)在远程机器上使用QTP时,我们能否记录应用的运行过程呢? 当然可以。你可以通过本地浏览器而不是通过像citrix 这样的遥控器记录你进入的远程应用。
如果你仍然不能记录,建议您将QTP 和应用安装在同一个机器上。
15)用一个例子解释创建对象的关键词。
创建并返回一个自动化对象的引用。
语法:CreateObject(servername.typename [,location])
参数:
servername:需要。提供对象的应用的名字。
typename:需要。创建对象的类型或者类。
location:可选。创建对象的网络服务器名字。
16)你能在Per-Action 和Shared Object Repository中切换吗?如果能,怎么切换的?
可以转换。找到Test,然后选择Settings,最后选择Resources,在这里可以选择储存库了。
17)什么是对象间谍?如何使用它?
对象间谍有助于确定正在被测试的应用的运行测试时间对象属性和方法。
您可以直接从工具栏或者对象库对华康直接访问对象间谍。
这在描述编程过程中非常有用。
18)光序标志符就可以使一个对象独一无二,那为什么不给他们顶级优先权呢?为什么它是先强制后辅助的?为什么我们不能直获取序标志符?
因素如下:
(a)如果两个对象彼此重叠,基于位置的对象识别将失败。
(b)如果仅基于索引识别你的脚本可以运行,但是执行时间将增加。
因此使用强制和辅助的特性。
19)在QTP代码文件中扩展名是什么?
代码的文件扩展名是script.mts.
20)简要解释一下QTP自动化对象模型。
QTP自动化对象模型处理自动化QTP本身。几乎所有的QTP提供的配置和功能都用QTP自动化对象模型展示。
几乎所有QTP的对话框有一个相应的自动化对象,可以使用自动化对象模型的相关属性或者方法设置或检索。
QTP自动化对象可以和标准的VB编程元素一起使用,如迭代循环或条件语句来帮助你设计脚本的选择。
问题描述:
如何进行自动化测试的结果度量?
精彩答案:
会员 hsjzfling:
分析命题,侧重点是在结果度量上,那么对于结果的分析,我们可以从以下几个方面来看:
1、引入自动化测试之后,对于提交产品质量的影响
通常我们可以用遗留到客户手中的缺陷,也就是外部缺陷率来作为衡量产品质量的主要因素之一,那么引入自动化测试之后,能否有效的降低外部缺陷率,特别是外部缺陷中由于回归测试范围不全导致的缺陷,可以作为自动化测试结果度量的重要指标之一。
2、自动化测试的投入产出比分析
好的自动化测试体系除了会比人更精确外,还应当会有较高的投入产出比,可以通过 自动化人力投入人天数 / 自动化测试执行所能替代的手工测试工作量人天数 这一结果来衡量。通常这一比例会在自动化初期较低,而随着周期越长,该数值会呈较明显上升趋势。
在这一环节,自动化执行的频率显得相当重要,但执行目的也应是相当明确的。另外发现的缺陷数可以从侧面反应自动化测试的价值,但不应作为主要的结果度量指标。
3、自动化测试系统自身质量分析
自动化测试系统也是由脚本等构成的软件系统,自身的资产与过程也需要有严格的控制与度量,一般会从以下几个方面来衡量:
● 自动化测试覆盖范围内的缺陷遗漏率
● 自动化测试执行过程的稳定性与完整性
● 维护工作占总工作量的比例
● 自动化执行效率分析
● 脚本开发效率分析
原帖地址:http://bbs.51testing.com/thread-921682-1-1.html
版权声明:本文由会员hsjzfling首发于51Testing软件测试论坛每周一问活动。
原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。
通信时代-软件时代-互联网时代-移动
互联网时代-大数据时代
这些耳熟能详的时代印在每一个IT从业者的脑海中
通信时代的TC,Bug 用word excel;
软件时代的TC,Bug 以QC为代表,成为无数企业的盗版软件;
互联网时代的TC,Bug 延续着QC的流程与属性,将一个桌面软件web化,对TC,Bug本质的改变,不多;
移动互联网时代的TC,Bug 继续延续QC的web化+需求改进 VS 真正的变革。
变革创新的一些思考:
1、移动APP满天飞,应用层面的创新比比皆是,研发系统的创新却被忽视,一个测试人员在移动端发现了bug,却要回到PC端来报bug,反人性。
2、移动端APP主流程的场景每天产品经理,运营,开发,测试都在用,测试人员还是被要求PC端写出主流程场景用例,不能复用,反人性。
3、在软件时代,每个测试从业者都被要求讲述清楚严重性与优先级的区别,在现在互联网,移动互联网,大数据时代,好多的从业者已经不清楚了,不清楚了不是从业者的错,是系统需要升级了,不需要的,去掉,追求极简与易用。
变革创新的一些敢想:
1、TC,Bug为什么不能结合具体的场景自动生成。
2、为什么报个bug不能三步以内完成,所谓bug的属性如主题,分配给,优先级,系统,重现步骤等为什么一定要出现。
今年系统的建设,将会以更加开放的方式来进行,研发系统的建设,技术是基础,创新是关键,对千人的研发支撑,创新,互动,快速迭代是提升大规模工程小团队迭代速度的关键。
除了TC,Bug,移动的框架建设,移动的平台建设,PC自动化框架,创新的渠道建设,我们需要更加有挑战自我的人一起加入去尝试,不是我们改变了世界,是世界改变了我们。
若你想成为优秀的
测试项目管理者,你就反思如下内容是否做到:
1)在一个项目中多与开发和产品负责人讨论并了解变化,因为我们的规范永远不能保证测试的输入没有遗漏;
2)在一个项目中多参与测试方案、测试用例、测试方法、测试工具、测试过程、测试结果的评审与讨论,弥补下属或者自己考虑不周全的问题;最好可以请开发负责人参加;
3)在一个项目中多考虑测试效率和测试效果的问题,这样可以不断启用新的测试方法和测试流程来提高效率、保证测试效果;
4)在一个项目中多多进行阶段小结,这样可以弥补一些测试不足的地方,并很好地规划下一个阶段的计划;测试计划不是一成不变的,必须定期调整;
5)在一个项目中涉及到变更时,要再次评审测试方案、测试用例、测试方法、测试工具;若频繁变更,则更要把握好节奏;
6)在一个项目中要非常重视组件/模块的接口测试、集成测试,不仅表现在方案、用例上,同时也表现在测试时间的安排和人的协调管理上;
7)在一个项目中要非常重视下属直接参与技术讨论会议的重要性,既树立他与开发人员沟通的信心,又加深了下属对项目的了解情况,对未来的工作开展非常有利;
8)在一个项目中对于还没有掌握沟通技巧或者对自己没有信心的下属,请带着他一起和开发或者产品进行沟通,或者鼓励他去沟通,并了解他沟通的效果并指出下次沟通的注意事项;
9)在一个项目中你要了解自己的知识面是否与该项目匹配,不匹配提前做好准备;
10)在一个项目中你也要了解你的下属能力与该项目的要求是否匹配,若不匹配,要不换人,要不请开发来培训;
11)在一个项目中你不要和下属争功,上级对你的考察永远是团队和项目,帮助下属成长和保证项目质量是你永远的责任;
12)在一个项目中你的懒惰将会对下属和项目造成极坏的影响,因为你是核心。
若你还想往上发展,就不断地在项目中锻炼自己的同时,让自己多关注技术、管理和行业,缺哪个补哪个。
5.2 Web性能测试方法的比较与共性 在5.1节中,我们学习了9种Web性能测试的方法,在本节中通过总结的形式,指出它们的不同,并从操作步骤等方面指出它们的共性,供读者参考。
5.2.1 各种Web性能测试方法的比较
性能测试包 含的这9种具体测试方法,实际上是从不同的角度和出发点来考察Web应用的性能表现。在这些方法中,有的关注"点",比如负载测试所关注的性能极限;有的 关注"面",比如性能测试所关注的一般性能情况;还有的关注"变化",比如尖峰冲击测试所关注的用户数量突然增加。具体来说:
性能测试是整个广义的性能测试中最基本的、也是必备的方法,它获得网站总体性能的评估,使网站的各个参与者对情况有基本了解。它是偏向总体、宏观的。
负载测试通过不断给Web应用增加负荷的过程来获得系统能够承受的最大压力数值。它确定了性能的最大限度和范围。
尖峰冲击测试、并发测试都是从在线用户数量这个因素来考察Web应用是否健壮,不同的是尖峰冲击测试注重在线用户的变化率,并发测试注重在线用户的绝对值。
压力测试考察了Web应用在服务器较大负荷条件下的表现,与并发测试、耐久度测试(或可靠性测试)分别侧重在线用户数量与运行时间两个具体因素不同。
配置测试为现有Web应用发挥最大效能提供了一种途径。它更面向网站性能优化,而不是发现网站性能上的Bug。
失败恢复测试则为网站把好最后一道关口,验证一旦网站出现问题后能够快速恢复的能力。
【各性能测试方法执行的时机】
正如了解一个人需要从多方面去获得信息一样,了解网站的真实性能情况也需要以上各种性能测试方法的配合。在实际工作中,各项测试的开始时间不一定是一成不变的,可以因公司规定、制定测试计划的工程师个人理解与习惯不同而灵活设置。笔者个人采取的性能测试顺序如图5-13所示。
图5-13 笔者采用的各性能测试方法开始时间顺序示意
5.2.2 各种Web性能测试方法的相同点 虽然各种Web性能测试在测试理念上有一些区别,但它们具有更多的相同点,这些相同点导致各种性能测试方法在实际工作中往往界限并不非常清楚,"你中有我,我中有你":
(1)它们同属于性能测试的范畴,都遵循性能测试的3个目的。
获得Web应用的性能表现情况。
发现并验证、修改Web应用中影响性能的Bug。
为网站性能优化提供数据参考。
(2)它们的测试步骤均类似,都具有如下阶段。
测试计划阶段:约定测试所采用的具体方法、时间、资源。
测试准备阶段:确定测试采用的Web应用版本号、准备测试环境。自动测试还需要准备、录制模拟场景等的脚本等工作。
测试实施阶段:进行测试,获得测试结果。
测试分析阶段:对结果进行分析,发现Bug或性能优化关键点。
测试报告发送:将分析结果进行总结,发送给网站相关人员。
测试总结阶段:综合各种测试结果,积累经验,为下一次测试打下坚实基础。
测试步骤在后面的章节还要具体涉及,比如测试计划的编写,测试结果的分析,测试报告的发送等,这里就不展开讨论了。
5.3 本章小结
本章主要介绍了Web性能测试的目的和具体测试的分类/方法,这9种方法分别是:
性能测试(Performance Testing);
压力测试(Stress Testing);
负载测试(Load Testing);
并发测试(Concurrency Testing);
配置测试(Configuration Testing);
耐久度测试(Endurance Testing);
可靠性测试(Reliability Testing);
尖峰冲击测试(Spike Testing);
失败恢复测试(Failover Testing)。
其中,性能测试是整个广义性能测试中最基本、也是必备的一个方法,能够获得被测试网站的一般性能。负载测试、尖峰冲击测试主要是查看Web应用 在极端情况下的表现,压力测试、并发测试和耐久度测试(可靠性测试)分别考察Web应用在较大负荷、多用户和长时间运行3种条件下的表现,验证了网站受到 具体重要因素影响的程度。配置测试则是为现有Web应用的优化提供了一种途径。失败恢复测试则为提高网站的可用性、预防和补救网站出现的问题提供了验证的 方法。
总之,合理、灵活地利用以上这些测试方法,可以使网站在开发阶段、测试阶段、部署阶段、运行阶段有关性能方面都有全方位的质量报告与质量保证,从而给予网站更优化的性能、用户更快速的响应,以及公司其他相关部门更多的信息、更大的信心。
(未完待续)
相关链接:
捉虫记--大容量Web应用性能测试与LoadRunner实战(连载一)
捉虫记--大容量Web应用性能测试与LoadRunner实战(连载二)
捉虫记--大容量Web应用性能测试与LoadRunner实战(连载三)
捉虫记--大容量Web应用性能测试与LoadRunner实战(连载四)
捉虫记--大容量Web应用性能测试与LoadRunner实战(连载五)
项目绩效的重要衡量指标之一便是时间,这里总结下亲身经历的三步曲。
第一个阶段:项目经理简单估算+倒推+部门预备机动人员
优点:估算速度非常快(很多时候,项目计划都是从上级给的发布时间倒推出里程碑)
缺点:计划非常不准,项目成功率不高。主要原因是:
1)项目经理个人思维限制考虑事情不可能百分之百周全,尤其遇到新的项目经理,项目成功的几率更是直线下降。
2)部门的人员总是要干活的,当项目发生风险时,原计划的机动人员总是不够用,或是不能停下手头的事投入项目中,如果遇到多个项目同时需要机动人员支援时,整体部门基本要全线加班,集体奋斗了。
3)项目组成员参与度不够,如果工作加班,有一定怨言
总体来说:还好每当这时候项目经理都能身先士卒加班,这时候部门的同事都是难兄难弟,总是很辛苦,但是项目结果总是不理想,不能按期交付。
第二个阶段:公司级形成估算团队做专家估算
为了改进估算,同时保证各部门绩效的公平性,公司针对A部门的项目会找其他的部门的专家参与估算,估算使用3点发计算出版本时间点,如果某个专家估算的不 准,则要求重新估算或当面讨论,最终取得一致后将成为项目发布的绩效点.
优点:相对公平,有一定信服力
缺点:
1)容易出现扯皮现象,项目估算时间很长,并且外部估算的时间计划难以转化为内部计划,工作量浪费很大。
2)专家质量与主动参与度难以保证,尤其是参加多次估算后,专家容易倦怠
3)公司不关注人员分配,不考虑具体项目的最长路径,计算时间公式为:工作量/人力=项目时间
4)项目组成员参与度不够,如果工作加班,有一定怨言
总体来说:公司级的估算是CMMI引进到公司的,起到了很大作用,但是一定程度上造成了公司级的RDM组织和部门的对立,能力强的项目经理能够做很多线下活动,从而得到自己的绩效时间期望。
第三个阶段:部门自下向上估算+专家指导
其实第二个阶段和第三个阶段在一定程度上是有重叠的,第二阶段中,有一些先知先觉的项目经理,在公司开始进行估算前,首先进行了内部自下向上的估算,这样自己知道了自己的底限,如果有关键路径消除不掉,则要在总工作量加大,以达成自己的预期。
第三阶段主要的特点是项目估算以部门及项目为主导,当出现关键路径后,部门或公司专家帮助消除,如果消除不了,以项目估算为准做绩效点。
优点:
1)能够保证信服力
2)鼓励项目经理一开始把版本事情考虑周全,如果项目计划可行性非常高
3)全体项目人员参与的估算,更加准确,并且成员愿意为自己估算的时间负责
4)RDM和部门关系形成互助关系
5)估算结束后,直接产出可执行的项目计划
缺点:
1)估算周期稍长,通常需求基线后1-2周能给出
总体来说:这种方法是我个人最推崇的方法,能够有效提高员工的参与度及估算的准确度,同时维持组织的互助性,对版本成功非常有帮助。
相关链接:
项目实战笔记之一:高效会议的组织方法
项目实战笔记之二:风险管理
摘要: 在测试工作中,每个项目都有的特点,那么测试方法和测试所运用的工具也各有不同,本文主要论述在工作中灵活运用测试方法和身边的工具,既能提高工作效率,也能达到很好的测试效果。
正文:
在测试过程中往往都会遇到很多麻烦的工作,例如:添加数据,为所测试的内容准备很多种类的数据,这种工作在测试活动中可能会占据很多的测试时间,有时我们运用SQL语 句进行数据的直接导入,有时我们运用功能自动化工具生成数据等,方法很多,但是不是每次都能遇到合适的环境和条件来运用这些工具和方法,例如:在表关联多 的情况下使用语句导入时就会花费大量的时间,而且语句导入的数据都具有重复性和规律性,想设计多种数据符合测试条件时就比较困难,所以在不同的项目中,需 要针对不同的测试情况来选择合适的测试方法和工具。在下面的段落中我将用所做实际项目,来论述如何灵活的运用测试方法和测试辅助工具。
在今年所承接的测试项目中有一个数据管理方面的项目,即《******管理系统》,该项目的重点功能体现在统计方面,而此项目的统计功能具有以下特点:第 一、统计功能多,有7大统计功能,每个统计有三个以上统计表需要测试,统计项多,统计项多达30项;第二、统计数据按地区由下向上逐级填报,分3级填报; 第三、有一定的业务统计规则,但是统计规则相对简单,容易计算;第四、统计数据相对不复杂,没有太多关联;第五、需要设计各种方案进行统计的测试,即意味 着需要多种测试数据,且需要提前设计,否则返工会浪费大量的测试时间。
我们现在分析出了这个项目的重点以及重点功能的特点,也看到了这 些特点都包含着很多困难需要我们去解决,那么在处理问题或者说遇到项目需要寻找测试方法和策略的时候,应该如何去解决呢?首先就是明确目的,抓住重点,这 里我们已经做到了,已经看到了这个项目的重点和这个重点需要完成内容;其次,就需要列出我们需要解决哪些问题,这一点我们也做到了,就是前一段落中对特点 的分析;最后就是分析问题解决问题了。让我们来看如何将上述的特点逐一得到解决。
统计项多达30项,意味着数据多,容易错行,容易眼 花,核对数据时容易出错,这就需要我们花费很多时间去核对每个单元格的数据是否正确,这样不但工作量大,而且容易在核对时出错,我们需要一个简单的方法使 得核对数据时比较方便,这个方法我们先放放,我们来继续看后面的几个特点。数据分县市省三级,逐级上报:填写了最底层数据,最好能够自动得到第二层第三层 的数据,即填写了县级的数据就能自动得到市上和省上的数据;第三、四个特点是有业务计算规则但不复杂,都是加减之类的公式,数据不复杂没有太复杂的关联, 同时,这个项目的统计功能用finereport实现统计功能,对于熟悉Excel功能人来说,这两个工具有很多相似之处,并且Excel基本能够满足上 述的特点,而且能够达到简单,方便和提高效率的目,体现在以下几个方面:
● 在Excel中能够将统计表的格式设得与系统一样,并且表样能够从系统中复制过来,方便快捷;
● 在Excel中有自动计算公式可以利用,只需要维护一张表的基础数据,就能自动完成其他多个表的计算和统计;
● 一样的统计内容通过Excel的类同复制功能,能够快速的生成,无需逐个修改;
● Excel的关联功能能够使统计表分不同的页存储,防止内容太多,造成混乱。
那么我们来看最后一个特点,需要能灵活的提前设计测试数据,以完成各种统计测试方案,在Excel中我们只要设计好了格式和相应的计算公式,那么改变测试数据,设计测试数据就会很方便,只需要改变基础数据就可以了,其他的计算和统工作都由Excel自动完成。
通过分析我们得出了这样的结论,使用Excel可以达到我们的目,那么是不是真的能够满足我们需求,经过实现我发现,利用这个工具完全能够满足我的需求,并且可以大大提高测试效率,经过实际测试,也验证了我的选择,由于正确的选择了测试策略和工具,我顺利而有效完成统计功能的测试。
结论:
通过这次测试活动,我深深的体会到,灵活运用测试方法和测试辅助工具,对于提高测试效率有非常重要的作用,总结起来我把主思想归为以下几点:
● 明确目标
● 分析特点
● 解析特点
● 寻找方法
● 切合实际
● 灵活运用
● 总结传播
运行在
Linux系统上的
Java程序运行了一段时间后出现"Too many open files"的异常情况。
这种情况常见于高并发访问文件系统,多线程网络连接等场景。程序经常访问的文件、socket在Linux中都是文件file,系统需要记录每个当前访 问file的name、location、access authority等相关信息,这样的一个实体被称为file entry。“open files table”(图中橙色标识)存储这些file entry,以数组的形式线性管理。文件描述符(file descriptor)作为进程到open files table的指针,也就是open files table的下标索引,将每个进程与它所访问的文件关联起来了。
每个进程中都有一个file descriptor table管理当前进程所访问(open or create)的所有文件,文件描述符关联着open files table中文件的file entry。细节不表,对于open files table能容纳多少file entry。Linux系统配置open files table的文件限制,如果超过配置值,就会拒绝其它文件操作的请求,并抛出Too many open files异常。这种限制有系统级和用户级之分。
系统级:
系统级设置对所有用户有效。可通过两种方式查看系统最大文件限制
1、cat /proc/sys/fs/file-max
2、sysctl -a 查看结果中fs.file-max这项的配置数量
如果需要增加配置数量就修改/etc/sysctl.conf文件,配置fs.file-max属性,如果属性不存在就添加。
配置完成后使用sysctl -p来通知系统启用这项配置
用户级:
Linux限制每个登录用户的可连接文件数。可通过 ulimit -n来查看当前有效设置。如果想修改这个值就使用 ulimit -n <setting number> 命令。
对于文件描述符增加的比例,资料推荐是以2的幂次为参考。如当前文件描述符数量是1024,可增加到2048,如果不够,可设置到4096,依此类推。
在出现Too many open files问题后,首先得找出主要原因。最大的可能是打开的文件或是socket没有正常关闭。为了定位问题是否由Java进程引起,通过Java进程号查看当前进程占用文件描述符情况:
- lsof -p $java_pid 每个文件描述符的具体属性
- lsof -p $java_pid | wc -l 当前Java进程file descriptor table中FD的总量
|
分析命令的结果,可判断问题是否由非正常释放资源所引起。
如果我们只是普通用户,只是暂时的修改ulimit -n,可以直接shell命令来修改(ulimit -n 1024000)。但是这个设置时暂时的保留!当我们退出bash后,该值恢复原值。
如果要永久修改ulimit,需要修改/etc/security/limits.conf。
vim /etc/security/limits.conf
# 添加如下的行
* soft nofile 2048
* hard nofile 2048
以下是说明:
* 代表针对所有用户
noproc 是代表最大进程数
nofile 是代表最大文件打开数
添加格式:
[username | @groupname] type resource limit
[username | @groupname]:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。
type:有 soft,hard 和 -,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比hard 限制高。用 - 就表明同时设置了 soft 和 hard 的值。
resource:
core - 限制内核文件的大小(kb)
date - 最大数据大小(kb)
fsize - 最大文件大小(kb)
memlock - 最大锁定内存地址空间(kb)
nofile - 打开文件的最大数目
rss - 最大持久设置大小(kb)
stack - 最大栈大小(kb)
cpu - 以分钟为单位的最多 CPU 时间
noproc - 进程的最大数目
as - 地址空间限制
maxlogins - 此用户允许登录的最大数目
实例:
username soft nofile 2048
username hard nofile 2048
@groupname soft nofile 2048
@groupname hard nofile 2048