软件测试用例的多个认识“误区”

yanzhiguo 发表于 2010-08-26 15:39 浏览次数:159 views 来源:

  

  误区之一:测试输入数据设计方法等同于测试用例设计方法

  现在一些测试书籍和文章中讲到软件测试用例的设计方法,经常有这样的表述:测试用例的设计方法包括:等价类、边界值、因果图、错误推测法、场景设计法等。这种表述是很片面的,这些方法只是软件功能测试用例设计中如何确定测试输入数据的方法,而不是测试用例设计的全部内容。

  这种认识的不良影响可能会使不少人认为测试用例设计就是如何确定测试的输入数据,从而掩盖了测试用例设计内容的丰富性和技术的复杂性。如果测试 用例设计人员把这种认识拿来要求自己,则害了自己;拿来教人,则害了别人;拿来指导测试,则害了测试团队。听起来似乎是“小题大做”,但是绝不是“危言耸 听”。

  无疑,对于软件功能测试和性能测试,确定测试的输入数据很重要,它决定了测试的有效性和测试的效率。但是,测试用例中输入数据的确定方法只是测试用例设计方法的一个子集,除了确定测试输入数据之外,测试用例的设计还包括如何根据测试需求、设计规格说明等文档确定测试用例的设计策略、设计用例的表示方法和组织管理形式等问题。

  在设计测试用例时,需要综合考虑被测软件的功能、特性、组成元素、开发阶段(里程碑)、测试用例组织方法(是否采用测试用例的数据库管理)等内容。具体到设计每个测试用例而言,可以根据被测模块的最小目标,确定测试用例的测试目标;根据用户使用环境确定测试环境;根据被测软件的复杂程度和测试用例执行人员的技能确定测试用例的步骤;根据软件需求文档和设计规格说明确定期望的测试用例执行结果。

  误区之二:强调测试用例设计得越详细越好

  在确定测试用例设计目标时,一些项目管理人员强调测试用例“越详细越好”。具体表现在两个方面:尽可能设计足够多的设计用例,测试用例的数量阅读越好;测试用例尽可能包括测试执行的详细步骤,达到“任何一个人都可以根据测试用例执行测试”,追求测试用例越详细越好。

  这种做法和观点最大的危害就是耗费了很多的测试用例设计时间和资源,可能等到测试用例设计、评审完成后,留给实际执行测试的时间所剩无几了。因为当前软件公司的项目团队在规划测试阶段,分配给测试的时间和人力资源是有限的,而软件项目的成功要坚持“质量、时间、成本”的最佳平衡,没有足够多的测试执行时间,就无法发现更多的软件缺陷,测试质量更无从谈起了。

  编写测试用例的根本目的是有效地找出软件可能存在的缺陷,为了达到这个目的,需要分析被测试软件的特征,运用有效的测试用例设计方法,尽量使用较少的测试用例,同时满足合理的测试需求覆盖,从而达到“少花时间多办事”的效果。

  测试用例中的测试步骤需要详细到什么程度,主要取决于测试用例的“最终用户”(即执行这些测试用例的人员),以及测试用例执行人员的技能和产品 熟悉程度。如果编写测试用例的人员也是测试用例执行人员,或者测试用例的执行人员深刻了解被测软件,测试用例就没有必要太详细。而如果是测试新人执行测试 用例,或者软件测试外包给独立的第三方公司,那么测试用例的执行步骤最好足够详细。

  误区之三:追求测试用例设计“一步到位”

  现在软件公司都意识到了测试用例设计的重要性了,但是一些人认为设计测试用例是一次性投入,测试用例设计一次就“万事大吉”了,片面追求测试设计的“一步到位”。

  这种认识造成的危害性使设计出的测试用例缺乏实用性,或者误导测试用例执行人员,误报很多不是软件缺陷的“Bug”,这样的测试用例在测试执行过程中“形同虚设”,难免沦为“垃圾文档”的地步。

  “唯一不变的是变化”。任何软件项目的开发过程都处于不断变化过程中,用户可能对软件的功能提出新需求,设计规格说明相应地更新,软件代码不断 细化。设计软件测试用例与软件开发设计并行进行,必须根据软件设计的变化,对软件测试用例进行内容的调整,数量的增减,增加一些针对软件新增功能的测试用 例,删除一些不再适用的测试用例,修改那些模块代码更新了的测试用例。

  软件测试用例设计只是测试用例管理的一个过程,除此之外,还要对其进行评审、更新、维护,以便提高测试用例的“新鲜度”,保证“可用性”。因此,软件测试用例也要坚持“与时俱进”的原则。

  误区之四:让测试新人设计测试用例

  在与测试同行交流的过程中,不少刚参加测试工作的测试新人经常询问的一个问题是:“怎么才能设计好测试用例?”。因为他(她)们以前从来没有设计过测试用例,面对大型的被测试软件感到“老虎吃天,无从下口”。

  让测试新人设计测试用例是一种高风险的测试组织方式,它带来的不利后果是设计出的测试用例对软件功能和特性的测试覆盖性不高,编写效率低,审查和修改时间长,可重用性差。

  软件测试用例设计是软件测试的中高级技能,不是每个人(尤其是测试新人)都可以编写的,测试用例编写者不仅要掌握软件测试的技术和流程,而且要对被测软件的设计、功能规格说明、用户试用场景以及程序/模块的结构都有比较透彻的理解。

  因此,实际测试过程中,通常安排经验丰富的测试人员进行测试用例设计,测试新人可以从执行测试用例开始,随着项目进度的不断进展,测试人员的测试技术和对被测软件的不断熟悉,可以积累测试用例的设计经验,编写测试用例。

单元测试的重要性

yanzhiguo 发表于 2010-08-26 14:24 浏览次数:100 views 来源:

  在实际的单元测试过程中总会有一些错误的认识左右着我们,使之成为单元测试最大的障碍,在此将其一一分析如下:

  它太浪费时间了,现在要赶进度,时间上根本不允许,或者随便做做应付领导。

  我是一个很棒的程序员,我写的代码肯定是没有问题的。

  做单元测试太烦了,直接集成,到时有问题在集成测试时肯定能发现的,实在不行在系统测试总该能发现吧。

  它仅仅是证明这些代码做了什么。

  对于以上错误认识的产生归根结底还是由于对单元测试的理解还是不够,没有真正认识到单元测试的重要性。

  单元测试的重要性

  单元测试是软件测试的基础,因此单元测试的效果会直接影响到软件的后期测试,最终在很大程度上影响到产品的质量。从如下几个方面就可以看出单元测试的重要性在何处。

  时间方面:如果认真的做好了单元测试,在系统集成联调时非常顺利,因此会节约很多时间,反之那些由于因为时间原因不做单元测试或随便做做的则在集成时总会遇到那些本应该在单元测试就能发现的问题,而这种问题在集成时遇到往往很难让开发人员预料到,最后在苦苦寻觅中才发现这是个很低级的错误而在悔恨自己时已经浪费了很多时间,这种时间上的浪费一点都不值得,正所谓得不偿失。

  测试效果:根据以往的测试经验来看,单元测试的效果是非常明显的,首先它是测试阶段的基础,做好了单元测试,在做后期的集成测试和系统测试时就很顺利。其次在单元测试过程中能发现一些很深层次的问题,同时还会发现一些很容易发现而在集成测试和系统测 试很难发现的问题。再次单元测试关注的范围也特殊,它不仅仅是证明这些代码做了什么,最重要的是代码是如何做的,是否做了它该做的事情而没有做不该做的事情。

  测试成本:在单元测试时某些问题就很容易发现,如果在后期的测试中发现问题所花的成本将成倍数上升。比如在单元测试时发现1个问题需要1个小时,则在集成测试时发现该问题需要2个小时,在系统测试时发现则需要3个小时,同理还有定位问题和解决问题的 费用也是成倍数上升的,这就是我们要尽可能早的排除尽可能多的bug来减少后期成本的因素之一。

  产品质量:单元测试的好与坏直接影响到产品的质量,可能就是由于代码中的某一个小错误就导致了整个产品的质量降低一个指标,或者导致更严重的后果,如果我们做好了单元测试这种情况是可以完全避免的。

  综上所述,单元测试是构筑产品质量的基石,我们不要因为节约单元测试的时间不做单元测试或随便做而让我们在后期浪费太多的不值得的时间,我们也不愿意因为由于节约那些时间导致开发出来的整个产品失败或重来!

软件测试之测试工作中的缺陷跟踪管理

yanzhiguo 发表于 2010-08-26 14:12 浏览次数:102 views 来源:

  本文介绍了基于B/S模式的软件缺陷跟踪管理系统的设计与实现。软件缺陷是在软件生命周期中不可避免的对象。缺陷跟踪管理是软件管理的重要组成。现有管理方法是将进入到系统中的问题,都认为是软件缺陷进行处理。但是实际情况却可能有虚假或重复的缺陷报告。不及时处理这些问题,它本身又可能形成新的缺陷。从软件系统考虑,应将软件缺陷跟踪管理纳入到项目管理信息系统之中,成为项目管理信息系统的一个子系统。对维护人员提交的缺陷报告认真鉴定、筛选、分类,进入不同的处理流程,以获得真正的缺陷跟踪数据。本文在分析讨论这些问题的基础上,提出新的软件缺 陷跟踪管理系统的总体结构。

  软件缺陷跟踪管理系统在现代软件开发中已经占据了很重要的位置。每一个软件组织都知道必须妥善处理软件中的缺陷。这是关系到软件组织生存、发展的质量根本。可遗憾的是,并非所有的软件组织都知道如何有效地管理自己软件中的缺陷。CMM及CMMI都对软件缺陷跟踪给予了关注并做出了相关规定。本文的侧重点放在了讨论这个程序的需求分析、设计、实现及所用到的项目管理知识。借着实现这个简单的缺陷跟踪系统,探讨了个人软件开发过程当中遇到的各种问题,以及解决它们的方法,展示了个人软件开发的一般过程。

  缺陷跟踪管理是测试工作的一个重要部分,测试的目的是为了尽早发现软件系统中的缺陷,因此,对缺陷进行跟踪管理,确保每个被发现的缺陷都能够及时得到处理是测试工作的一项重要内容。

  1、 缺陷跟踪管理的目标

  缺陷能够引起软件运行时产生的一种不希望或不可接受的外部行为结果,软件测试过程简单说就是围绕缺陷进行的,对缺陷的跟踪管理一般而言需要达到以下的目标:

  确保每个被发现的缺陷都能够被解决;这里解决的意思不一定是被修正,也可能是其他处理方式(例如,在下一个版本中修正或是不修正),总之,对每个被发现的BUG的处理方式必须能够在开发组织中达到一致;

  收集缺陷数据并根据缺陷趋势曲线识别测试过程的阶段;决定测试过程是否结束有很多种方式,通过缺陷趋势曲线来确定测试过程是否结束是常用并且较为有效的一种方式。

  收集缺陷数据并在其上进行数据分析,作为组织的过程财富。

  上述的第一条是最受到重视的一点,在谈到缺陷跟踪管理时,一般人都会马上想到这一条,然而对第二和第三条目标却很容易忽视。其实,在一个运行良好的组织中,缺陷数据的收集和分析是很重要的,从缺陷数据中可以得到很多与软件质量相关的数据。

  2、 缺陷的描述

  对缺陷的描述应该包含以下的内容: 可追踪信息

  缺陷ID:唯一的缺陷ID,可以根据该ID追踪缺陷

  缺陷基本信息

  缺陷状态:缺陷的状态,分为“待分配”、“待修正”、“待验证”、“待评审”、“关闭”

  缺陷标题:描述缺陷的标题

  缺陷的严重程度:描述缺陷的严重程度,一般分为“致命”、“严重”、“一般”、“建议”四种

  缺陷的紧急程度:描述缺陷的紧急程度,从1-4,1是优先级最高的等级,4是优先级最低的等级

  缺陷提交人:缺陷提交人的名字(邮件地址)

  缺陷提交时间:缺陷提交的时间

  缺陷所属项目/模块:缺陷所属的项目和模块,最好能较精确的定位至模块

  缺陷指定解决人:缺陷指定的解决人,在缺陷“提交”状态为空,在缺陷“分发”状态下由项目经理指定相关开发人员修改

  缺陷指定解决时间:项目经理指定的开发人员修改此缺陷的deadline

  缺陷处理人:最终处理缺陷的处理人

  缺陷处理结果描述:对处理结果的描述,如果对代码进行了修改,要求在此处体现出修改

  缺陷处理时间:缺陷处理的时间

  缺陷验证人:对被处理缺陷验证的验证人

  缺陷验证结果描述:对验证结果的描述(通过、不通过)

  缺陷验证时间:对缺陷验证的时间

  缺陷的详细描述:对缺陷的详细描述;之所以把这项单独列出来,是因为对缺陷描述的详细程度直接影响开发人员对缺陷的修改,描述应该尽可能详细

  测试环境说明:对测试环境的描述

  必要的附件:对于某些文字很难表达清楚的缺陷,使用图片等附件是必要的

  除上述描述项外,从统计的角度出发,还可以添加上“缺陷引入阶段”、“缺陷修正工作量”等项目。

  3、 缺陷管理的一般流程

  缺陷管理的流程比较简单,图1是一个缺陷状态图。

  流程中的角色:

  1、 测试人员:进行测试的人员,缺陷的发起者;

  2、 项目经理:对整个项目负责,对产品质量负责的人员;

  3、 开发人员:执行开发任务的人员,完成实际的设计和编码工作;

  4、 评审委员会:对缺陷进行最终确认,在项目成员对缺陷达不成一致意见时,行使仲裁权力。

  缺陷的状态

  1、 初始化:缺陷的初始状态;

  2、 待分配:缺陷等待分配给相关开发人员处理;

  3、 待修正:缺陷等待开发人员修正;

  4、 待验证:开发人员已完成修正,等待测试人员验证;

  5、 待评审:开发人员拒绝修改缺陷,需要评审委员会评审;

  6、 关闭:缺陷已被处理完成。

  4、 缺陷数据统计

  如前所述,缺陷数据统计也是缺陷跟踪管理系统的目标。一般而言,生成的缺陷数据统计图表包括缺陷趋势图、缺陷分布图、缺陷及时处理情况统计表等。

  5、 缺陷跟踪管理系统

  目前已有的缺陷跟踪管理软件包括Compuware公司的TrackRecord软件(商业软 件)、Mozilla公司的Bugzilla软件(免费软件),以及国内的微创公司的BMS软件,这些软件在功能上各有特点,可以根据实际情况选用。当然, 也可以自己开发缺陷跟踪软件,例如基于Notes或是ClearQuese开发缺陷跟踪管理软件。我公司采用的是自己开发的基于Notes的缺陷跟踪系统,除了具有上述功能外,还能够通过Notes的邮件系统方便地向相关人员发送提醒信息(缺陷处理超时提醒、缺陷待处理提醒等)。

  除此之外,作为一个缺陷跟踪管理系统,还必须注意权限分配的问题。缺陷记录作为软件开发过程中的 重要数据,不能轻易被删除;对于已经关闭的缺陷,也不能随意进行修改。因此,缺陷跟踪管理系统必须设置严格的管理权限,非相关人员不得进行相应操作,修改相应数据。在这一点上,通过Notes也很容易控制。

软件测试之对性能测试工具的误解

yanzhiguo 发表于 2010-08-26 13:57 浏览次数:69 views 来源:

  性能测试工具通常指那些用来支持压力、负载测试,能够用来录制和生成脚本、设置和部署场景、产生并发用户和向系统施加持续压力的工具。

  对于性能测试工具的误解:

  (1)认为性能测试就是用性能测试工具进行测试

  实际上性能测试工具只能帮助您实施性能测试,并不能帮助您完成性能测试的需求、设计和分析工作。

  (2)认为性能测试工具可以完成性能测试结果分析工作。

  性能测试工具能够根据您的要求以各种方式提供报表,这些报表可以被您用来分析系统性能状况。

  (3)不清楚性能测试工具的录制/回放与功能测试工具的录制/回放的区别。

  功能测试工具的录制/回放一般是针对GUI的操作录制,脚本中记录的是用户对控件的操作,例如“按下了‘确认’按钮”,或是“在姓名文本框中输入了ABCD” 等内容,这是因为功能测试工具主要是通过操作和数据来验证功能的正确性,评价的主要标准是GUI的正确性(界面可见内容的正确性),性能测试着重的是“并发的性能”,GUI的很多操作一般对服务器都不构成压力,因此,性能测试工具录制的是服务端和应用之间的通信数据,而不是应用的GUI操作。理解了这一点,就不难明白为什么在进行性能测试脚本录制的时候,需要首先选择录制的协议了。

  (4)不清楚何时选择何种协议

  一般的性能测试工具都提供了多种协议支持,但具体在什么时候使用何种协议,如何选择也是一个困扰很多性能测试工程师的问题。性能测试工具录制的是服务端和应用之间的通信数据,因此,选择何种协议也就取决于应用和客户端之间的通信协议。对于web应用来说,采用的是http/https协议;对于数据库应用来 说,协议取决于数据库本身的类型;对于socket应用来说,采用socket协议。当然,除了这里提到的这几种以外,还有RMI、Corba、Web Service等多种协议类型,总之,选择何种协议取决于应用和客户端之间的通信协议。

Web界面测试方法技巧以及注意事项

yanzhiguo 发表于 2010-08-25 16:05 浏览次数:72 views 来源:

Web界面设计好之后,需要做详细的测试。下面我和大家分享自己在做Web界面测试的测试点以及应该注意的一些问题。

  我们通过用户界面测试来核实用户与软件的交互来进行界面测试,必须明确UI测试的目的——确保用户界面向用户提供了适当的访问和浏览对象功能的操作,除此之外,UI测试还确保UI功能内部的对象符号预期的要求,并遵循公司和行业的标准。

  接下来,我们具体的分析一下界面测试的依据从哪些方面着手。

  测试目标:
  1、窗口与窗口之间、字段与字段之间的浏览,以及各种访问方法(tab键、鼠标移动和快捷键)的使用
  2、窗口的对象和特征(例如、菜单、大小、位置、状态和中心)都符号标准

  测试方法:
  为每个窗口创建或修改测试,以核实各个应用程序窗口和对象都可正确的进行浏览,并处于正常的对象状态。

  我们在实际工作当中,针对web应用程序,也就是经常所说的B/S系统,可以从如下方面来进行用户界面测试、

  1、导航测试

  导航描述了用户在一个页面内操作的方式,在不同的用户接口控制之间,例如按钮、对话框、列表和窗口等;

  不同的链接页面之间,通过考虑下列问题,可以决定一个web应用系统是否易于导航;导航是否直观?web系统的主要部分是否可通过主页存取?web系统是否需要站点地图、搜索引擎或其他的导航帮助

  当然,这些同美工以及客户需求有关。我们是根据已经确认的页面进行测试即可。

  2、图形测试

  图形包括图片、动画、边框、颜色、字体、背景、按钮等。

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

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

  (3)背景颜色与字体颜色和背景色相搭配

  (4)图片的大小和质量,一般采用jpg或gif压缩,最好能使用图片的大小减小到30k以下

  (5)演示文字回绕是否正确,如果说明文字指向右边的图片,应该确保该图片出现在右边,不要因为使用图片而使窗口和段落排列古怪或者出现骨性。

  3、内容测试

  内容测试用来检验Web应用系统提供信息的正确性、准确性和相关性。信息的正确性是指信息是可靠的还是误传的。信息的相关性是指是否在当前页面可以找到与当前浏览信息相关的信息列表或入口,也就是一般Web站点中的所谓"相关文章列表"

  4、表格测试

  需要验证表格是否设置正确,用户是否需要向右滚动页面才能看见产品的价格?

  把价格放在左边,产品细节放在右边是否更有效?

  每一栏的宽度是否足够宽,表格里的文字是否都有折行?

  是否因为某一格的内容太多,而将整行的内容拉长?

  5、整体界面测试

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

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

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

  Web界面测试中需要注意的细节问题

  1、界面的线条是否一致,每个界面中线条是否对齐,是否一致。(静态页面没有确认的情况下)

  2、整个系统的界面是否保持一致

  3、界面中是否存在错别字

  4、界面所有的按钮样式是否一致

  5、每个界面是否同原静态页面设计一致(静态页面确认的情况下)

  6、操作是否友好

  7、界面所有的按钮、下拉框是否有响应

  8、界面所有的链接是否正常

  9、界面所有的输入框是否都进行校验(例如、搜索框、字段输入框)

  10、界面所有的列表页标题字是否会折行,标题字是否统一居中等,当然也可以居左,这需要同客户沟通(折行的话影响美观)

  11、界面所有的展示图片是否样式一致

  12、浏览器的兼容性问题,检查页面在不同浏览器下是否会发生异常

  13、每个页面的提示字体的颜色、格式是否统一准确

  14、界面中所有字段后面是否都存在冒号,有冒号,查看是否冒号为统一的中文冒号还是英文冒号。

  15、界面中的提示说明叙述是否太啰嗦,有时候需要能简化尽量简化,并且字体显示格式一致,颜色统一。

  16、在web网站,一般经常是后台控制前台的显示,因此在对后台进行数据添加时,查看前台是否有变化,并且查看界面的数据是否溢出框外。

 

                                                                                                      来源:天极网

越简单越丰富—极简网页设计视觉呈现技巧

yanzhiguo 发表于 2010-08-24 17:56 浏览次数:62 views 来源:

  如何让杂乱又咄咄逼人的网页变得轻薄简洁而美观,又需保留完整功能、同时很好的区分出重点模块?这往往是让设计师困扰纠结之源;如何更好的将多余的元素、色彩、形状和纹理剔除,保留重点并梳理清晰的视觉流动方向?

  如果一个页面有太多的元素,用户将迷惑于去看哪里或误解每个元素的优先级。优秀的设计师需要用设计语言将焦点正好引导到正确的内容上,正如提到 的,极简的网页视觉能够将最重要的内容带到最前面并为用户避免分散注意力,比如,在一个黑白设计上的任何色斑,都会引起用户的注意力,色彩本身也将成为焦 点,这便成为我们即将要展开探讨的小小话题。


http://www.janreichle.com/

产品原型视觉转化

  设计开始之初,从原型稿到视觉稿的转化过程中,擅长图形化识别的视觉设计师们,在面对繁杂而单调的线稿内容时,往往急于上马大施拳脚展开创作,缺忽略了清晰梳理判断整体页面结构的重要环节。
  哪些属于重点模块需要突出展示,哪些次要模块可以移动到更优化的布局或者精简合并?这是一个需要长期经验积累,不断磨练耐心和提高理解判断能力的成长过程,也是职业化的开端。

权衡布局及简化设计

  排版布局中的平衡、对齐及对比关系,对页面视觉效果至关重要。如果画面效果头重脚轻,或者左右不均衡,会让用户感觉到压迫感,从而影响到浏览信息的顺畅。

  相关参考请查看 “设计的原理”
  实现简化设计的第一步,不是简单的去掉大部分图片,而是要重新考虑内容并将其简化到无遮盖的需求。只有那样才能让页面中最重要的元素实现其预期的效果。

  我们可以写下必须要的内容:logo、介绍、导航等等。和你的产品经理一起,去掉其它一切不需要的元素,尽可能的丢掉它们。

http://labs.qq.com/

  这里的关键并非让网站有较少的功能,而是去掉不是必要的元素或将多个部分整合到一个更简单的布局。你也可以分割内容到独立的页面,给予内容的每个部分更多关注。

善用色彩的心里暗示

  简约而通透的白色页面
  白色,因其明度最高,无色相,明亮干净、畅快、朴素,永恒无暇,在自然界象征着极致的纯净与贞洁。白色优雅、平和而简单,没有强烈的个性,因而网站设计中,白色具有高级,科技的意象,是永远流行的主色调。
  轻快的白色可以给人很好的轻快速度感,运用得当可以让其它任何浅颜色及亮颜色呈现出其深度、明度和饱和度的不同,通过对比让其亮色更加明快、专注和舒适。整洁、大空白的同时让用户保持欢快的情感进行浏览。

  下面的网站展示了如果使用白色来呈现内容和一个网站自身的潜力:


http://www.istockphoto.com/index.php

  白色页面设计小技巧:
  让链接更容易识别, 使用浅色或亮色;
  减少杂乱广告图片; 不要使用过小的字体,
  避免页面看起来琐碎和疲劳;


http://www.flickr.com

  明快的文字颜色,让内容更易识别


http://www.sixapart.com/

  精致高雅的灰色绅士
  “灰质(Gray matter)”让人联想到智商与脑力。它不像黑色那么鲜明,又不像纯白那样苍白,灰色是黑与白的过度,是完美的补色。灰色可以和任何色彩搭配,由于它的 中立性,它常常被用作背景颜色,可以让其它色彩突出。使用浅灰色替代白色或者用暗灰色替代黑色,能够赋予网页与众不同的高雅之感。

http://www.apple.com


http://www.dbushell.com/

  灰色无论是作为背景颜色还是标题或者主字体颜色都很流行。灰色也是极简主义网站设计的首选色彩,这类网站通常会选用浅灰色作为背景色彩,然后选用深灰色作为主要的字体颜色。这里是一些使用灰色的几个很不错的网站设计。


http://www.iconwerk.de


http://2008.dconstruct.org/

  设计的加减法哲学
  从第一个像素开始,我们开始不断用加法进行创造,搭建出完美的设计作品,然而这就是极致么?在设计适时运用放大或减少,不断地变化,可以更好的趋向极简,反复历练考究每一个必要的元素存在的价值。


http://pc.qq.com/

  每当到达这个阶段,设计师需要静下心来思考,当加法到一定的量的时候再转做减法设计,考验的是设计师对整体把握能力。减法设计是在加法比较成熟 的情况下才能去尝试的设计方式。理论上来说,加法设计比减法设计相对更加容易。减法设计更能体现设计师的功力和积累,目标要求的是少而精炼。


http://www.31three.com/

  鼓起勇气大胆的去除边框,让画面更加通透大气,空间视觉元素不多不少,但又显得很丰富、美观。
  这个加减的过程正是让设计不断趋向完美的历练之路。

  让空间更加透气
  通过去除与隐藏的方式降低设计复杂性的方法中,减少“视觉感知”的复杂性也是很重要的。空白与对比无疑成为行之有效的减少视觉干扰的重要方法。
  视觉布局中适当的空白对平衡即将出现在页面中的少量元素是必要的平衡。它应是你默认的布局工具。经典法则之一:如果可以使用空白就不要放置其他设计元素。如果用这种方式布局,你会很惊讶调整界面的空白就可以完成布局了。


http://www.kylestanding.com/

  虽然使用空白多多益善,但也要尽可能的保证有对比感。设计师应使用最小的视觉变化来表达想法。事实上这就是意味着元素之间要有主次感。

  空白不等于苍白
  页面变得苍白?是不是整版的文字缺少图片的点缀?在保留有必要的留白空间后,试着为文字配上一张点睛的美图吧,或者给段落文字总结一个示意小图标,适当的点缀必不可少。


http://Pc.qq.com

  透气的留白不等于无力的苍白,让有趣的设计大胆的去激发用户的视觉神经,让设计更有思想,不断趋向简洁和完美。


http://www.devia.be/

 

软件测试步骤

yanzhiguo 发表于 2010-08-24 14:25 浏览次数:69 views 来源:



软件测试步骤

测试过程按4个步骤进行,即单元测试、集成测试、确认测试和系统测试及发版测试。

开始是单元测试,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。


集成测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。
确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。
系统测试把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。
单元测试 (Unit Testing)
单元测试又称模块测试,是针对软件设计的最小单位程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。
单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。
1.
单元测试的内容
在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试 的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。

(1) 模块接口测试
在单元测试的开始,应对通过被测模块的数据流进行测试。测试项目包括:
调用本模块的输入参数是否正确;
本模块调用子模块时输入给子模块的参数是否正确;
全局量的定义在各模块中是否一致;

•     在做内外存交换时要考虑:

文件属性是否正确;
–   OPEN
CLOSE语句是否正确;
缓冲区容量与记录长度是否匹配;
在进行读写操作之前是否打开了文件;
在结束文件处理时是否关闭了文件;
正文书写/输入错误,
–   I
O错误是否检查并做了处理。

(2) 局部数据结构测试
不正确或不一致的数据类型说明
使用尚未赋值或尚未初始化的变量
错误的初始值或错误的缺省值
变量名拼写错或书写错
不一致的数据类型
全局数据对模块的影响
(3)
路径测试
选择适当的测试用例,对模块中重要的执行路径进行测试。
应当设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。
对基本执行路径和循环进行测试可以发现大量的路径错误。
(4)
错误处理测试
出错的描述是否难以理解
出错的描述是否能够对错误定位
显示的错误与实际的错误是否相符
对错误条件的处理正确与否
在对错误进行处理之前,错误条件是否已经引起系统的干预等
(5)
边界测试
注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。
如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。

2. 单元测试的步骤
模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。
驱动模块 (driver)
桩模块 (stub) ── 存根模块

如果一个模块要完成多种功能,可以将这个模块看成由几个小程序组成。必须对其中的每个小程序先进行单元测试要做的工作,对关键模块还要做性能测试。
对支持某些标准规程的程序,更要着手进行互联测试。有人把这种情况特别称为模块测试,以区别单元测试。
集成测试(Integrated Testing
集成测试 (集成测试、联合测试)
通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:
在把各个模块连接起来的时侯,穿越模块接口的数据是否会丢失;
一个模块的功能是否会对另一个模块的功能产生不利的影响;

各个子功能组合起来,能否达到预期要求的父功能;
全局数据结构是否有问题;
单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。
在单元测试的同时可进行集成测试,
发现并排除在模块连接中可能出现
的问题,最终构成要求的软件系统。

•    子系统的集成测试特别称为部件测试,它所做的工作是要找出集成后的子系统与系统需求规格说明之间的不一致。
通常,把模块集成成为系统的方式有两种
一次性集成方式
增殖式集成方式

1. 一次性集成方式(big bang)
它是一种非增殖式组装方式。也叫做整体拼装。
使用这种方式,首先对每个模块分别进行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。

2. 增殖式集成方式
这种集成方式又称渐增式集成
首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统
在集成的过程中边连接边测试,以发现连接过程中产生的问题
通过增殖逐步组装成为要求的软件系统。

(1) 自顶向下的增殖方式
这种集成方式将模块按系统程序结构,沿控制层次自顶向下进行组装。
自顶向下的增殖方式在测试过程中较早地验证了主要的控制和判断点。
选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。

(2) 自底向上的增殖方式
这种集成的方式是从程序模块结构的最底层的模块开始集成和测试。
因为模块是自底向上进行组装,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经组装并测试完成,所以不再需要桩模块。在模块的 测试过程中需要从子模块得到的信息可以直接运行子模块得到。

•    自顶向下增殖的方式和自底向上增殖的方式各有优缺点。
一般来讲,一种方式的优点是另一种方式的缺点。
(3)
混合增殖式测试
衍变的自顶向下的增殖测试
首先对输入/输出模块和引入新算法模块进行测试;
再自底向上组装成为功能相当完整且相对独立的子系统;
然后由主模块开始自顶向下进行增殖测试。

自底向上-自顶向下的增殖测试
首先对含读操作的子系统自底向上直至根结点模块进行组装和测试;
然后对含写操作的子系统做自顶向下的组装与测试。
回归测试
这种方式采取自顶向下的方式测试被修改的模块及其子模块;
然后将这一部分视为子系统,再自底向上测试。
关键模块问题
在组装测试时,应当确定关键模块,对这些关键模块及早进行测试。
关键模块的特征:
满足某些软件需求;
在程序的模块结构中位于较高的层次(高层控制模块);
较复杂、较易发生错误;
有明确定义的性能要求。

确认测试(Validation Testing
确认测试又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。
对软件的功能和性能要求在软件需求规格说明书中已经明确规定。它包含的信息就是软件确认测试的基础。

1. 进行有效性测试(黑盒测试)
有效性测试是在模拟的环境 (可能就是开发的环境) 下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。
首先制定测试计划,规定要做测试的种类。还需要制定一组测试步骤,描述具体的测试用例。

通过实施预定的测试计划和测试步骤,确定
软件的特性是否与需求相符;
所有的文档都是正确且便于使用;
同时,对其它软件需求,例如可移植性、兼容性、出错自动恢复、可维护性等,也都要进行测试

在全部软件测试的测试用例运行完后,所有的测试结果可以分为两类:
测试结果与预期的结果相符。这说明软件的这部分功能或性能特征与需求规格说明书相符合,从而这部分程序被接受。
测试结果与预期的结果不符。这说明软件的这部分功能或性能特征与需求规格说明不一致,因此要为它提交一份问题报告。
2.
软件配置复查
软件配置复查的目的是保证

a 软件配置的所有成分都齐全;

b各方面的质量都符合要求;

c具有维护阶段所必需的细节;

d而且已经编排好分类的目录。

应当严格遵守用户手册和操作手册中规定的使用步骤,以便检查这些文档资料的完整性和正确性。

验收测试(Acceptance Testing
在通过了系统的有效性测试及软件配置审查之后,就应开始系统的验收测试。
验收测试是以用户为主的测试。软件开发人员和QA(质量保证)人员也应参加。
由用户参加设计测试用例,使用生产中的实际数据进行测试。

在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。
确认测试应交付的文档有:
确认测试分析报告
最终的用户手册和操作手册
项目开发总结报告。

系统测试(System Testing
系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起, 在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。
系统测试的目的在于通过与系统的需求定义作比较, 发现软件与系统的定义不符合或与之矛盾的地方。

α测试和β测试
在软件交付使用之后,用户将如何实际使用程序,对于开发者来说是无法预测的。
•    α
测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。

•     α测试的目的是评价软件产品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持)。尤其注重产品的界面和特色。
•     α
测试可以从软件产品编码结束之时开始,或在模块(子系统)测试完成之后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。

•     β测试是由软件的多个用户在实际使用环境下进行的测试。这些用户返回有关错误信息给开发者。
测试时,开发者通常不在测试现场。因而,β测试是在开发者无法控制的环境下进行的软件现场应用。
β测试中,由用户记下遇到的所有问题,包括真实的以及主观认定的,定期向开发者报告。

•    β测试主要衡量产品的FLURPS。着重于产品的支持性,包括文档、客户培训和支持产品生产能力。
只有当α测试达到一定的可靠程度时,才能开始β测试。它处在整个测试的最后阶段。同时,产品的所有手册文本也应该在此阶段完全定稿。
测试类型
软件测试是由一系列不同的测试组成。主要目的是对以计算机为基础的系统进行充分的测试。
功能测试
功能测试是在规定的一段时间内运行软件系统的所有功能,以验证这个软件系统有无严重错误。

强度测试

强度测试是要检查在系统运行环境不正常乃至发生故障的情况下,系统可以运行到何种程度的测试。例如:
把输入数据速率提高一个数量级,确定输入功能将如何响应。
设计需要占用最大存储量或其它资源的测试用例进行测试。

–   设计出在虚拟存储管理机制中引起颠簸的测试用例进行测试。
设计出会对磁盘常驻内存的数据过度访问的测试用例进行测试。
强度测试的一个变种就是敏感性测试。在程序有效数据界限内一个小范围内的一组数据可能引起极端的或不平稳的错误处理出现,或者导致极度的性能下降的 情况发生。此测试用以发现可能引起这种不稳定性或不正常处理的某些数据组合。

性能测试
性能测试是要检查系统是否满足在需求说明书中规定的性能。特别是对于实时系统或嵌入式系统。
性能测试常常需要与强度测试结合起来进行,并常常要求同时进行硬件和软件检测。
通常,对软件性能的检测表现在以下几个方面:响应时间、吞吐量、辅助存储区,例如缓冲区,工作区的大小等、处理精度,等等。

恢复测试
恢复测试是要证实在克服硬件故障(包括掉电、硬件或网络出错等)后,系统能否正常地继续进行工作,并不对系统造成任何损害。
为此,可采用各种人工干预的手段,模拟硬件故障,故意造成软件出错。并由此检查:
错误探测功能──系统能否发现硬件失效与故障;

能否切换或启动备用的硬件;
在故障发生时能否保护正在运行的作业和系统状态;
在系统恢复后能否从最后记录下来的无错误状态开始继续执行作业,等等。
掉电测试:其目的是测试软件系统在发生电源中断时能否保护当时的状态且不毁坏数据,然后在电源恢复时从保留的断点处重新进行操作。

配置测试

这类测试是要检查计算机系统内各个设备或各种资源之间的相互联结和功能分配中的错误。
它主要包括以下几种:
配置命令测试:验证全部配置命令的可操作性(有效性);特别对最大配置和最小配置要进行测试。软件配置和硬件配置都要测试。

–   循环配置测试:证明对每个设备物理与逻辑的,逻辑与功能的每次循环置换配置都能正常工作。
修复测试:检查每种配置状态及哪个设备是坏的。并用自动的或手工的方式进行配置状态间的转换。

安全性测试
安全性测试是要检验在系统中已经存在的系统安全性、保密性措施是否发挥作用,有无漏洞。
力图破坏系统的保护机构以进入系统的主要方法有以下几种:
正面攻击或从侧面、背面攻击系统中易受损坏的那些部分;
以系统输入为突破口,利用输入的容错性进行正面攻击;

–   申请和占用过多的资源压垮系统,以破坏安全措施,从而进入系统;
故意使系统出错,利用系统恢复的过程,窃取用户口令及其它有用的信息;
通过浏览残留在计算机各种资源中的垃圾(无用信息),以获取如口令,安全码,译码关键字等信息;
浏览全局数据,期望从中找到进入系统的关键字;
浏览那些逻辑上不存在,但物理上还存在的各种记录和资料等。

可使用性测试

可使用性测试主要从使用的合理性和方便性等角度对软件系统进行检查,发现人为因素或使用上的问题。
要保证在足够详细的程度下,用户界面便于使用;对输入量可容错、响应时间和响应方式合理可行、输出信息有意义、正确并前后一致;出错信息能够引导用 户去解决问题;软件文档全面、正规、确切。

安装测试
安装测试的目的不是找软件错误,而是找安装错误。
在安装软件系统时,会有多种选择。
要分配和装入文件与程序库
布置适用的硬件配置
进行程序的联结。
而安装测试就是要找出在这些安装过程中出现的错误。

安装测试是在系统安装之后进行测试。它要检验:
用户选择的一套任选方案是否相容;
系统的每一部分是否都齐全;
所有文件是否都已产生并确有所需要的内容;
硬件的配置是否合理,等等。

容量测试

容量测试是要检验系统的能力最高能达到什么程度。例如,
对于编译程序,让它处理特别长的源程序;
对于操作系统,让它的作业队列满员
对于信息检索系统,让它使用频率达到最大。
在使系统的全部资源达到满负荷的情形下,测试系统的承受能力。

文档测试

这种测试是检查用户文档(如用户手册)的清晰性和精确性。
用户文档中所使用的例子必须在测试中一一试过,确保叙述正确无误。

自动测试
认识自动测试
什么时候使用自动测试

网页设计从优秀到卓越的几个设计细节

yanzhiguo 发表于 2010-08-17 17:48 浏览次数:173 views 来源:

优秀设计和卓越设计之间的区别是比较小的。一般人可能无法解释说明卓越的设计的具体差别,但他们可以找到自己喜欢的网页设计作品。通过对照一下几个优秀作品,我总结了一下作为卓越设计的几个细节差别。

一、合理使用渐变
渐变不要滥用,更不要把渐变弄的跟彩虹似的,否则你的网页作品看起来比较外行。总而言之,合理的使用渐变对于优秀网站设计是有帮助的。

渐变、散景结合使用
Newism网站色彩丰富,但微妙的渐变与背景在视觉上结合的很到位。如果你也有兴趣在photoshop里面做这个散景效果,可以去Abduzeedo’s tutorial网站上面学习一下。
jiaocheng01
渐变、投影、纹理结合使用。
OnWired网站应用了这些设计技巧,显而易见,他的设计作品效果是很棒的!自始自终OnWired网站设计在应用渐变、投影、质感这方面是恰到好处 的。我也特别喜欢设计师设计的这些。
jiaocheng02
二、留白
留白一词往往容易被误解从字面解释 的空白。网页设计较 为准确的描述则是网页各个板块元素之间的空间范围。进一步分析看看A List Apart是如何定义它 的。
“留 白”对于网页设计是很重要的,留白不至于让你页面元素都堆积在一起。对于年轻设计师来说留白可能是一个大问题,他们在做设计的时候将整个页面放的满满 的,没有给页面足够的“呼吸空间”。这对于他们来说可能不是什么问题,如果内容放不下的话,他们可以借助浏览器的滚条来扩大页面的空间。

优秀的留白与巧妙的分割线
Snook网站布局方面设 计的是比较合理、舒服的。同时注意一下,网站里面的虚线将各个板块区分开了,这样我们在浏览网站的时候就一目了然了。
jiaocheng03
抽象图形
沙发采用抽象、美观、简约的方法。通过使用无背景或杂乱的图像,给浏览者的空间是流畅、舒服的。
jiaocheng04
三、网格布局
网页设计的网格布局最初的灵感是借鉴了报纸的排版。但是如果你仔细观察周围的事物都可以找到网格现象,从好的设计到生活中的交通网。
960蓝图可能是两个最流行的网格布局。我个人比较喜欢960网格布局,它简单、重点 突出。你可以用任意对齐方式来安排你网站的元素,对齐在设计一个复杂的页面时,能使你的网站看起来比较精致、井然有序,并且你在网页布局里面添加任何模块内容时候都不用考虑其他的模块内容。

综合使用网格布局
Poccuo网站综合使用了网格布局,它采用3列和5列相结合的布局方式。给人以视觉吸引力和视觉空间。
xuexi01
博客采用列布局
我比较喜欢Web Design Ledger首页最上面的展现方式,他把最新的公告内容放大同时放到页面最顶部,其他的以3列的方式排列。
xuexi02
大量使用相等的列布局
Ecoki漂亮的网页布局显而易见采用的是4列、2行布局,同时幻灯片、缩略图、最新的审 查也是采用相同的方式。
xuexi03
四、改善字体应用
字体应用困扰着大多数的设计师。如果要想提高你的设计水平,字体在其中扮演着重要的角色。不但在可读性方面也扮演着重要的角色,同时还可以增加设计作品的 氛围。

用对比字体引起关注
SimpleBits网站在应用各种对比字体引导浏览者的注意力方面做的很棒。字体对比可以采取不同字体对比、各种颜色对比、字体大小对比等形式。
jiaocheng05
不要认为字体就像标志
这个网站看齐来就非常的漂亮、舒服,但你可以说出你的想法和感受来描述这个感觉。尤其在间距、字体选择等字体应用这方面做的挺完美的,我就被他的logo字体应用迷住了。
jiaocheng06
五、明确而有效的导航
良好的导航对于网页设计来说很重要,如果浏览者不能快速、便捷的找到它,他们就很有可能去别的网站了。这是我们所不愿意看到的,同时我知道 MyInkBlog进行了一些改进,并将在以后重新设计中进行彻底的改进。

博客导航下面显示分类导航
在大多数情况下,博客导航放在页面的同时将分类作为第二导航放在页面的边栏。Tutorial9做了一件了不起的事情,他把浏览者关心的photoshop资源以生动的方式展现出来了,并且在鼠标经过二级导航的时候有一个高亮效果。
jiaocheng07

切换不同的图标效果
图标切换效果在web2.0网页设计里面无论是否需要被大量、胡乱的应用,并且成为 一种趋势。并不是所有的都是不好的,web2.0里用的不好的原因是过度使用、业余使用造成的。在大多数情况下,适当的应用图标切换按钮是相当有效的。Carsonified网站在导航上就运用了单色、简洁的图标切换效果, 并且于他的网站整体感觉想吻合。
jiaocheng08
六、使用漂亮实用的页脚
一开始我们就将页脚作为次要的内容,在页脚里面放置一些没有多大用处的内容。在设计的时候仅仅花费一点点心思在它上面。现在页脚对于整体设计来说变的越来越重要了,千万别错过好的页脚完成你设计。

展示大量的信息和证书
这个页脚主要展示了网站介绍和版权等必要的信息。Brian Hoff网站更是添加了一些个性、有趣的内容在里面。通过3列布局方式展示了作者的工作和建议性的内容。
jiaocheng09
添加搜索功能
Elliot Jay Stock’s网站在底部添加了一个特大的搜索框…
jiaocheng10

来源: 菠菜博




返回首页 | 关于我们 | 联系我们 | 乘车路线| 地铁路线| 学生公寓| 周边环境| 诚聘英才 | 网站地图 | 友情链接 | 版权声明