如果你有一个苹果,我有一个苹果,我们交换以后还是一人一个苹果,但如果你有一种思想,我有一种思想,我们交换以后,每个人便拥有了两种思想。

发布新日志

  • LoadRunner之--解决回放时浏览器乱码问题

    2007-07-01 20:07:04

    用LR回放时,浏览器显示乱码的问题,相信大家都遇到过,那么怎么解决呢?

    下面我就选取浏览器IE6.0中文版,给大家讲解一下。

    首先,设置Run-time Settings-Browser-Browser Emulation-Change。

    然后,设置IE,查看-编码-钩上“自动选择”和Unicode(UTF-8)。

    现在回放一下脚本吧,看看是不是变回期待已久的中文了.

  • 在项目测试实施过程中"随机测试"也很重要

    2007-07-01 18:35:00

    在软件测试中除了根据测试样例和测试说明书进行测试外,还需要进行随机测试(Ad-hoc testing),主要是根据测试者的经验对软件进行功能和性能抽查。随机测试是根据测试说明书执行样例测试的重要补充手段,是保证测试覆盖完整性的有效方式和过程。

    随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试样例(TestCase)没有覆盖到的部分。另外,对于软件更新和新增加的功能要重点测试。重点对一些特殊点情况点、特殊的使用环境、并发性、进行检查。尤其对以前测试发现的重大Bug,进行再次测试,可以结合回归测试(Regressive testing)一起进行。

    理论上,每一个被测软件版本都需要执行随机测试,尤其对于最后的将要发布的版本更要重视随机测试。随机测试最好由具有丰富测试经验的熟悉被测软件的测试人员进行测试。对于被测试的软件越熟悉,执行随机测试越容易。只有不断的积累测试经验,包括具体的测试执行和对缺陷跟踪记录的分析,不断总结,才能提高
  • 如何在软件频繁改变时测试〔转〕

    2007-06-29 16:26:46

        就像一句古老的谚语中说得:“唯一不变的是改变”。
        在软件开发模型中,曾被认为最优秀的瀑布模型的一个缺陷就是假定很少或者没有改变,而现实世界是每天都在改变的。也因为如此,其他的开发模型比如“快速应用开发(Rapid Application Development,RAD)”逐渐发展成可以接收改变,并通过计划好的迭代过程利用这些改变来改进软件的开发模型。
        虽然RAD可以帮助软件开发人员加快开发的速度,但是却也让测试人员非常头痛。因为每一次改变都有可能产生新的缺陷,而要想找到新的缺陷只有一个办法——进行全面的回归测试——对所有原来已经测试通过的部分再次测试,对返回值进行比较并找出不同的地方。
        这里有两个问题需要注意:
        1)在软件频繁改变的时候,可能进行全面测试吗?
        实际上这是不可能的。不过,这个问题本身就有问题^_^,因为很多时候甚至都不可能在一个完全稳定的环境中测试软件。这个问题其实是想问:“在软件频繁变化的时候,能否进行有效的测试?”我们能否期望通过更好的使用人力和其他资源来完成这种测试?我们能否找到所期望的那么多缺陷?
        通过对使用RAD方法的项目的观察,我发现软件测试过程对于发现缺陷是非常重要的,不同的过程会表现出不同的效果。因为大多数时候我们的开发过程都不是简单的重复,所以在RAD环境中就不能象其他环境那样——尝试着用各种方法到处看看能不能找到一些缺陷。
        2)在软件频繁改变的时候,有哪些策略可以使用?
        应该花些时间学习怎样在不同的环境下开展工作,不过在软件频繁改变的时候有些一般的策略还是可以参考的。
        .首先,你必须接受这个事实——你不可能有6周的时间对一个每天都在变化的软件进行测试——或者说你的老板不会允许你在每次软件改变后都用这么长的周期来进行测试。唯一的办法是你要定义一个可以快速有效的完成测试任务的过程。
        .进行风险评估。能够区分不同测试对象的风险级别是非常重要的,因为这样你就可以通过对不同的测试对象排列优先级,在那些很简单的问题上只花费较少的时间,而对更高的风险则给予更高的优先级和更多的时间以及其他资源。
        .必须有一个确定的工作版本(基线版本),以便于你在将来进行测试的时候可以进行比较。
        .自动化测试。使用捕捉/回放工具可以借助一些自动化特性帮助你来对软件进行回归测试。应该考虑花些时间和资金把一些工具融入到你的团队中,让大家都学会如何使用这些工具会对你的工作有所帮助。对于一个不愿引入新技术的组织——比如自动化测试工具——是很难在软件频繁改变期间完成测试的。这就像盖一座房子,手头上必须要有些合适的工具才行。
        .自动化工具只能对你的操作进行记录和回放,这是不够的。你必须明确业务需求,设计测试用例和测试过程,制定测试计划。另外,如果人们想在长期工作过程中获得比短期工作更多的好处,就需要考虑测试用例和测试脚本。
        在软件频繁改变的时候进行测试不是不可能的,但是需要快速的响应、努力工作和维护对改变的跟踪。
        在软件频繁改变时进行测试同样需要一个有创新思维的团队和过程,工具自己不会工作,只有在工作中由最优秀的人员在合适的时机使用才会产生最好的效果。使工具、人员和过程达到一个最理想的结合是一件非常有挑战性的事情。
  • loadrunner成功监视unix服务器

    2007-06-29 08:30:04

    尝试了网上介绍的方法,但是我公司几台UNIX服务器上的inetd.conf文件里都没有"rstatd"字符串,不知这是何故?我自己手动添加一行不知道能不能行呢?
    我现在就是想问一下那行话怎么写的,下面附上我网上查到的方法附:
    在命令行提示符下输入:
    vi /etc/inetd.conf
    在出现的界面中敲键盘:
    /rstatd
    命令解释:在打开的文档中查找“rstatd”,接下来继续敲键盘:x
    命令解释:删除当前字符,在这里为删除rstatd命令前的“#”,继续敲键盘:
    :wq
    命令解释:保存并退出,注意前面有个冒号。接着在命令提示符下输入:
    refresh –s inetd
    命令解释:重新启动服务。
    这样使用loadrunner就可以监视AIX系统的性能情况了。

  • WEB系统服务器端与客户端的测试

    2007-06-28 20:50:59

    通常,客户 / 服务器软件的测试发生在三个不同的层次:
    ( 1 )个体的客户端应用以 “ 分离的 ” 模式被测试 — 不考虑服务器和底层网络的运行;
    ( 2 )客户端软件和关联的服务器端应用被一起测试,但网络运行不被明显的考虑;
    ( 3 )完整的 B/S 体系结构,包括网络运行和性能,被测试。 
      下面的测试方法是 B/S 应用中经常用到的: 
      应用功能测试 — 客户端应用被独立地执行,以揭示在其运行中的错误。 
    服务器测试 — 测试服务器的协调和数据管理功能,也考虑服务器性能(整体反映时间和数据吞吐量)。
    数据库测试 — 测试服务器存储的数据的精确性和完整性,检查客户端应用提交的事务,以保证数据被正确地存储、更新和检索。 
    事务测试 — 创建一系列的测试以保证每类事务被按照需求处理。测试着重于处理的正确性,也关注性能问题。
    网络通信测试 — 这些测试验证网络节点间的通信正常地发生并且消息传递事务和相关的网络交通无错的发生。

  • 软件测试的技巧

    2007-06-28 11:14:59

      软件测试虽然辛苦,但是掌握了一定的技巧之后将使你事半功倍。
      (1) 边界测试,测试用户输入框中的数值的最大数和最小数,以及为空时的情况。
      (2) 非法测试,例如在输入数字的地方输入字母。
      (3) 跟踪测试,跟踪一条数据的流程,保证数据的正确性。
      (4) 在开始测试时应保证数据的正确性,然后在从系统中找出各种BUG。
      (5) 接口测试,程序往往在接口的地方很容易发生错误,要在此模块测试勿掉以轻心。
      (6) 代码重用测试,在开发过程中有些模块功能几乎相同,程序员在重用代码时可能忘记在原有代码上  
                   
    修改或修改不全面,而造成的错误。
      (7) 突发事件测试,服务器上可能发生意外情况的测试。
      (8) 外界环境测试,有些系统在开发时依赖于另外一个系统,当另外一个系统发生错误时, 这个系统所受
                    到的影响的情况。
      (9) 在程序员刚修复Bug之后的地方,再找一找,往往程序员只修复报告出来的缺陷而不去考虑别的功能
                   
    在修改时可能会重新造成错误。
      (10) 认真做好测试记录在做完一天的测试记录之后,第二天再根据第一天的测试记录重复测试你会发现
                     有未修正的错误。
      (11) 文字测试,如果在系统中有用词不当的地方,我想这是不应该的。
      (12) 系统兼容测试,例如有些程序在IE6能运行正常,到IE5下不能运行。有些程序在WIN2000下能
                     运行,而到WIN98却不能运行。像一些很特别的用户去使用系统,你很有可能发现BUG。
      (13) 用户的易用性测试,往往用户的需求是不断的变化的,而其中的一部份变化的原因,是有用户操作
                     上不方便引起的。

      软件测试是软件开发中的重中之重,没有一点可以马虎的,在项目管理过程,我强调的时是每个过程的每一个环节都要进行测试,保证系统在每个阶段可以控制。因为软件测试中考虑的问题基本上是项目管理中考虑的问题。

      在项目管理中考虑的一些问题应该是在软件测试时有些体现,体现的内容是软件测试的一些侧重点,具体说,软件测试是事务性的,而项目管理是策略性,一些策略性的东西必须在一些事务性的事务上来实现。

      软件测试的事务性操作很多,这些操作需要一个良好的心态去对待。必须有一个良好团队合作的习惯,工作中真的需要多总结,多剖析,对于毛病:“有则改之、无则加冕”。

  • Web测试手段

    2007-06-28 11:11:13

    Web测试手段

     近年来,随着软硬件技术发展和人们意识的提高,Web应用得到广泛的普及,一方面在互联网浪潮的推动下,基于互联网的信息共享和电子商务不断发展,像新浪、搜狐、8848等大型网站不断涌现出来,另一方面随着Java、CGI等网络技术的成熟,基于B/S结构的大型软件逐渐显示出巨大的优势。同时,也就产生了一个焦点问题,什么样的服务器能够满足不同用户的需求,怎么能够保证Web服务器能够长期稳定地运行,为了满足这样的需求Web测试也就同样变得十分重要。
      当前Web测试主要通过Web测试工具加上良好的测试案例完成的,我们认为主要有以下两种测试类型:基准测试、非基准测试

      基准测试:主要指测试工具已经提供了标准的测试案例库,包括静态测试案例(HTM、JPG)、动态测试案例(CGI)和SSL测试案例等。这类测试工具分为测试案例库、控制台程序、客户端程序三个部分。它的原理是,Web服务器开启特定的Web服务程序,并且运行上述测试案例,由控制台程序控制各个客户端按照一定的脚本访问顺序遍历Web服务器的各个测试案例,每个请求完成后,各个客户端向控制台报告访问的结构,当一个测试集完成后由控制台将所有的信息综合统计,测试过程中控制台还需要采用SNMP协议对服务器进行实时监控,综合两个方面的因素可以反映出Web服务器在不同压力情况下的综合性能。

      在测试过程中,主要影响测试结果的因素有网络环境、客户端性能。目前无论IA架构服务器还是SUN、HP、IBM的UNIX服务器性能都越来越优越,有可能出现在100MB网络下不能够提供足够的网络压力,有可能网络首先出现瓶颈,这样就需要扩展到1000MB网络环境或使用多个网段对服务器提供足够的压力,而稳定的客户端对于测试来说也是十分重要的,因为客户端如果出现性能下降,就会造成系统崩溃或者不能提供稳定的测试压力从而导致测试结果出现偏差;一台客户端到底能够稳定运行多少数量的连接是根据不同的硬件配置和操作系统决定的,因此对客户端的硬件资源进行监控是保证客户端可以稳定运行的必要手段。

      由于这类测试工具使用的是工具开发商提供的测试案例集,虽然也具有一定的权威性,但是目前再完美的测试案例集也不能涵盖所有的Web应用情况,所以也不能够完全体现出Web服务器完整的性能,因此该类测试工具更加适合IT媒体对Web类服务器软硬件的横向对比测试,在测试对象和环境大体统一的情况下,可以比较出各个测试对象的性能差异。而对于有实际应用背景的Web服务器进行测试,使用这样的测试工具就不适合了,我们在以后的测试漫谈中会继续介绍

  • 管理一个测试组织涉及到的相关概念 [转]

    2007-06-28 11:08:09

    管理一个测试组织涉及到的相关概念
    作者:不详    2007年1月9日
    首先,我们要对我们的测试做一个定义:软件测试是为了发现错误而执行程序的过程。我们进行我们意义在哪里,是保证产品质量,还是保证项目能够及时上线。这里也涉及到我们测试的目的:提高产品的质量。
      其次,要定义我们测试的层次:单元、集成,系统,验收,以及是否需要开始自动化测试,进行产品的性能测试。进行这些层次的测试,我们需要招聘什么样的人才,需要哪些部门配合。
      第三:要定义我们测试的类型:功能、界面、性能、强度、容量、配置、安装等测试策略
      测试工具的选用:工具的种类,工具能做的工作和不能做的工作。
      测试类型:静态分析,功能测试,用户界面测试,性能测试,负载测试,强度测试,容量测试,配置测试,安装测试。
      性能测试:响应时间,并发性,吞吐量,处理精度。
      强度测试:资源少的情况下可能发生的错误,低内存,磁盘空间。
      共享资源竞争的情况下可能发生的错误:系统资源,数据库加锁,网络带宽。
      如果我们要做CMM评审,我们还要了解CMM对于测试的要求。RUP把需求,设计,编码,测试并行了,仅仅是测试在编码之后进行,测试计划和设计与开发同步。
      测试用例是否覆盖了需求:
      需求〉测试需求〉测试用例
      软件测试的目的:
      基于不同的立场,存在两种完全不同的测试目的。从用户角度出发,暴露软件中存在的错误和缺陷,以考虑是否可接受该产品。
      从软件开发者的角度出发,表明软件产品中不存在错误的过程,验证该软件已实现了用户的要求,确立人们对软件质量的信心。
      测试的目的:
      以最少的时间和人力:系统地找出软件中潜在地各种缺陷和错误。
      测试地附带收获是:能够证明软件的功能和性能与需求说明相复合。
      软件测试地原则:尽早的和不断地进行软件测试。
      测试中应注意地现象:排除测试的随意性。
      妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。
      软件测试的对象:
      软件测试不等于程序测试,软件测试应贯串于软件定义和开发地整个期间。需求分析,概要设计,详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明,概要设计规格说明,详细设计规格说明以及源程序,都应成为软件测试的对象。
      为把握软件开发各个环节地正确性,需要进行各种确认和验证。
      确认:是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。
      验证:试图证明在软件生存期各个阶段,以及阶段间的逻辑协调性,完备性和正确性。
      软件配置:
      软件需求规格说明书,设计规格说明书,源代码等。
      测试配置:
      测试计划,测试用例,测试程序等。
      测试工具:
      测试数据自动生成程序,静态分析程序,动态分析程序,测试结果分析程序,以及驱动测试的测试数据库等等。
      测试和软件开发各阶段的关系:
      软件开发过程是一个自顶向下逐步细化的过程,软件计划阶段定义软件作用域。
      软件需求分析建立软件信息域,功能和性能需求、约束。软件设计,把设计用某种程序语言转换成程序代码。

  • 排错的基本方法

    2007-06-28 08:57:42

    排错的基本方法

    排错(即调试)与成功的测试形影相随。测试成功的标志是发现了错误。根据错误迹象确定错误的原因和准确位置,并加以改正的主要依靠排错技术。

    1. 排错过程

      排错过程开始于一个测试用例的执行,若测试结果与期望结果有出入,即出现了错误征兆,排错过程首先要找出错误原因,然后对错误进行修正。因此排错过程有两种可能,一是找到了错误原因并纠正了错误,另一种可能是错误原因不明,排错人员只得做某种推测,然后再设计测试用例证实这种推测,若一次推测失败,再做第二次推测,直到发现并纠正了错误。

       排错是一个相当艰苦的过程,究其原因除了开发人员心理方面的障碍外,还因为隐藏在程序中的错误具有下列特殊的性质:
      (1) 错误的外部征兆远离引起错误的内部原因,对于高度耦合的程序结构此类现象更为严重;
      (2) 纠正一个错误造成了另一错误现象(暂时)的消失;
      (3) 某些错误征兆只是假象;
      (4) 因操作人员一时疏忽造成的某些错误征兆不易追踪;
      (5) 错误是由于风时而不是程序引起的;
      (6) 输入条件难以精确地再构造(例如,某些实时应用的输入次序不确定);
      (7) 错误征兆时有时无,此现象对嵌入式系统尤其普遍;
      (8) 错误是由于把任务分布在若干台不同处理机上运行而造成的。

      在软件排错过程中,可能遇到大大小小、形形色色的问题,随着问题的增多,排错人员的压力也随之增大,过分地紧张致使开发人员在排除一个问题的同时又引入更多的新问题。

      尽管排错不是一门好学的技术(有时人们更愿意称之为艺术),但还是有若干行之有效的方法和策略,下面介绍几种排错方法。

    2. 排错方法

      无论采用哪种排错方法,目标只有一个,即发现并排除引起错误的原因,这要求排错人员能把直观想象与系统评估很好的结合起来。
      常用的排错策略分为三类:
      ① 原始类(brute force)
      ② 回溯类(backtracking)
      ③ 排除类(cause eliminations)

      原始类排错方法是最常用也是最低效的方法,只有在万般无奈的情况下才使用它,主要思想是“通过计算机找错”。例如输出存储器、寄存器的内容,在程序安排若干输出语句等,凭借大量的现场信息,从中找到出错的线索,虽然最终也能成功,但难免要耗费大量的时间和精力。

      回溯法能成功地用于程序的排错。方法是从出现错误征兆处开始,人工地沿控制流程往回追踪,直至发现出错的根源,不幸的是程序变大后,可能的回溯路线显著增加,以致人工进行完全回溯到望而不可及。

      排除法基于归纳和演绎原理,采用“分治”的概念,首先惧与错误出现有关有所有数据,假想一个错误原因,用这些数据证明或反驳它;或者一次列出所有可能的原因,通过测试一一排除。只要某次测试结果说明某种假设已呈现倪端,则立即精化数据,乘胜追击。

      上述每一类方法均可辅以排错工具。目前,调试编译器、动态调试器(“追踪器”)、测试用例自动生成器、存储器映象及交叉访问示图等到一系列工具已广为使用。然而,无论什么工具也替代不了一个开发人员在对完整的设计文档和清晰的源代码进行认真审阅和推敲之后所起的作用。此外,不应荒废排错过程中最有价值的一个资源,那就是开发小组中其他成员的评价和忠告,正所谓“当事者迷,旁观者清”。

      前面多次提到,修改一处老问题可能引入几处新问题,有时程序越改越乱,但若能做到每次纠错前都扪心自问三个问题,情况将大为改观:
      ① 导致这个错误的原因在程序其他部分还可能存在吗?
      ② 本次修改可能对程序中相关的逻辑和数据造成什么影响?引起什么问题?
      ③ 上次遇到的类似问题是如何排除的?
895/5<12345
Open Toolbar