岁月静好,现世安稳!

发布新日志

  • SQL数据库管理系统知识复习

    2009-02-27 10:17:14

        数据库管理系统是数据库系统的核心,是为数据库的建立、使用和维护而配置的软件。它建立在操作系统的基础上,是位于操作系统与用户之间的一层数据管理软件,负责对数据库进行统一的管理和控制。用户发出的或应用程序中的各种操作数据库中数据的命令,都要通过数据库管理系统来执行。数据库管理系统还承担着数据库的维护工作,能够按照数据库管理员所规定的要求,保证数据库的安全性和完整性。

        1、DBMS的功能
        由于不同DBMS要求的硬件资源、软件环境是不同的,因此其功能与性能也存在差异,但一般说来,DBMS的功能主要包括以下6个方面。
        1.1.数据定义
        数据定义包括定义构成数据库结构的外模式、模式和内模式,定义各个外模式与模式之间的映射,定义模式与内模式之间的映射,定义有关的约束条件(例如,为保证数据库中数据具有正确语义而定义的完整性规则,为保证数据库安全而定义的用户口令和存取权限等)。
        1.2.数据操纵
        数据操纵包括对数据库数据的检索、插入、修改和删除等基本操作。
        1.3.数据库运行管理
        对数据库的运行进行管理是DBMS运行时的核心部分,包括对数据库进行并发控制、安全性检查、完整性约束条件的检查和执行、数据库的内部维护(如索引、数据字典的自动维护)等。所有访问数据库的操作都要在这些控制程序的统一管理下进行,以保证数据的安全性、完整性、一致性以及多用户对数据库的并发使用。
        1.4.数据组织、存储和管理
        数据库中需要存放多种数据,如数据字典、用户数据、存取路径等,DBMS负责分门别类地组织、存储和管理这些数据,确定以何种文件结构和存取方式物理地组织这些数据,如何实现数据之间的联系,以便提高存储空间利用率以及提高随机查找、顺序查找、增、删、改等操作的时间效率。
        1.5.数据库的建立和维护
        建立数据库包括数据库初始数据的输入与数据转换等。维护数据库包括数据库的转储与恢复、数据库的重组织与重构造、性能的监视与分析等。
        1.6.数据通信接口
        DBMS需要提供与其他软件系统进行通信的功能。例如,提供与其他DBMS或文件系统的接口,从而能够将数据转换为另一个DBMS或文件系统能够接受的格式,或者接收其他DBMS或文件系统的数据。

        2、DBMS的组成
        为了提供上述6方面的功能,DBMS通常由以下4部分组成。
        2.1.数据定义语言及其翻译处理程序
        DBMS一般都提供数据定义语言(Data Definition Language,简称DDL)供用户定义数据库的外模式、模式、内模式、各级模式间的映射、有关的约束条件等。用DDL定义的外模式、模式和内模式分别称为源外模式、源模式和源内模式,各种模式翻译程序负责将它们翻译成相应的内部表示,即生成目标外模式、目标模式和目标内模式。
        2.2.数据操纵语言及其编译(或解释)程序
        DBMS提供了数据操纵语言(Data Manipulation Language,简称DML)实现对数据库的检索、插入、修改、删除等基本操作。DML分为宿主型DML和自主型DML两类。宿主型DML本身不能独立使用,必须嵌入主语言中,例如嵌入C、COBOL、FORTRAN等高级语言中。自主型DML又称为自含型DML,它们是交互式命令语言,语法简单,可以独立使用。
        2.3.数据库运行控制程序
        DBMS提供了一些负责数据库运行过程中的控制与管理的系统运行控制程序,包括系统初启程序、文件读写与维护程序、存取路径管理程序、缓冲区管理程序、安全性控制程序、完整性检查程序、并发控制程序、事务管理程序、运行日志管理程序等,它们在数据库运行过程中监视着对数据库的所有操作,控制管理数据库资源,处理多用户的并发操作等。
        2.4.实用程序
        DBMS通常还提供一些实用程序,包括数据初始装入程序、数据转储程序、数据库恢复程序、性能监测程序、数据库再组织程序、数据转换程序、通信程序等。数据库用户可以利用这些实用程序完成数据库的建立与维护,以及数据格式的转换与通信。

  • 自动化测试适应领域

    2009-01-11 20:18:49

        自动测试与手工测试相比,可以大大提高测试效率。适用于以下领域:

    对新版本软件执行回归测试

        这是最显而易见的可以使用自动化的工作,尤其是在软件经常进行版本更新的环境中。当新版本测试时,只需要几分钟时间启动已有的 测试用例即可自动完成对新版本的回归测试。

        执行手工很难达到或手工无法完成的测试。企图使用手工执行大规模的多用户并发测试是很难实现的,但是使用自动测试工具模拟多用户就是很容易的事情了,用户场景测试随时都可以运行,测试执行人员不需要了解应用程序的复杂业务逻辑。

        手工测试时,期望的输出通常包含明显的标志,可以让测试人员识别。但是,有很多属性是很难由人工来确认的。例如:图形界面测试中,界面操作经常会触发一些事件,但是并没有立刻输出结果。在这种情况下,测试工具可以检测到事件被触发,并执行相应的操作。性能测试和压力测试通常使用自动测试的方式才能进行。

    枯燥乏味的重复性工作

        自动测试枯燥乏味的工作,例如:重复进行相同的测试输入数据,自动化工具比手工输入准确性高,还可以将测试人员从重复性劳动中 解脱出来,将精力专注于如何设计好的测试用例。自动化测试还可以安排在夜间或周末进行,更好的利用时间。

    一致的,可重复的测试

        自动测试可以在任何时间正确的重复进行。测试可以保持完全一致的进行,这是手工测试所无法达到的。在进行平台兼容性测试时,使用自动测试方法可以保证测试执行的一致性,同样的测试可以执行在不同的硬件配置,不同的操作系统,不同的数据库平台上。

    摘自《自动测试》

  • 软件测试工具分类概述

    2009-01-10 10:17:52

        人类的进步是从会制造工具和使用工具开始的,作为IT行业,亦不例外。针对测试这个近几年来风靡的新兴的“工种”,其测试工具的发展和应用已然进入相对“成熟化”。

        标准化和流程化的系统可以采用现有的工具,而最好的测试工具就是自己编写的工具,针对性强,效率高,又体现了自我价值和能力。只是认可度和回报率很难得到验证。但随着技术的发展,我相信会有更多的测试工具应运而生。

        现在当务之急是如何选择对企业或是项目最有效、有切实可行、针对性强的测试工具,这是通过经验和学习得来的,学而时习之,不亦悦乎哉!

        现就近两年来使用率较高的几类测试工具简介介绍如下:

    【单元测试工具】

        目前的最流行的单元测试工具是xUnit系列框架,常用的根据语言不同分为JUnit(java),CppUnit(C++),DUnit (Delphi),NUnit(.net),PhpUnit(Php )等等。该测试框架的第一个和最杰出的应用就是由Erich Gamma (《设计模式》的作者)和Kent Beck(XP(Extreme Programming)的创始人)提供的开放源代码的JUnit。

        Jtest:Jtest是parasoft公司推出的一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。parasoft同时出品的还有C++ test,是一款C/C++白盒测试工具。

    【功能测试工具】

        Rational Robot:功能测试工具。IBM Rational Robot 是业界最顶尖的功能测试工具,它甚至可以在测试人员学习高级脚本技术之前帮助其进行成功的测试。它集成在测试人员的桌面 IBM Rational TestManager 上,在这里测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。这种测试和管理的双重功能是自动化测试的理想开始。

        SilkTest:是Borland公司所提出软件质量管理解决方案的套件之一。这个工具采用精灵设定与自动化执行测试,无论是程序设计新手或资深的专家都能快速建立功能测试,并分析功能错误。

        JMeter:JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现。

    【性能测试工具】

        首推LoadRrunner,工业标准级负载测试工具。也是现在搞性能测试不可或缺的必备工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。

        WebLoad:webload是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;webload通过模拟真实用户的操作,生成压力负载来测试web的性能。

    【测试管理工具】

        TestDirector。全球测试管理系统。TestDirector 是业界第一个基于Web的测试管理系统,一个用于规范和管理日常测试项目工作的平台。它将管理不同开发人员,测试人员和管理人员之间的沟通调度,项目内容管理和进度追踪。而且,Mercury的测试管理软件TestDirector,是一个集中实施、分布式使用的专业的测试项目管理平台软件。

        SilkCentral Test Manager(SilkPlan Pro):一个完整的测试管理软件,用于测试的计划、文档和各种测试行为的管理。它提供对人工测试和自动测试的基于过程的分析、设计和管理功能,此外,还提供了基于web的自动测试功能。这使得SilkPlan Pro成为Segue Silk测试家族中的重要成员和用于监测的解决方案。在软件开发的过程中,SilkPlan Pro可以使测试过程自动化,节省时间,同时帮助你回答重要的业务应用面临的关键问题。

        QA Director:分布式的测试能力和多平台支持,能够使开发和测试团队跨越多个环境控制测试活动,QADirector允许开发人员、测试人员和QA管理人员共享测试资产,测试过程和测试结果、当前的和历史的信息。从而为客户提供了最完全彻底的、一致的测试。

     

     

    测试管理
    GUI录制回
    压力测试
    白盒测试
    Compuware
    QADirector
    QARun
    TestPartner
    QALoad
    DevPartner
    MI
    TestDirector
    WinRunner
    LoadRunner
    --
    Rational
    TestManager
    Robot
    LoadTest
    Purify
    Purecoverage
    Quantify
    其他
    --
    --
    WAS
    JUnit
    CppUnit

  • C语言初学者必读

    2009-01-07 11:13:37

        C语言,好象是一个很遥远的语言了,对于当下时髦的C++、C#、java来说,它像是个老古董了,不过对于初学者,还是以C语言为根基,一旦掌握了C语言,也许一切语言学起来就都得心应手了。很多人都说,掌握了任何一门语言,其它语言都是触类旁通,这一点都不假。

        C语言的优势在于:它是与硬件结合的最好的语言,它的核心思想就是指针。此外,随着软件行业的快速发展以及3G时代的到来,与硬件结合的开发会越来越多,所以,C语言绝对是优势,占有相当份量的根基。

        10年前我考级的时候,利用了一个暑假的时间自学了那本对于初学者来说最好的教材——《C语言程序设计》谭浩强主编,第二版,清华大学出版社。不过以后没有搞开发,所以现在几乎忘光了。^_^!

        开发工具:Visual C++,虽然这个东西比较大,但是一旦安装好了,用起来其实也挺方便的。

        学习语言的最好方法便是:读程序。理解书中或其它途径获得的例程,然后读懂并消化,随后再找来类似的题目去做,上机运行,起初可能会出现很多小问题,经验就是在不断的编译与修改中积累起来的。善于思考,反复实践,是最有效的学习方法。

        写程序的最高境界,其实就是掌握各种解决问题的手段(数据结构)和解决问题的方法(算法)。

        如何精通一个程序的设计呢?举个例子来说,“你面前有10个人,找出一个叫“张三”的人,你该怎么办?第一种方法:直接对这10个人问:“谁叫张三”。第2种方法:你挨个去问“你是不是张三?”,直到问到的这个人就是张三。第三种方法:你去挨个问一个人“你认不认识张三,指给我看”。不要小看这个问题,你说当然会选第一种方法,没错恭喜你答对了,因为这个方法最快,效率最高,但是在程序设计中找到解决问题的最优方法和你用的手段却是考验一个程序员程序设计水平的重要标志,而且是不容易达到的。刚才这个问题类似于数据结构和算法中的:Map数据结构,穷举查找和折半查找。所以掌握好数据结构和一些常用算法,是登峰造极的必然之路。”

  • 测试基础之软件错误类型分析

    2009-01-06 19:55:22

        通用的软件测试错误划分大致可以分为程序错误和软件错误两大类,现分述如下:

    【程序错误】
    1、程序编写。程序的编写是否有语法错误。这是程序运行的最起码条件,具有语法错误的程序根本无法编译,更谈不上运行了。一般不会出现该类错误。

    2、程序运行。是否有数据溢出或死循环等;

    3、语句描述。程序在编写时候是否出现不适当的语句等,主要是对于变量的赋值和引用而言。

    4、测试数据。对于需求说明书或设计说明书的要求,对典型的有效、无效或任何可能输入的数据,是否能得出相应的预期结果,包括正确的输出结果和非正确的输出结果。是否做了无效数据输入的报错处理等。

    【软件错误】
    1、需求错误。主要是针对需求文档进行分析,是否存在需求不合理或是逻辑错误等。

    *2、功能错误。包括功能是否遗漏、冗余,或是出现意外情况的异常处理等。

    *3、性能错误。包括处理时间、运行速度或其它性能指标。(参照需求规格说明书),不做额外的逾越测试。

    *4、软件结构错误。程序控制流或控制顺序及处理过程是否有误等。

    *5、数据错误。包括数据的定义、存取或操作等错误。

    6、软件实现和编码错误。是否按照代码的相关编写标准进行的。

    7、软件集成错误。接口和数据的吞吐量是否不协调等。

    8、软件系统结构错误。包括引用环境是否正确等。

    9、测试定义与测试执行错误。包括测试方案及实施、测试文档的一些问题,还有测试用例不够充分等。

        其中,最为常见或是容易出现错误的环节则为2、3、4、5四个环节。

    参考《计算机软件测试技术》 郑人杰。

Open Toolbar