相遇即朋友. 想跟测试同行们学习一下,顺便也留下点自己的痕迹.

发布新日志

  • Performance Tester 和LoadRunner的比较 ——转

    2010-03-19 10:12:54

    Performance Tester和LoadRunner的比较


    两款同样都是比较主流的商业性能测试工具,可能LoadRunner的市场占有率和流行程度更高一些,有意思的是这篇比较的文章出自IBM工程师之手,转载过来,供大家进行工具选型的时候参考。

    以下转载自:http://www.ibm.com/developerworks/cn/rational/r-cn-rftloadrunner/

    本文概要介绍 IBM Rational Performance Tester (简称 RPT)和 HP Mercury LoadRunner (简称 LR)两个性能 / 压力测试工具,主要从脚本开发,场景构建与配置,性能监控,测试结果分析几个方面,对 LR 和 RPT 的使用做了详细的对比分析,并根据 IBM Lotus Form. 系统测试团队从 LR 到 RPT 的迁移的工作经历中总结了一些 RPT 的一些实用技巧。对于那些需要从 LR 工具切换到 IBM RPT 的测试人员的测试技术的平滑过渡,具有较强的借鉴意义。

    1 概要介绍

    LoadRunner 是一种适用于各种体系架构的自动负载测试工具,通过模拟实际用户的操作行为和实施实时性能监测,来帮助用户排查和发现问题。相比于 RPT, LR 能支持更广范的协议和技术,适应面很广,为用户的特殊环境提供特殊的解决方案。LR 的组件很多,其中最核心的组件包括:

    • Vuser Generator(VuGen) 用于捕获最终用户业务流程和创建自动性能测试脚本
    • Controller 用于组织、驱动、管理和监控负载测试。
    • Load Generator 负载生成器用于通过运行虚拟用户生成负载。
    • Analysis 有助于您查看、分析和比较性能结果。

    IBM Rational Performance Tester(简称 RPT)也是一款性能测试工具,适用于基于 Web 的应用程序的性能和可靠性测试。Rational Performance Tester 将易用性与深入分析功能相结合,从而简化了测试创建、负载生成和数据收集,以帮助确保应用程序具有支持数以千计并发用户并稳定运行的性能。

    • RPT 是针对 Web 应用程序的性能测试工具,基于 Windows 和 Linux 的用户界面,使用基于树型结构的测试编辑器提供高级且详细的测试视图。
    • 提供不同用户数的灵活的模拟,支持将 Windows 和 Linux 用作分布式负载生成器,使用最小化的硬件资源实现大型、多用户的测试。
    • 支持使用自定义 Java 代码的灵活测试定制。

    回页首

    2 脚本开发对比

    LR/RPT 的脚本的开发过程通常都是采用录制 + 定制的模式。首先通过对典型业务逻辑的录制,完成脚本中的基本业务的框架,然后针对录制结果,通过参数化,数据关联,增加逻辑控制等方式加强脚本的适应性来满足特殊的业务需求。

    2.1 脚本录制 / 定制过程

    • LR:直接生成面向过程的运行代码

    LR 通过对基本业务的录制,VuGen 将生成的 Vuser 函数(也称作 LR API)并将他们插入到脚本中。在实践中,LR 脚本就是由这样的 Vuser 函数和一些定制代码组成的。对于基于 Web(HTTP/HTML) 的应用程序的测试,多数用户选择基于 C 语言的 LR 脚本,显然,这种 LR 脚本是一种面向过程的脚本,开发者可以对最终运行的脚本进行直接的修改与调整。对于开发者来说,这种 LR 脚本的开发方式比较灵活。相应地,这项工作,对于开发者的编程基础,尤其是 C 语言和 LR API 的了解,要求都比较高。

    • RPT:录制结果经过“翻译”生成最终的运行代码

    与 LR 不同,RPT 的脚本录制过程可以拆分成两步。如图 1 所示,第一步,RPT Recorder on RAC 负责记录用户的所有 HTTP 请求,生成一系列的 Trace 文件。Trace 文件记录了用户与服务器的交互过程。第二步,当用户完成脚本的录制过程之后,RPT Test Generator 能够根据 Trace 文件“翻译”一遍,生成最终运行的测试脚本。

    这种生成临时 Trace 文件的好处是用户可以随时依据该 Trace 文件生成新的测试脚本,然后再对脚本进行测试场景定制,而不用对同一个操作过程做多次录制操作。
    图 1. RPT 脚本的录制和生成架构
    RPT 脚本的录制和生成架构
    2.2 参数化

    录制业务流程时,LR/RPT 生 成一个包含录制期间用到的实际值的脚本。假设用户要使用不同于录制内容的值执行该脚本的操作时,就需要用参数替换已录制的值。这被称为脚本参数化。脚本的 参数化可以简化脚本,同时增强脚本适用性。对于 LR 和 RPT 脚本,参数化过程类似,都是定义参数,为参数指定属性或者数据源的过程。但是在 LR 中,只有函数中的参数才能参数化,除此之外,其他字符串不能进行参数化。

    RPT 的参数化过程同样简单(以替换用户登录密码为例来说明),首先,选中需要进行参数替换的请求页面,如图 2 所示,选中左侧的登陆请求页面。在其右侧的 Test Data 中则显示与该请求页面相关的所有数据信息,脚本录制人员可以用其他值代替图 2 中的 password 变量。
    图 2. RPT 脚本参数化
    RPT 脚本参数化
    2.3 数据关联

    数 据关联类似于参数化,可以简化脚本,适应企业应用中需要动态数据的情况。默认情况下,LR 和 RPT 都能做到一些基本的数据关联,但是由于 HTTP 请求之间关联的复杂性,需要用户手动做一些数据关联。数据关联包含三个步骤,一是定义哪个录制的值需要被关联(替换);二是定义数据源。三是定义被关联的 数据与数据源之间的关联关系。

    LR 的数据关联过程如下:lr_save_XXXX(value,dataSource)语句将数据源的值保存到参数 dataSource 中;用 lr_eval_XXXX(dataSource)语句替换被关联的数据。

    RPT 中如果需要自己定义关联,则在 HTTP 请求中的 URL 中或者 Data 中选择需要创建关联的部分,然后右键选择替换对象。其中替换对象可以是脚本中已经建立好的引用(这里的引用就是一种用户自定义的数据源),或者 RPT 自带的数据源(例如时间戳对象),或者是 Custom Code( 下节介绍 )。

    图 3 中浅紫色的部分是已经被关联的 URL,运行测试时该部分将由被引用的 URL 值来替换该 URL。
    图 3. RPT 数据关联
    RPT 数据关联
    2.4 Custom code

    Custom code 是 RPT 独有的概念。尽管 RPT 脚本开发过程中,用户可以直接在 UI 层面达到对脚本的定制,但是这种定制能力毕竟有限。将定义好的 Custom Code 通过 UI 穿插到脚本之中,从而为 RPT 录制的脚本提供充足的扩展能力来保证其灵活的定制性。Custom code 本质上就是一个 Java 类。Custom Code 需要实现 com.ibm.rational.test.lt.kernel.custom.ICustomCode2 接口,并实现该接口中的如下方法:

    public String exec(ITestExecutionServices tes, String[] args)

    ITestExecutionServices tes 参数是 Test Container 中的一个实例 , 使用它可以访问 Test Container 运行态一些服务。

    String[] args 参数是我们定义 Custom Code 时定义传入的参数数组。

    该 方法的主体就是基于传入的信息进行业务逻辑处理代码,然后将处理结果(一个字符串)返回,其返回的字符串可以被后续的请求引用。Custom Code 是一个纯 Java 的类,所以具有 Java 编程经验的人都可以根据业务需求编写自己的 Custom code。

    2.5 数据池

    性能 / 压力测试过程中,通常都需要为某些测试提供大量的测试数据。LR 和 RPT 都提供了数据池功能,即是将一个数据文件作为参数值赋给一个参数。

    LR 中,用户可以指定该文件的多个数据以何种方式赋值到该参数中。LR 提供三种选择,顺序,随机,唯一。前两种比较容易理解,最后一种是指每个虚拟用户都从该文件中取不同的值作为参数值,如果该数据池不足够大,所有的备选值 都已经被取出过一次,即该数据池资源被用尽时,LR 报错。

    在 RPT 中,用户只能顺序从数据池中读入测试数据。RPT 的数据池是以 XML 格式存储的,并且在测试开始时,将数据池中的所有数据都加载到内存中,这样的实现模式不利于测试中使用大数据量。不过灵活的 Custom Code 功能可以弥补这方面的不足。对于大量的测试数据,可以通过自定义 Custom Code 来实现 On Demand 的数据读取和加载。
    图 4. RPT 数据池
    RPT 数据池
    http://hhrj.taobao.com

    2.6 流程控制

    LR 脚本大部分是基于 C 语言的,因此 C 语言中的流程控制语句(例如判断、循环等)都可以加入到 LR 脚本中。RPT 的流程控制操作可以通过 UI 界面轻松进行,它提供了灵活的流程控制模式,包括 IF 条件控制结构,和 LOOP 循环结构。

    1. IF 条件控制结构

    在 RPT 脚本中,可以将一部分连续的页面或者 HTTP 请求放到一个 IF 条件中去,然后由判断条件来确定 IF 结构中的页面或者 HTTP 请求是否被执行。其判断条件可以是 RPT 自动参数化后的参数,也可以是 Custom Code 的返回值,或者是数字、字符串等。

    图 5 是添加了 IF 条件后的脚本,包含了为 IF 语句设置判断条件的配置界面。
    图 5. RPT IF 条件控制结构
    RPT IF 条件控制结构
    同样,RPT 也支持 IF-ELSE 的结构。

    2. LOOP 循环结构

    RPT 中的另外一种流程控制结构就是 LOOP 结构,如图 6 脚本中,将所有的页面放到了一个 LOOP 结构中,然后可以通过指定循环次数来确定其中的脚本循环执行多少次。
    图 6. LOOP 控制结构
    LOOP 控制结构
    2.7 全局信息

    这里所说的全局信息,实际上是脚本运行时,LR/RPT 产生的内部数据,例如:当时的运行时间,Vu 所在用户组组名,迭代编号等。在 LR 中,所有的全局信息作为特殊的参数类型,供脚本开发者使用。例如 : 如果一个变量为 Group Name 类型,则该变量的值即为当前用户所在的用户组的组名。

    RPT 中的全局信息,存在 IDataArea 对象中。IDataArea 对象包含三个方面的信息,分别是“Test Data”、“Virtual User Data”、“Engine Data”,这些信息都可以通过 Custom Code 来获得。

    Custom Code 的实现需要继承 ICustomCode2 类,并实现该接口的核心方法“public String exec(ITestExecutionServices tes, String[] args)”,该方法的第一个参数就可以获得 IDataArea 对象,然后获得全局信息。同时用户也可以向 IDataArea 对象中添加信息,提供给测试脚本的其它地方使用。

    2.8 错误控制

    LR 用户可以指定脚本执行期间的错误的处理方法。默认情况下,当脚本执行出现错误,脚本将退出执行。用户也可以配置运行设置指示当 Vuser 出现错误时仍继续执行脚本。除此之外,用户还可以在脚本中加入 lr_error_message 函数,便于用户对日志的分析。

    RPT 中,当脚本运行出现错误,脚本将继续执行 , 可能后续会出现很多错误。

    2.9 Debug

    LR VuGen 可用作常规文本编辑器。您可以在其中打开任何文本文件并进行编辑。当重播期间在输出窗口中显示错误消息时,您可以双击该错误消息, VuGen 将使光标跳到导致问题的测试行。您还可以将光标置于错误代码上并按 F1 键,查看该错误代码的联机帮助 .

    RPT 在运行完一个测试之后,会产生相应的测试日志,如果在测试过程中发生任何错误,RPT 会以“Message”的形式提示出该请求发生错误。如图 7 中的测试日志中被选中的 Message 表示该 HTTP 请求在引用前面的关联值时发生错误。
    图 7. RPT 错误日志
    RPT 错误日志


    回页首

    http://hhrj.taobao.com

    3 场景构建与配置对比

    脚本只是定义了某些用户的操作步骤,而一个场景则包含了有关如何模拟实际用户的所有信息。LR 和 RPT 的场景构建过程比较类似,只是对脚本循环的控制,分配负载生成器等配置上略有差别。

    LR 中,Controller 组件负责场景的创建。您需要在一个场景中添加一个或多个脚本,并为每个脚本分配相应的 Vuser 组。然后,您可以为每个 Vuser 组分配多个虚拟用户,指定模拟该用户组的负载生成器。图 8 中,负载生成器即为本机,即负载生成器跟 Controller 是同一台机器,如果该处配置成其他计算机的 IP 地址,那么该用户组的负载模拟将由其他计算机完成。LR 中不能通过 Controller 指定一个脚本执行与否的概率,但是可以通过 C 语言开发,完成随机调用脚本的功能。Runtime-Setting 包含了所有针对该场景的一些附加配置,如脚本循环次数,等待时间,网络模拟等。
    图 8. LR 场景创建
    LR 场景创建
    RPT 中测试场景,是通过“Schedule”来组织的。Schedule 通过用户组、循环控制、随机选择器等功能部件来组织测试脚本使其满足实际场景。用户组则由循环控制或者随机选择器,再加上测试脚本等元素组成。循环控制用 来控制其下的测试脚本需要循环执行的次数。随机选择器是为了实现在多个测试脚本中随机选择一个来执行。可以为随机选择器指定权重,通过权重值来决定在多个 随机选择项中某项被随机选中的概率大小。图 9 是一个 RPT 创建场景的例子,其中“Schedule Element Details”提供了对 Schedule 的丰富配置功能,与 LR 中的 Run-Time 配置功能类似。
    图 9. RPT 场景创建
    RPT 场景创建
    RPT 的负载生成器配置也比较简单,首先选中要放到其它 RPT 主机上进行模拟的 User Group,然后在其配置界面中选中“Run this group on the following locations”,在其中添加远端的 RPT 主机信息。
    图 10. RPT 负载生成器配置
    RPT 负载生成器配置



    4 性能监控功能对比

    LR 和 RPT 内部都集成了一些实时监控器,RPT 可以对事务,Web,系统,Web 应用服务器等资源进行实时监控。LR 的监控范围更广泛一些,除了上述资源之外,还可以对网络,防火墙,Web 服务器,数据库,ERP,Java 等资源进行实时监控。无论使用那种测试工具,在自动测试过程中的任何时间,用户都可以获知系统的多种性能指标的当前值和变化趋势。

    在一个测试场景中,用户需要将被监控的服务器信息加入到资源监控列表中。LR 中,如图 11 所示,从左侧资源树中选择资源种类,在右侧对应资源状态显示窗口中,右键添加被监控的服务器名称。
    图 11. LR 添加被监控的服务器信息
    LR 添加被监控的服务器信息
    RPT 中,图 12 所示,用户需要在 Schedule 的配置窗中的“Resource Monitoring”标签栏添加需监控的服务器。
    图 12. RPT 添加被监控的服务器信息
    RPT 添加被监控的服务器信息



    5 测试结果分析功能对比

    LR 和 RPT 都提供了测试结果的多种图表以及图表之间的叠加效果,方便用户分析测试结果。LR 中测试结果图表的生成由 Analysis 组件完成。默认情况下,用户可以直接看到测试的总体概要分析,吞吐率,事务平均响应时间等图表,如果用户希望看到其他资源的监控图,可以通过添加图表完成 (图 13)。“Merge Graghs”可以帮助用户将同一个测试结果中的多种资源的结果进行叠加(图 14)。“Cross Result”可以生成多次测试结果的比较分析图(图 15)。
    图 13. LR 添加其他资源监控图
    LR 添加其他资源监控图

    图 14. LR 同一次测试中多种监控图的叠加
    LR 同一次测试中多种监控图的叠加

    图 15. LR 多次历史测试结果之间的比较
    LR 多次历史测试结果之间的比较
    RPT 也为测试结果提供了直观的图表表现,默认情况下,用户可以直接看到对测试成功率的总体柱状图,整个测试过程完成的总体信息列表,测试中页面的反应时间曲线图等报告。也可以通过添加其他监控信息的方法,将其他资源的监控图叠加到当前的监控图中。
    图 16. RPT 叠加其他资源监控图
    RPT 叠加其他资源监控图
    RPT 也可以实现多次测试结果的比较。在 RPT 的“Test Navigator”中选择待比较的测试结果,在其右键菜单中选择“Compare”,打开“Compare Results”窗口,然后将需要做比较的测试结果添加进来,在下一步中选择要显示的报告,点击“Finish”按钮打开比较结果的显示页面。图 17 是一个测试结果的比较报告。
    图 17. RPT 多次历史测试结果之间的比较报告
    RPT 多次历史测试结果之间的比较报告



    6 Rational Performance Tester 实用技巧

    1)调整日志采样频率和粒度以适应不同的测试场景

    RPT 的 Schedule 提供了测试数据的采样频率和采样粒度的配置,以适应不同的测试场景。在做长时间测试时,在 Schedule 的配置面板中的“Statistics”标签中通过适当增加日志采样间隔时间、日志级别和采样用户量,降低 RPT 的压力,避免因采样数据量过大,使内存耗尽,导致 RPT 无法响应。
    图 18. Statistics 配置
    Statistics 配置
    在 测试过程中,RPT 会记录测试中的请求数据和响应数据,以便在测试之后查看测试过程中的数据和错误信息。对于长时间测试,会产生大量的请求和响应数据,这些大量的日志信息会 让 RPT 不堪重负。在 Schedule 配置部分的“Test Log”标签中提供了日志记录的级别设置,对于长时间的测试,推荐使用图 19 所示的配置,记录错误和警告信息的级别为“All”,而对于其它信息则只记录“Primary Test Actions”即可。
    图 19. LOG 配置
    LOG 配置
    2)通过 Custom Code 实现多条测试数据的随机读取

    在 RPT 中通常采用 DataPool 的形式作为少量测试数据(例如模拟多个用户登录所用的多个用户名密码信息)的输入。不过 DataPool 的读取方式为顺序读取。如果对于输入数据需要随机读取,则可以通过 Custom Code 来实现。其实现方式可以是将测试数据存为“*.cvs”等格式文件,然后通过文件操作,并根据随机数从文件中读取内容作为测试输入数据。

    3)使用超大测试数据集文件

    对 于在测试过程中存在少量测试数据分次作为测试输入数据时(例如模拟多个用户登录所用的多个用户名密码信息),通常采用 DataPool 的形式,但是在测试数据量较大时该方法就不再适用,因为对于 DataPool 中的数据,测试开始时就被全部加载到内存,如果测试数据量过大,这种方式会造成大量的内存浪费。

    这种情况可以通过 RPT 提供的扩展功能 Custom Code 来定制代码,达到在测试过程中在需要的时候再去加载所需的内容,其实现也可以采用文件操作的方式。



    总结

    本 文中,我们概要介绍了 RPT 和 LoadRunner 两个性能压力测试工具,从多方面对两个工具进行详细的对比分析,并根据实践经验总结了一些 RPT 的实用技巧。通过本文,并学习链接中的网站,希望您能更快,更多的了解和使用 Rational Performance Tester 工具。

  • 紧急求助!!!

    2010-03-16 15:14:43

    请问哪位有使用RTE进行性能测试的,给我发一份资料过着指点一下均可。
  • 开了个小店,欢迎大家莅临指导

    2010-01-25 15:23:06

       最近和家人利用业余时间在淘宝上开了个小小的店铺,http://hhrj.taobao.com店不大,但还是满漂亮的啦,货物更没得说,好东西有啦,而且会不断地上架,就是刚开,人气不足,希望各位同修能帮忙提高下信誉,简单,有需要话费、Q币的到俺店里直接充值就可以啦,在此先谢谢啦。

       俺这个店好像是咱们测试人员中第一个店,希望大家顶呀,有需要货物的还是话费充值、Q币充值的,还是品味比较高的要书画的,统统到俺的店里来走走,看看。也帮俺提高提高信誉。到哪里充值不是充。是吧谢谢啦。别忘了俺的店名

    小店黄河人家http://hhrj.taobao.com

  • 负载压力测试环境\工具\数据

    2009-05-13 16:13:16

    if i am free ,i will upload my summary about testing.

    i write english just because my system has problem ,i can not

    use chinese importing ways .  

  • 学习loadrunner 的过程中写的心得总结,

    2009-05-13 16:13:16

    在学习性能测试的过程中写的心得体会,其中的错误是免不了的,如果有问题,希望大家能给指出来.燕过也留点痕迹
  • LR的学习总结1

    2008-12-03 14:23:47

    最近一直在学习LR,应该说提高的比较快,但是如果说真正的学好,路程还很远.

    在这里我想说的是要学习仅仅靠LR中所带的帮助是很不够的,必须有相应的参考书还有老师才可以,否则学习中将遇到非常多的问题都难以很快的解决,因为帮助是按照顺序的方法来写的,而在自己的自学成才过程中可能遇上的问题却是千奇百怪的,互相牵连,在帮助中根本找不到,所以自己心里非常的着急,不知道如何才能够事半功倍.正在这个时候,一次在论坛中随意的浏览,无意发现了于涌老师发的链接<<软件性能测试与LOADRUNNER实战>>,突然象抓住了救命稻草一样,觉得这本书对自己肯定会有帮助.于是就千方百计的寻找购买此书.正如自己所希望的那样,这本书给了我很大的帮助,而且此书的写法非常对我的胃口,因为他是以提出问题和作出解答为总的脉络来写的,如果需要就将有关的操作过程以及原理给大家做总结,而我在日常工作中就是这中方法,所以学起来感觉非常的顺口,目前这本书已经学习了将近一半,虽然不能完全理解,但是事半功倍是一定的了,真要感激于涌老师了.

  • 所得

    2008-12-03 14:05:58

    刚才看了cleverman的测试职业发展的三部曲,有所领悟:拷到下面作了留存.

    第一步:手工测试/黑盒测试:这个大家都是太熟悉不过了,主要是设计测试用例,执行测试用例,发现bug,报告bug,验证bug fix。每一步都有junior, senior, architect的区别。junior刚入门,就是熟悉学习这些东西,这些东西都搞熟了,加上对产品的较深理解就是senior了。 senior要对一些较大的模块能够做计划,能够带领junior的一起工作。architect要能够对整个产品有深刻的理解,可以规划整个产品的测试,包括需要多少硬件,需要什么软件,需要多少人力,需要多少时间,等等。

    第二步:自动化测试。手工测试人员和自动化测试人员最大的区别在于懂编程。不过如果你只是会用scrīpt编写一些程序的话,还不能称之为自动化测试人员,至少还要有软件设计的能力。junior刚入门除了要学习手工测试的那些知识以外,还要能够使用某种高级语言,某种测试工具自动化自己所负责的测试用例。senior除了手工测试的那些要求以外,还要能够规划一个较大模块的自动化,能够解决各式各样junior在自动化过程中发现的问题。architect除了手工测试的要求以外,还要能够对整个产品进行自动化的设计,比如采用什么语言,采用什么工具,各个模块自动化的整合,自动化的schedule,自动化的report等等。

    手工测试人员的title,往往叫做SQAA(Software QA Analist), junior SQAA, senior SQAA, principle/staff SQAA。

    自动化测试人员的title,往往叫做SDET(Software Design Engineer in Test), junior SDET, senior SDET, principle/staff SDET。

    还有更常见的title,SQAE (Software QA Engineer), 是处于这两者之间的,既要手工测试,也要懂得自动化测试。基本上大多数的测试人员都是发展在这条path上。因此,你可以看看自己,如果是SQAA,就要往SQAE的方向发展,如果已经是SQAE了就要往SDET方向发展。不同的path,虽然有不同的级别,但是工资也是有区别的。比如senior SQAA=junior SQAE, senior SQAE=junior SDET。而且,不同的path可能最终能够发展到的级别也有区别,比如SQAA可能就不会设有principle SQAA的级别。也就是说,如果想达到architect的级别,只是会手工测试是远远不够的。

    达到Senior SDET应该就是比较高级的测试人员了。编程序,自动化这些都是小菜一碟,就是跟开发人员比起来也能做一个准senior的developer了。可是这还没有发展到头,以我现在的观点来看,还有第三步。

    第三步:安全测试。我们知道各式各样产品最终发布出去最头疼的并不是用户找到多少bug,而是安全问题。很多知名大公司发布产品后,还要投入大量的人力去进行安全漏洞的修补。安全漏洞严格来说也是质量问题,那么这些安全漏洞有没有可能在产品发布之前被测试人员所发现呢?答案是肯定的。因此作为我们测试人员的话,把手工测试,自动化测试精通之后,就要努力向安全测试的方向发展了。具备有安全测试能力的工程师基本上都可以称之为测试专家了。这需要有非常强的编码能力,非常深的系统内核知识,甚至黑客的背景。更重要的是,要随时能够从安全的角度来分析产品的质量。我们要了解程序员实现的具体方法与步骤,结合review他们的代码,大量的试验来发现安全漏洞。这里举个例子,前不久学习一个文件加密的实现过程,发现它会把每个要加密的文件做一个备份,加密之后再删除这个备份。备份的作用是一旦加密失败,数据可以被恢复。那么我当时就考虑,这个备份删除之后,是否内容还留在硬盘呢?后来经过试验发现,确实内容还存留在硬盘上。这就是个安全漏洞,虽然你的文件加密的,可是黑客还是可以通过找到以前备份文件的内容来得到敏感的信息。

    以上是自己对测试现状的理解,自己可以怎样发展?自己也正在有意识的向第三步发展。我觉得测试人员一定不要停留在自己的目前技术水平,技术没有尽头,上面的发展空间还非常的广阔,也许还有四步曲,五步曲......

        cleverman 所经过的一些里程,我想也是我需要和必将经历的一些历程,从他身上我或许可以遥望到自己未来的影子,也可以知道在未来的过程中自己需要掌握一些什么,收获不少,真是非常的感激.

  • 目前的测试工作以及疑惑

    2008-09-27 16:42:22

        单位里分配给自己的学习、工作任务主要是进行非功能测试,当然也做一部分功能测试,可我一直对此工作有很大的迷惑,不知道该如何对待。因为为了搞好这项工作我先后查了很多的资料,却很少有关于非功能测试方面的案例介绍,即便是51TESTING 上也少有这方面的内容。问过一些测试朋友,他们认为非功能测试是一项非常烦琐的工作,需要很多人来完成,一个人或者是几个人是不能完成的,因为他需要的知识相当多。到底应该怎么干? 目前努力学习英语,打算到更多的网站上查阅一下。

         工作不能耽误,学习还要继续,摸索中。。。。。。。。。。

         如果有朋友也干此方面的工作,希望交流一下。。。。。盼望呢。。。。。。。。。

  • 也写点心得

    2008-09-27 10:26:11


    看了51testing 上一位老兄写的《软件测试新手的感受》,有些感触,他干测试的时间不长---半年时间,写的文章却很好,很有想法,主题就是将自己半年来学到的东西整理了一下,写出了自己的想法,既提高了自己,也给别人做了借鉴,挺好。

    自己干测试也有半年时间了,测试的软件前前后后也有几个,包括的框架种类也各不相同,因此学习的东西也杂七杂八,可惜的是自己一直也没有一个清晰的思路,大海捞针似的学,稀里糊涂的干。因为是半路出家,没有老师具体指导.只能自学,边摸索,边干活,很有些累。

    虽然一如继往地写读书笔记,笔墨也浪费了不少。但真正坐下来利用大段的时间将自己的思路理清还没有过。因为最近有了一定的时间,更因为狠狠地泡了一段时间51Testing 测试论坛,下载学习了该网站的电子测试杂志之后,自己的思路终于开始清晰起来,朦朦胧胧地开始看清了远方的路,麻着胆子去分析一下自己,也学着展望一下未来了,毕竟摸黑走路的感觉很不好。

    一直以为:学习的最好的辅助方法是写心得体会。尝试着将自己学到、想到\做到\尝试的东西归纳一下,写出来,对自己都会有好处,如果能给别人当个借鉴那会更好.在学习的过程中,歇一歇,写一写,抬头看看路,不会浪费太多的时间,不是有那句老话“磨刀不误砍柴工”。下面我就来总结一下前一阶段的学习和工作,就算磨第一刀吧。

    先来作一下自我分析:目前拥有的计算机知识多不是在学校里学的(转行),通过几年的工作和学习对windows unix linux等 操作系统有了一定的了解,但不系统,应付日常的工作当然没有问题,但是如果要更深入一点,尤其是如果是搞测试我想需要的知识会比较多,那点本钱根本不够,还需要大大的提高。

    编程,接触了一点点.主要还是在学校里学习到的,但那是很久以前的事情了,大部分的内容多已经还给了老师.前不久刚刚学习了一下c#,还不错比较新鲜,可以借用,但是实际操作经验比较少.幸好本人还没有老化到不愿意学习的地步,每天学习一点,相信不久的将来自己还会有很大的提高,呵呵,写写网络日记也可以给自己一个督促。

    回顾改行以来,为了更好地工作,先后学习了SQL语句,数据库的基础知识,c#编程,linux unix 的操作,ORACLE以及部分计算机知识比如计算机协议等,测试知识是目前所学的重点,可由于没有一个主线将这些知识贯穿起来,总觉得脑袋里象是跑马,没有个头绪,希望可以尽快地找到这根主线。

    也希望广大测试朋友们给个建议,兄弟在此先感谢了。

     

     

     

    顺便提一下,写此文的时候好象发现了个bug耶,就是在打字时进行键盘转换会出现乱字符,又浪费了我的不少感情,呵呵。。。。。。。。。高手解决一下了。


    本文出自test_fairy的51Testing软件测试博客,转载请保留出处及链接:http://www.51testing.com/?203341

  • 让我也记录下岁月的痕迹

    2008-09-26 11:04:46

       从开始进入测试行业到如今也有一段时间了,在此过程中可以说是各种心情都有,起起伏伏,看过不少人写的东西,可有时觉得自己也应该写点什么,记录下自己的心情.如果自己写的东西能够为大家打开点思路将更会是让我更加高兴的事情.

Open Toolbar