故意学习,故意生活,故意活的像个人!

发布新日志

  • 单元测试培训课程大纲(C/C++)51

    2007-03-06 10:29:35

    第一章:软件详细设计评审

    一、 课程设计
    1.详细设计文档的文档格式、规范
      介绍如何根据根据概要设计文档完成详细设计文档,并且,保证详细设计文档可以指导后续的编码和单元测试工作;

    2.伪码写作注意事项
      通过实例讲解详细设计的伪码写作规范,讲解详细设计评审的要点;

    3.实践环节
      教师提供两份典型的详细设计案例给学员作为参考。并且提供一份详细设计,由学员完成详细设计的评审工作,找出详细设计中的缺陷;


    第二章:单元测试理论


    一、课程设计
    1. 测试理论基础
    2. 什么是单元测试
    3. 单元测试的基本方法
    4. 桩和驱动
    5. 单元测试策略
    6. 单元测试过程
    7. 单元测试辅助工具


    第三章:单元测试用例设计


    一、课程设计
    1、代码逻辑覆盖方法介绍

    1) 代码逻辑覆盖方法:
       重点介绍代码逻辑覆盖率的若干种方法,包括代码覆盖、分支覆盖、条件覆盖、分支条件覆盖、路径覆盖几种方法;

    2) 代码逻辑覆盖率统计工具:
      教师结合代码逻辑覆盖率统计工具,可视化的展现代码逻辑覆盖的基本思路和方法;

    3) 代码逻辑覆盖率案例和课堂练习
      教师针对每种覆盖方法提供案例讲解,并且提供课堂练习,由学员分析案例种的代码逻辑覆盖率;


    2、基于基本路径覆盖和循环覆盖的单元测试用例设计

    1) 基本路径覆盖方法介绍:
      介绍在单元测试中使用的设计方法——基本路径覆盖方法和循环覆盖方法;

    2) 基本路径覆盖方法:
      详细阐述基本路径覆盖法的使用方法和原则,教师列举案例,并且为学员提供课堂练习;

    3) 循环覆盖方法:
      详细阐述循环覆盖法中的简单循环、嵌套循环、连锁循环、非结构循环四种方法,并且针对每种方法给出案例解释,并分别提供课堂练习;

    3、黑盒用例设计方法介绍

    1) 边界值方法
       讲解边界值方法设计单元测试用例方法和步骤,教师提供案例讲解

    2) 等价类方法
       讲解等价类设计单元测试用例的方法和设计步骤,教师提供案例讲解,并且提供4种不同类型的等价类划分的课堂练习;
       总结等价类和边界值分析的优点和缺点,以及使用的场合限制;

    3) 正交试验法
      讲解正交表的原理,通过案例讲解正交试验法设计单元测试用例的具体方法;并且提供5种不同类型的正交试验法设计单元测试用例的课堂练习;

    4) 错误猜测法
      通过案例讲解错误猜测法设计单元测试用例的方法;

    4、单元测试用例设计方法的整合使用方法
       整合黑盒测试用例设计方法、基本路径覆盖法、循环覆盖法、以及测试过程中补充单元测试用例的方法,提供整合后的单元测试用例设计的基本思路;

    第四章:软件单元测试相关工具

    一、课程设计
    1、代码静态检查工具pc-lint使用
    2、代码逻辑覆盖率检测工具使用
    3、实践环节
      学员通过课堂练习,掌握代码静态检查工具、覆盖率检查工具的使用方法和技巧;

    第五章:TCL语言

    一、课程设计
    1、Tcl概述
      总体介绍Tcl脚本的特点,以及Tcl脚本在自动化测试领域里面的应用情况。
    2、Tcl基本语法
      Tcl是一门容易上手的语言,本课程通过对比C语言和Tcl脚本语言,讲解Tcl语言的使用方法,以及在使用Tcl语言时候的注意事项。
    3、Tcl实践
      结合教师提供的题目,学员完成课堂实践,通过实践学员掌握Tcl的基本使用方法。为后续的自动化测试框架搭建做好准备工作。

    第六章:单元测试执行-tcl方式

    一、课程设计
    1、Tcl扩展指令
      Tcl的扩展指令是Tcl在自动化测试领域里面应用的关键所在,本小节讲解Tcl脚本如何与C语言混合编程的方法,以及扩展指令的设计方法。
    2、结合Tcl扩展指令搭建自动化测试框架
      讲解如何结合Tcl扩展指令,搭建基于关键字的自动化测试框架搭建方法,以及类似批处理方式的自动化测试框架搭建方法
    3、结合Tcl扩展指令搭建自动化测试框架的课堂实践
      在教师的指导下,学员完成集合Tcl扩展指令搭建自动化测试框架的课堂实践
    4、基于扩展指令的数据驱动自动化测试方法
      在基于关键字驱动的自动化测试框架基础上,讲解如何实现数据驱动方式的自动化测试框架搭建方法。数据驱动的自动化测试框架可以实现测试用例和测试脚本的分离。
    5、基于扩展指令的数据驱动自动化测试方法
      在教师的指导下,学员完成基于数据驱动方式的自动化测试框架搭建活动。

    第七章:单元测试执行-CPPUNIT方式

    一、课程设计
    1、CppUnit概述
    2、CppUnit基本概念
    3、CppUnit单元测试框架
    4、利用CppUnit进行单元测试实践
      学员利用cppunit搭建单元测试环境,并结合代码覆盖率工具完成课堂练习;

     

  • 嵌入式软件的覆盖测试

    2007-03-03 10:48:34

     
    文章出处:51testing博客 作者:51testing博客 发布时间:2005-10-19

    1 概述

    软件测试是很广的概念。从其贯穿软件生命周期全过程来看,测试可分为模块测试、集成测试、系统测试等阶段。测试还可分为静态检查和动态运行测试两大类。在动态运行测试中,又可有基于程序结构的白盒测试(或称为覆盖测试)和基于功能的黑盒测试。测试不仅关注程序的功能,还有性有测试、强度测试等等。

    要达到比较好的测试效果,除了要有周全的测试计划、可控的测试过程、测试人员丰富的经验外,还需要借助一些行之有效的辅助工具,尤其在当今软件规模日益庞大、测试工作量成倍增加的情况下。对应上述的测试分类情况,测试工具可划分为:支持对程序源代码进行静态规则检查和质量评估的静态分析工具、支持对程序单元进行动态覆盖测试的工具、对软件系统的整体运行性能进行测试的工具。另外,还有一些特殊用途的或专用工具,如协议测试仪、内存检测工具等。这些工具都有较为成熟的商业化产品,也可通过自行开发的方式获得。

    本文具体讨论了对一类特殊的系统软件——嵌入式实时操作系统——进行覆盖测试的情况。内容涉及对这类软件特性的研究、测试的难点和特点、对现有测试工具的适应性改造和测试实例说明。

    2 软件覆盖测试

    覆盖是一种白盒测试方法,测试人员必须拥有程序的规格说明和程序清单,以程序的内部结构为基础,来设计测试案例。其基本准则是则测试案例来尽可能多地覆盖程序的内部逻辑结构,发现其中的错误和问题。所以,覆盖测试一般应用在软件测试的早期,即单元测试阶段。

    覆盖的几种方法或策略如表1所列。

    表1 几种典型的覆盖策略

    覆盖策略 定 义
    语句覆盖 在制定测试案例时,使程序中的每个语句都至少执行1次。其缺点是不能发现某些逻辑错误
    判定覆盖 执行足够的测试案例,使得程序中每个判定都获得一次“真”值和“假”值,或者说使每一个分支都至少通过1次
    条件覆盖 执行足够的测试案例,使得判定中的每个条件获得各种可能的结果
    判定/条件覆盖 执行足够的测试案例,使得判定中的每个条件取得各种可能的值,并使得每个判定取得各种可能的结果
    条件组合覆盖 执行足够的测试案例,使得每个判定中的条件的各种组合都至少出现1次。其特点是覆盖较充分,满足条件组合覆盖的测试案例也一定满足判定覆盖、条件覆盖和判定/条件覆盖。

    从以上简要介绍可看出,这几种覆盖策略的严格程序有如下趋势:

    其它一些覆盖策略还包括:修改的条件/判断覆盖(通常简称为MCDC)、路径覆盖、函数覆盖、调用覆盖、线性代码顺序和跳转覆盖、数据流覆盖、目标代码分支覆盖、循环覆盖、关系操作符覆盖等。随着软件规模的增长,实现全面的覆盖所需的测试案例的数目也越来越庞大,因此根据被测软件对象的特点选择适当的覆盖策略是非常重要的;同时,要确定合理测试目标,达到100%的覆盖往往要付出很大的代价,应该同形式化评审等方法结合,以发现更多的软件故障。

    3 覆盖测试工具

    要取得较好的覆盖测试效果,需要借助一定的工具软件。这些工具软件一般具备如下的功能特点,可弥补人为测试的缺陷:

    ①分析软件内部结构,帮助制定覆盖策略及设计测试案例;

    ②与适当的编译器结合,对被测软件实施自动插装,以便在其运行过程中生成覆盖信息并收集这些信息;

    ③根据搜集的覆盖信息计算覆盖率,帮助测试人员找到未被覆盖的软件部位,以改进测试案例提高覆盖率。

    在利用工具进行动态覆盖测试时,需要3个要素:测试用例、插装过的被测代码、搜集覆盖信息并进行分析的工具本身。代码插装由工具自动完成,通过执行测试用例,再由工具搜集覆盖信息并进行分析,就可以看到覆盖率指标了。图1展示实现覆盖测试的基本过程。
    4 嵌入式软件的覆盖测试原理

    嵌入式软件的开发与通用软件很大的不同点在于,需要采用交叉开发的方式:开发工具运行在软硬件配置丰富的宿主机上,而嵌入式应用程序运行在软硬件资源相对缺乏的目标机上。对于这类软件的测试也存在着同样的问题:测试工具运行在宿主机上,测试所需要的信息在目标机上产生,并通过一定的物理/逻辑连接传输到缩主机上,由测试工具接收。因此,嵌入式软件测试的一个重要问题是建立宿主机与目标机之间的物理/逻辑连接,解决数据信息的传输问题。

    嵌入式软件覆盖测试的基本原理如图2所示。

    在目标机方,插装过的被测应用程序将覆盖信息发送到消息队列中,一个专门的任务负责在适当的时候将这些信息发送到宿主机方。缩主机方有专门的模块负责接收覆盖信息。并交给分析工具分析和在线动态显示覆盖率的增长情况。

    支持嵌入式软件覆盖测试的工具应解决如下2方面的关键问题:

    *与嵌入式操作系统的结合覆盖测试工具与嵌入式操作系统的结合体现在3方面。首先,在目标机方,应用任务与专门负责收集/上传覆盖信息的任务是通过消息队列来传递数据的,该消息队列可使用嵌入式操作系统的相应机制实现。其次,这个专门任务也可以被看作一个特殊的应用任务,也必须有嵌入式操作系统的支持,因为任务管理是后者的基本功能之一。最后,目标机与宿主机之间的通信可以采用串口或以太网方式,对串口的驱动或网络协议均可使用嵌入式操作系统的相应程序组件。

    *与其它嵌入式交叉开发工具的关系

    嵌入式应用程序的开发通常采用交叉开发方式,几乎所有的开发工具均要解决3部分的问题:宿主机部分的功能、目标机部分的功能、宿主机与目标机的连接问题。其中,宿主机与目标机的连接是个瓶颈,如果不同的工具要使用同一物理线路实现数据传输,则要解决对该物理线路(或者说硬件端口)的正确共享。比如在图3所示的环境中,宿主机方的各种工具通过统一的接口——目标服务器(target server)实现对通信线路的访问,目标机方的调试代理(debug agent)则是各种信息(调试信息、覆盖信息、时间信息、对象信息等)的收集与传递的核心。

    5 Logiscope在嵌入式操作系统DeltaCORE测试中的应用

    Logiscope是Verilog公司的CASE产品,对软件的编码、测试、维护提供多方面的服务,并且支持嵌入式软件的覆盖测试。

    5.1 测试前的准备

    测试前的准备即为支持对DeltaCORE的测试所做的移植工作。

    目前,Logiscope已经为一些成熟的商用嵌入式操作系统提供了支持,比如pSOS。DeltaCORE是我国自主开发的嵌入式强实时操作系统内核,为了利用Logiscope实现对DeltaCORE的应用程序乃至DeltaCORE本身的测试,我们主要解决了第4节中描述的第1个关键问题。为了支持嵌入式程序的测试,Logiscope提供了运行在目标机方的程序代码(或称为目标机端的支持库),里面包含了:

    *1个用来收集和发送覆盖信息的主循环线程,该线程即是嵌入式应用中的特殊任务;

    *实现具体数据传输的函数,包括对串口或网络的驱动,它们将被上述线程调用;

    *插装函数的实现,这些函数被被测代码调用,向缓冲中放入覆盖消息块;

    *对缓冲信息队列的管理;

    *初始化代码。

    例如,当被测程序运行进入到一条if(……)语句时,整个过程如图4所示。

    为了支持对DeltaCORE的测试,将与这些机制相关的代码进行移植,包括以下几方面:

    *将收集和发送覆盖信息的主循环线程作为在目标机端运行的应用程序中的特殊任务;

    *对串口的驱动采用LambdaTOOL BSP(板级支持包)中的串口驱动代替,对网络的驱动,用DeltaCORE的配套组件DeltaNET中的驱动程序实现;

    *利用DeltaCORE的信箱机制实现消息队列的创建和管理,插装代码向这些信箱发送覆盖消息块;

    *在DetaCORE应用程序的根任务中调用Logiscope的初始化函数,达到创建特殊任务信箱的目的。

    开发DeltaCORE应用程序时,我们使用了其配套开发工具LambdaTOOL。由于所使用的工具版本没有实现目标服务器(target server)的调试方式,因此对物理端口的使用采用的独占方式,即调试工具不能与其它工具共享同一端口。我们可以用网络试上载并启动目标应用程序,而通过串口传送覆盖信息。

    5.2 对DeltaCORE的覆盖测试过程及结果

    对于函数内部,Logiscope支持的覆盖策略有:

    *指令块IBs(Instruction Blocks)

    *判断到判断的路径DDPs(Decision-to-Decision Paths)

    *MCDC(Modified Condition/Decision)

    在项目层次上支持的覆盖策略是:

    *过程到过程路径PPP(Procedure-to-Procedure Path)

    在DeltaCORE的测试中,我们采用了较为常用的覆盖策略——判断到判断的路径,其含义是:DDP是一个指令序列,它的起点是函数或判断(if,while,……)的入口点,它的出口是下一个函数或判断的退出点,之间不能再有判断,比如在图5中包含了5个DDPs:

    测试的具体过程是:

    ①利用插装分析器对DeltaCORE的源代码进行插装,并生成插装信息文件。

    ②将移植后的Logiscope目标机端程序与插装后的内核源代码一同编译链接成库,以替代原来的内核库,供应用程序使用。

    ③编写测试案例,从实现应用的角度使用DeltaCORE的各种系统功能调用,力求遍历内核函数所有的判定分支,并将这些案例编译成可执行程序。

    ④在宿主机端启动覆盖信息收集和分析程序,用LambdaTOOL的调试器下载并启动应用程序。DeltaCORE的覆盖信息被传递到宿主机上,分析程序动态显示覆盖率的增长情况,并将这些信息记录在一个文件中。

    ⑤应用程序执行完毕后,启动Logiscope的事后分析工具,将覆盖信息记录文件与插装信息文件(在源代码插装在生成的附属文件)进行比较,帮助测试人员清晰地了解每个被测函数内部的路径覆盖情况,借此可为测试案例的改进提供帮助。

    ⑥测试人员修改测试案例,并重新进行整个测试过程;各项测试的结果可以叠加,覆盖率将得到增长。

    经过2个多月的时间,我们对DeltaCORE 1.1版本79个文件共计115个函数进行了覆盖测试,覆盖率已经达到了70.55%。编写测试用例89个,主要的60个API函数均已获得较高的覆盖,覆盖率达100%的约占51.3%。

    6 小结

    我们借助Logiscope工具对嵌入式实时操作系统DeltaCORE进行了覆盖测试,达到了较好的覆盖率;发现并处理了一些缺陷,提高了软件的质量和可靠性,但同时也存在不足之处:

    ①测试应好好规划,包括测试顺序的选择、测试案例的设计、测试文档的管理等等。

    ②由于该测试手段依赖于操作系统的有关机制,而被测对象又是操作系统本身,因此与这些机制有关的部分代码未被插装和测试,否则就会出错。比如,操作系统的初始化函数os_init,在这个函数运行完毕之前,操作系统的相应机制尚未建立起来,因此对它进行插装就会造成问题,不能正确地得到覆盖信息。又比如,出于效率方面的考虑,与系统时钟相关的部分函数未被插装,因为在程序运行过程中,时钟是最频繁产生的一种外部事件,如果插装,就会产生大量的覆盖信息,会对信息缓存、传递、收集和处理造成压力。另外,所用的工具不支持对汇编函数的插装和测试。综合上述各种原因,DeltaCORE 1.1的总体覆盖率还显得比较低,需要采用其它的方法来提高它。对于非操作系统组件及应用的测试,由于不存在操作系统本身的问题,因此可望达到较高的覆盖率。

    ③该方法不能用于时间性能测试。因此它属于纯软件的测试方式,大量数据信息的产生、传递与收集对被测程序的干扰大,只能做白盒性的功能结构验证。如果做性能测试,应采用某些软硬结合方式的工具,比如CodeTEST。

    对嵌入式软件产品的测试是多方面的,除覆盖测试外,还有时间性能测试、内存使用测试与分析等,也是我们研究的重要课题。

  • 嵌入式实时系统开发的正确选择

    2007-03-03 10:47:13

     
    文章出处:嵌入式研究网 作者:Robert Oshana 发布时间:2006-01-11

        嵌入式系统通常是一个包含微处理器的特殊计算机系统,是一个较大系统或设备的组成部分,它在很大程度上决定了设备的功能特性。许多具备数字接口的设备如微波设备、录像机(VCR)和汽车等都会用到嵌入式系统。有些嵌入式系统需要使用操作系统,有些则用单个程序实现整个逻辑,但所有嵌入式系统提供的功能都要比通用计算系统更专业些。嵌入式系统功能包括:
    1. 监视环境-从输入传感器读取数据,然后处理数据并显示结果。
    2. 控制环境-产生并向激励器发送命令。
    3. 转换信息-转换并处理收集到的数据。

        虽然通过传感器和激励器完成与外部世界的交互是嵌入式系统的重要特点,但这些嵌入式系统还提供适合它们所在设备的特殊功能。嵌入式系统一般用来执行控制程序、有限状态机和信号处理算法。这些系统还必须检测内部计算环境和周围电磁系统中发生的故障并对此做出响应。

    嵌入式系统特性

        嵌入式系统的设计挑战是使嵌入式系统的独特性能与设备的特殊约束条件相一致。以下是一些嵌入式系统的重要特性:
        1. 特殊应用系统-嵌入式系统不同于通用处理器,它针对特殊应用进行了优化。
        2. 反应性系统-反应性计算的意思是系统(主要是软件部分)根据传感器信息对环境作出响应,并利用激励器控制环境,同时系统速度能与环境速度同步。
        3. 分布式-嵌入式系统的一般特征是多个通信进程在多个通过通信链路链接的CPU或ASIC上运行。
        4. 异类性-不同的嵌入式系统一般具有不同的结构,以便在处理严格设计约束的嵌入式系统时能够提供更好的设计便利性。
        5. 苛刻环境-许多嵌入式系统并不工作在受控的环境中,因此它们必须能够经受过热、振动、冲击、电源波动和其它恶劣的物理环境条件的考验。
        6. 系统安全性和可靠性-由于嵌入式系统复杂度和运算量的不断增长,需要更多地考虑系统安全因素。
        7. 小型化、重量轻-为了达到便携目的,许多嵌入式系统的重量必须设计得很轻。
        8. 成本敏感性-不同的嵌入式系统对成本的敏感性有很大的不同。

    实时系统的特性

        实时系统要求在外部环境指定的时间间隔内对来自环境的激励信号作出响应(包括物理时间的过渡)。从输入时间到输出时间的延迟必须足够小,以满足可以接受的时间值。通常实时系统需要对环境作出连续及时的响应。

        计算的正确性不仅依赖于结果,而且取决于输出发生的时间。一个实时系统必须满足有限响应时间约束条件,否则会产生严重的后果。如果后果是性能的劣化而不是故障,那么这种系统可以看作是一个软实时系统。如果后果是系统发生故障,那么这种系统就是一种硬实时系统。

        实时系统有反应式和嵌入式两种类型。反应式实时系统会与环境发生连续的互作用,而嵌入式实时系统主要用于控制大型系统中安装的特殊硬件。

    嵌入式系统开发生命周期

        许多系统设计工程师都会经历硬件/软件协同设计的过程(图1),此过程中硬件与软件将同时进行开发。理解硬件与软件功能相互之间的关系及界限有助于确保设计要求得到完整正确的理解和实现。

        早在设计要求的定义与分析阶段,系统开发人员就必须与设计工程师协同分配硬件或/和软件方面的要求。这种分配的依据是早期系统仿真、原型设计和行为建模结果、工程师自己的经验以及上文提及的各种因素权衡结果(图2)。一旦分配结束,就可以立即着手具体的设计和实现。实时系统开发中软硬件的并行设计会使用到各种分析技术,包括:
        1. 硬件与软件仿真;
        2. 硬件/软件协同仿真;
        3. 可调度的建模技术,如速率恒定分析;
        4. 原型设计和渐进式开发。

        可以在各种抽象层次使用的仿真技术主要用于开展早期的性能评估。低层仿真可以用来为总线宽度和数据流程建模,这对性能评估是非常有用的。高层仿真可以满足功能的交互,并促成硬件/软件权衡研究及有效性设计。利用仿真可以将一个复杂的系统向下抽象成基础组件和行为。仿真还助于解决功能性问题(数据与算法)、行为(进程排序)或性能问题(资源利用、吞吐量和时序)。

    理解设计要求

        在作执行任何类型的处理器评估时,首先要详细理解用户的功能和非功能性要求。功能性要求通常比较容易获得,而非功能性要求较难定量测量。但对于实时系统来说,定义响应时间这样的要求是非常重要的。实时要求可以有以下几种:
        1. 激励-激励(S-S):到系统去的两个激励之间的实时关系;
        2. 激励-响应(S-R):一个激励与来自系统的一个后序响应之间的实时关系;
        3. 响应-激励(R-S):一个响应与到系统去的一个后序激励之间的实时关系;
        4. 响应-响应(R-R):来自系统的两个响应之间的实时关系。

        S-R和R-R关系定义了对指定系统的时序要求。这种情况下所实现的功能必须足够快(或足够慢)才能满足时序要求。S-S和R-S约束暗示系统必须能够从环境(可能是一个用户或另外一个系统)中检测出特定时序约束的破坏。这些约束与功能的快慢没有关系,相反它们能够检测出某些遭到破坏的时序约束并采取必要的措施。

        因此要从最初系统要求设计时就很好地理解这一点,因为S-R和R-R约束可以引导设计工程师进行代码优化,而S-S和R-S约束需要用额外的软件来检测和响应时序冲突。

    处理器选择

        嵌入式实时系统比较适合用于系统优化。由于这些系统主要用来解决范围相对较窄的问题,因此硬件和软件能够得到最佳优化,并很好地应用于单一设备。这样做的目的是要在软硬件最佳折衷状态下开展系统设计。影响这一阶段设计的主要因素是处理器的选择、软硬件的分割和总体系统集成。

        在为嵌入式实时系统选择处理器时需要考虑以下几个方面:

        1. 性能:处理器必须有足够的性能执行任务和支持产品生命周期。

        2. 实现:根据具体应用情况,处理器可能需要被高度集成。在DSP应用中可以有好几种选择,专用集成电路(ASIC)就是其中的一种。这些器件可以被用作DSP协处理器,但对于许多通用信号处理来说显得不够灵活。另外可以选择精简指令集计算机(RISC)处理器。这些处理器的时钟速度特别快,但可扩展性不是很强,而且会发生其它实时(可预测性)问题。现场可编程阵列(FPGA)是一种快速器件,能够快速高效地完成某些DSP功能,但与DSP相比开发难度比较大,因为在DSP中一个简单的程序就能完成相同的功能。如果是主信号处理应用,则最好采用性能强大功耗也较大的通用处理器。如果需要快速升级信号处理应用,采用DSP等可编程器件比定制的硬件方案要更好些。

        3. 工具支持:支持软件创建、调试、系统集成、代码调整和优化工具对整体项目成功与否非常关键。

        4. 操作系统支持:嵌入式系统应用需要使用有帮助的抽象来减少其复杂性。针对处理器系列产品作过优化的商用操作系统(OS)能够缩短设备开发周期和上市时间。

        5. 过去的经验:拥有处理器或处理器系列产品的开发经验可以减少可观的学习新处理器、工具和技术的时间。

        6. 仿真支持:循环精确仿真对某些类型的应用来说非常重要,特别是数字信号处理应用中许多功能正确性验证都是采用仿真技术完成的。嵌入式系统的软硬件协同设计模型也促使处理器仿真器成为开发流程中一个非常有用的工具。

        7. 应用支持:应用支持有多种方式,从通过热线或网站取得的应用专家支持,到预打包的软件和应用框架,甚至完好的测试平台。一些DSP处理器能够提供外围器件的驱动器、板级支持包和其它“启动帮助组件”。有了这些软件组件后,应用开发师就无需再编写器件驱动器等“无附加值”的软件,相反,他们可以把精力放在具有附加值的功能开发上,使他们的产品能独树一帜。

        8. 成本:嵌入式应用对成本特别敏感,而产品成本的稍许差别都可能导致市场的失败。

        9. 功耗:市场上有许多依靠电池工作的便携嵌入式实时系统,此时电池寿命将成为系统的重要参数。这种情况下应该考虑使用针对便携式应用优化的低功耗器件。

        10. 传统代码:如果选中的处理器需要设计人员编写与现存代码的接口,将会导致整个设计流程的严重滞后。因此需要选择一款代码兼容的器件来避免或减少这一步骤造成的影响。

        11. 算法复杂性:某些处理器能够非常高效地处理某类算法,因此最好选择能够与应用最佳匹配的处理器。例如,具有许多控制代码的有限状态机应用应该映射为类似ARM处理器的RISC器件。编码、解码和回波抵消等信号处理应用应该映射为数字信号处理器,或具有信号处理加速器的某种器件。

        12. 上市时间:项目的完成时间会加快处理器的选择过程,这一过程与先前讲述的几个关键事项密切相关,如OS的可用性、其它软件组件以及便携性问题。

    设计还是购买?

        是自己设计还是购买成品呢?如果有可能不重新设计,价格也比较合理的话,购买要比自己开发更有利。由于嵌入式系统预算的缩减、实时操作系统(RTOS)和TCP/IP堆栈等商用技术的改进、嵌入式系统要求的扩展,采用商业性现成(COTS)技术正变得越来越普遍。采用COTS技术能够缩短开发周期中编码、调试、单元测试和代码检查阶段的时间。

        然而,作出购买而非设计的决定会改变一个组织的基础开发流程。一个组织希望实现的新业务有:供应商调研和评估、产品评估以及实时的供应商交流与关系建立。产品开发的其它活动不会取消,但会作出一些改变。这些变化包括更关注如何将系统硬件与软件更好地组合在一起,而不再把重点放在模块自己内部的运作上。另外必须更侧重于兼容性、可配置性和可集成性等结构上的问题。

        必须很好的理解和高效地管理由于决定采用“购买”而非“设计创建”方式所导致的结果。首先,自然是对供应商提出产品要求、产品可靠性、计划和产品文档等依赖请求。这种情况下产品要求中的灵活性会打些折扣。购买商用产品意味着接受现有的产品要求,但这种要求也许不能完美地匹配自身产品的要求,这就需要设计人员把这种缺点与COTS技术提供的成本与上市时间优势作一个理智的权衡。

        因此重要的是最终用户与技术人员必须参与COTS供应商的选择,考虑的重点要放在业务需求上而非技术本身。性价比分析所要考虑的因素应包括易学性、易用性、供应商名声和长期稳定性、许可方式和培训。所有与性能有关的声明必须尽可能采用内部或外部基准或演示来到得有效性认证。为了避免可能出现的偏差,评估标准应该在收到供应商建议前就制定好。选择供应商的主要工作包括研究和理解技术标准和相当的文件、采用类似建议请求(RFP)的标准模式征求供应商的建议、对供应商建议进行评估和排序、选择供应商并签署合同。

        除了评估技术外,还应对供应商本身进行评审。要充分了解供应商开业时间的长短、供应商的背景和名声、供应商的其它用户对它的评价和意见、供应商人力资源的投入和对你的计划或项目的支持情况,以及供应商对你业务和要求的理解程度,甚至对未来项目的承诺。以前软件团队认为软件开发方案遵循类似于创建架构的特定模式。提供符合一般模式的抽象方法能够使软件团队定制符合他们特殊要求的方案,同时遵循被前人证明是高效和正确的模式。

        嵌入式系统供应商已经认识到需要通过提供软件组件和类似于设计模式的框架来加快软件开发进程。在DSP领域,供应商向DSP设计工程师提供包括参考框架(RF)在内的上百个以DSP为核心的软件组件用于产品和系统开发。设计完好的参考框架能够在设备开发的早期阶段让设计人员快速入门。RF内含方便易用并且适合多种应用的源代码。由此可以取消许多早期的低层设计决策,使开发人员能有更多的时间用在真正显示产品特色的代码开发上。设计人员可以选择能够最大程度满足他们系统需要的专业RF,然后集成适配的算法(可以是其它供应商出售的DSP COTS算法,或供应商自己的算法)生成适合各种终端设备的特殊应用,如宽带、语音、视频图像、生物测量和无线设施。这些RF提供百分之百的C语言源码,并且没有版税要求。RF源代码可以从www.ti.com/downloadrfnow网站下载。

    软件性能工程

        许多嵌入式实时系统必须满足一系列性能目标。一般来讲,性能是一个软件系统或组件对时间要求满足程度的一种指示。这里的时间指标可以用响应时间和吞吐量来衡量,该时间值是指响应某种要求所需的时间,而吞吐量用以指示系统在特定时间间隔内能够处理的请求数量。可扩展性是嵌入式实时系统的另外一个重要指标,可以用它来衡量系统要求提高时系统能够继续满足响应时间或吞吐量要求的能力。

        如果在整个开发生命周期内得不到正确的性能管理,那么即使选择了正确的处理器和软件也是徒劳的。性能故障的后果是非常严重的,它可能损伤与客户的关系,造成收入下降,甚至导致整个项目失败。因此在整个生命周期内需要随时关注性能问题。性能管理可以被动或主动完成。被动方式需要采用一个较大的处理器解决性能问题,它只在系统完成构架、设计和实现后处理性能问题,在解决问题前一直处于等待状态,直到实际需要测量的事件发生。主动方式是指整个生命周期内一直在跟踪和交流性能问题,同时开发用以识别性能劣化的进程,并在性能处理中培养团队成员。

    本文小结

        显然开发嵌入式实时系统是一个相当复杂的过程,本文旨在启发设计人员在分析初始要求时如何权衡硬件与软件之间的关系,要时刻在系统灵活性、速度、成本、计划和可用工具之间作出权衡,并充分考虑各个供应商提供长期可靠支持的可能性。

  • 嵌入式软件的基本测试方法

    2007-03-03 10:32:49



    作者:佚名      出处:互连网
    摘要:嵌入式软件的基本测试方法
    随着制造行业的再一次崛起,嵌入式软件目前在软件行业中越来越多,2004年软件行业最火爆的三个项目是:嵌入式开发,软件培训以及软件外包。由于嵌入式软件与其他产品息息相关,这给嵌入式软件的测试工作带来了极大的困难,软件的测试工作不能够等程序烧到或者固化到芯片中才开始进行测试,这就太晚了,本文结合自己的一些经验提出自己的看法,希望大家一起讨论。
    搞好开发前的原型设计
    原型开发目前在开放流程中受到了更多的重视,同样嵌入式软件也是非常需要的。比如说一个录音机版面的设计,可以定义好版面上面的按键以及每个按键的功能。然后画出状态转化图,写清楚每个按键何时可以触发,触发后由哪个状态转入别的其他状态。原型设计好了,组织专家,工程师进行评审,尽可能多的找出原型中不合理需要改进的地方;改进以后,有必要可以进行再一次的评审工作。每一次评审工作需要记录评审建议是否需要解决?如何解决以及实际解决情况。

    进行设计和开发工作

    设计和开发工作需要设立里程碑。每个里程碑结束前都需要进行评审工作。由于嵌入式软件的运行环境不同,受到很大的限制,所以在进行开发之前需要进行编程规范工作,编码的时候需要严格按照编码要求进行工作,每一个条款都需要认真执行和审查。现在业界提供许多关于嵌入式软件开发的标准,大家可以通过网站搜索,最好能够购买业界一些比较著名的标准。目前市场上也提供许多关于代码检验的工具。为什么一直提出代码编码规范?这是因为嵌入式软件的质量与代码规范是十分重要的。举个例子,著名的阿里亚火箭失事,专家进行详细的调查工作,最后发现问题出在代码上。代码是符合标准C语言的,但是在运行过程中由于程序员将一个长整形变量赋给了一个短整形变量,造成内存溢出,这是导致火箭失事的关键所在。

    int8 a;
    int32 b;

    a=b;


    代码测试

    当程序开发完毕,需要进行测试工作,但是在程序烧入或固化芯片之前如何进行测试呢?这里介绍一种方法:比如程序时使用C语言进行开发的,请将所有的操作都封入在函数中,函数的定义都在相应的头文件中定义(.h),然后设计测试用例,书写测试代码,测试代码包含相应头文件,可以对函数进行检测。测试案例往往分为两类:一种是功能测试,主要测试函数的功能;另外一种是错误参数测试,主要检查程序对进行错误参数进行检验。

    功能测试

    这种测试的运行往往需要通过仿真器辅助完成,比如类似录音机软件程序,分别测试播放,加大(减小)音量,停止,暂停(取消暂停),快速前进,快速后退,录音对应的功能是否能够正常运行。

    错误测试

    主要测试函数在调用参数无效的时候,系统是否会按照规定返回正确的错误代码。比如
    function test(int Tid)
    测试的时候给出一个错误的序列号(Tid),看程序是否返回正确的错误代码。
    对于函数function test1(int t)需要进行特出的处理
    t 定义为1-100
    我们可以按照边界值法和等价分类法进行测试
    上边界:-1,0,1
    下边界:99,100,101
    中边界:50
    所以测试用例集合为(-1,0,1,50,99,100,101),其中-1,101为错误测试用例,其他为正确测试用例

    功能组合测试

    在进行完功能测试后,我们可以进行功能组和测试,还是拿录音机程序做个例子。我们可以定义将音量增加到10,快速前进,检查音量,看是否还是为10;播放,暂停,试图调整音量,检查调整音量的功能是否可以被成功执行。

    烧入固化测试

    当以上测试都通过后可以将程序烧入芯片或者固化,进行最后在实际环境中进行测试工作。



  • 嵌入式系统定义和发展历史

    2007-03-03 10:18:35

     
    文章出处:转载 作者:不详 发布时间:2005-10-21
    嵌入式系统定义
           嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。
      嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。
      嵌入式系统的核心是嵌入式微处理器。嵌入式微处理器一般就具备以下4个特点:
      1)对实时多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时内核心的执行时间减少到最低限度。
      2)具有功能很强的存储区保护功能。这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断。
      3)可扩展的处理器结构,以能最迅速地开展出满足应的最高性能的嵌入式微处理器。
      4)嵌入式微处理器必须功耗很低,尤其是用于便携式的无线及移动的计算和通信设备中靠电池供电的嵌入式系统更是如此,如需要功耗只有mW甚至μW级。
      嵌入式计算机系统同通用型计算机系统相比具有以下特点: 
      1.嵌入式系统通常是面向特定应用的嵌入式CPU与通用型的最大不同就是嵌入式CPU大多工作在为特定用户群设计的系统中,它通常都具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,移动能力大大增强,跟网络的耦合也越来越紧密。
      2.嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
      3.嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力
      4.嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。
      5.为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。
      6.嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发。
    嵌入式系统发展历史
           目前,在嵌入式系统应用领域中,不少人对什么是嵌入式系统不甚了解。有些人搞了十多年的单片机应用,不知道单片机就是一个最典型的嵌入式系统;也有些人在解释什么是嵌入式系统时,不是从定义出发,而是列举了嵌入式系统的一些特点,往往不知所云。因此,有必要从现代计算的发展历史,了解嵌入式系统的由来,从学科建设的角度来探讨嵌入式系统较为准确的定义。
      1 现代计算机的技术发展史
      (1)始于微型机时代的嵌入式应用
      电子数字计算机诞生于1946年,在其后漫长的历史进程中,计算机始终是供养在特殊的机房中,实现数值计算的大型昂贵设备。直到20世纪70年代,微处理器的出现,计算机才出现了历史性的变化。以微处理器为核心的微型计算机以其小型、价廉、高可靠性特点,迅速走出机房;基于高速数值解算能力的微型机,表现出的智能化水平引起了控制专业人士的兴趣,要求将微型机嵌入到一个对象体系中,实现对象体系的智能化控制。例如,将微型计算机经电气加固、机械加固,并配置各种外围接口电路,安装到大型舰船中构成自动驾驶仪或轮机状态监测系统。这样一来,计算机便失去了原来的形态与通用的计算机功能。为了区别于原有的通用计算机系统,把嵌入到对象体系中,实现对象体系智能化控制的计算机,称作嵌入式计算机系统。因此,嵌入式系统诞生于微型机时代,嵌入式系统的嵌入性本质是将一个计算机嵌入到一个对象体系中去,这些是理解嵌入式系统的基本出发点。
      (2)现代计算机技术的两大分支
      由于嵌入式计算机系统要嵌入到对象体系中,实现的是对象的智能化控制,因此,它有着与通用计算机系统完全不同的技术要求与技术发展方向。
      通用计算机系统的技术要求是高速、海量的数值计算;技术发展方向是总线速度的无限提升,存储容量的无限扩大。 而嵌入式计算机系统的技术要求则是对象的智能化控制能力;技术发展方向是与对象系统密切相关的嵌入性能、控制能力与控制的可靠性。
      早期,人们勉为其难地将通用计算机系统进行改装,在大型设备中实现嵌入式应用。然而,对于众多的对象系统(如家用电器、仪器仪表、工控单元……),无法嵌入通用计算机系统,况且嵌入式系统与通用计算机系统的技术发展方向完全不同,因此,必须独立地发展通用计算机系统与嵌入式计算机系统,这就形成了现代计算机技术发展的两大分支。
      如果说微型机的出现,使计算机进入到现代计算机发展阶段,那么嵌入式计算机系统的诞生,则标志了计算机进入了通用计算机系统与嵌入式计算机系统两大分支并行发展时代,从而导致20世纪末,计算机的高速发展时期。
      (3) 两大分支发展的里程碑事件
      通用计算机系统与嵌入式计算机系统的专业化分工发展,导致20世纪末、21世纪初,计算机技术的飞速发展。计算机专业领域集中精力发展通用计算机系统的软、硬件技术,不必兼顾嵌入式应用要求,通用微处理器迅速从286、386、486到奔腾系列;操作系统则迅速扩张计算机基于高速海量的数据文件处理能力,使通用计算机系统进入到尽善尽美阶段。
      嵌入式计算机系统则走上了一条完全不同的道路,这条独立发展的道路就是单芯片化道路。它动员了原有的传统电子系统领域的厂家与专业人士,接过起源于计算机领域的嵌入式系统,承担起发展与普及嵌入式系统的历史任务,迅速地将传统的电子系统发展到智能化的现代电子系统时代。
      因此,现代计算机技术发展的两大分支的里程碑意义在于:它不仅形成了计算机发展的专业化分工,而且将发展计算机技术的任务扩展到传统的电子系统领域,使计算机成为进入人类社会全面智能化时代的有力工具。
      2 嵌入式系统的定义与特点
      如果我们了解了嵌入式(计算机)系统的由来与发展,对嵌入式系统就不会产生过多的误解,而能历史地、本质地、普遍适用地定义嵌入式系统。
      (1) 嵌入式系统的定义
      按照历史性、本质性、普遍性要求,嵌入式系统应定义为:“嵌入到对象体系中的专用计算机系统”。“嵌入性”、“专用性”与“计算机系统”是嵌入式系统的三个基本要素。对象系统则是指嵌入式系统所嵌入的宿主系统。
      (2) 嵌入式系统的特点
      嵌入式系统的特点与定义不同,它是由定义中的三个基本要素衍生出来的。不同的嵌入式系统其特点会有所差异。
      与“嵌入性”的相关特点:由于是嵌入到对象系统中,必须满足对象系统的环境要求,如物理环境(小型)、电气/气氛环境(可靠)、成本(价廉)等要求。
      与“专用性”的相关特点:软、硬件的裁剪性;满足对象要求的最小软、硬件配置等。
      与“计算机系统”的相关特点:嵌入式系统必须是能满足对象系统控制要求的计算机系统。与上两个特点相呼应,这样的计算机必须配置有与对象系统相适应的接口电路。
      另外,在理解嵌入式系统定义时,不要与嵌入式设备相混淆。嵌入式设备是指内部有嵌入式系统的产品、设备,例如,内含单片机的家用电器、仪器仪表、工控单元、机器人、手机、PDA等。
      (3)嵌入式系统的种类与发展
      按照上述嵌入式系统的定义,只要满足定义中三要素的计算机系统,都可称为嵌入式系统。嵌入式系统按形态可分为设备级(工控机)、板级(单板、模块)、芯片级(MCU、SoC)。
      有些人把嵌入式处理器当作嵌入式系统,但由于嵌入式系统是一个嵌入式计算机系统,因此,只有将嵌入式处理器构成一个计算机系统,并作为嵌入式应用时,这样的计算机系统才可称作嵌入式系统。
      嵌入式系统与对象系统密切相关,其主要技术发展方向是满足嵌入式应用要求,不断扩展对象系统要求的外围电路(如ADC、DAC、PWM、日历时钟、电源监测、程序运行监测电路等),形成满足对象系统要求的应用系统。因此,嵌入式系统作为一个专用计算机系统,要不断向计算机应用系统发展。因此,可以把定义中的专用计算机系统引伸成,满足对象系统要求的计算机应用系统。
      3 嵌入式系统的独立发展道路
      (1)单片机开创了嵌入式系统独立发展道路
      嵌入式系统虽然起源于微型计算机时代,然而,微型计算机的体积、价位、可靠性都无法满足广大对象系统的嵌入式应用要求,因此,嵌入式系统必须走独立发展道路。这条道路就是芯片化道路。将计算机做在一个芯片上,从而开创了嵌入式系统独立发展的单片机时代。
      在探索单片机的发展道路时,有过两种模式,即“Σ模式”与“创新模式”。“Σ模式”本质上是通用计算机直接芯片化的模式,它将通用计算机系统中的基本单元进行裁剪后,集成在一个芯片上,构成单片微型计算机;“创新模式”则完全按嵌入式应用要求设计全新的,满足嵌入式应用要求的体系结构、微处理器、指令系统、总线方式、管理模式等。Intel公司的MCS-48、MCS-51就是按照创新模式发展起来的单片形态的嵌入式系统(单片微型计算机)。MCS-51是在MCS-48探索基础上,进行全面完善的嵌入式系统。历史证明,“创新模式”是嵌入式系统独立发展的正确道路,MCS-51的体系结构也因此成为单片嵌入式系统的典型结构体系。
      (2)单片机的技术发展史
      单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。
      SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。在开创嵌入式系统独立发展道路上,Intel公司功不可没。
      MCU即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。在发展MCU方面,最著名的厂家当数Philips公司。
      Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。
      单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。
      4 嵌入式系统的两种应用模式
      嵌入式系统的嵌入式应用特点,决定了它的多学科交叉特点。作为计算机的内含,要求计算机领域人员介入其体系结构、软件技术、工程应用方面的研究。然而,了解对象系统的控制要求,实现系统控制模式必须具备对象领域的专业知识。因此,从嵌入式系统发展的历史过程,以及嵌入式应用的多样性中,可以了解到客观上形成的两种应用模式。
      (1) 客观存在的两种应用模式
      嵌入式计算机系统起源于微型机时代,但很快就进入到独立发展的单片机时代。在单片机时代,嵌入式系统以器件形态迅速进入到传统电子技术领域中,以电子技术应用工程师为主体,实现传统电子系统的智能化,而计算机专业队伍并没有真正进入单片机应用领域。因此,电子技术应用工程师以自己习惯性的电子技术应用模式,从事单片机的应用开发。这种应用模式最重要的特点是:软、硬件的底层性和随意性;对象系统专业技术的密切相关性;缺少计算机工程设计方法。
      虽然在单片机时代,计算机专业淡出了嵌入式系统领域,但随着后PC时代的到来,网络、通信技术得以发展;同时,嵌入式系统软、硬件技术有了很大的提升,为计算机专业人士介入嵌入式系统应用开辟了广阔天地。计算机专业人士的介入,形成的计算机应用模式带有明显的计算机的工程应用特点,即基于嵌入式系统软、硬件平台,以网络、通信为主的非嵌入式底层应用。
      (2)两种应用模式的并存与互补
      由于嵌入式系统最大、最广、最底层的应用是传统电子技术领域的智能化改造,因此,以通晓对象专业的电子技术队伍为主,用最少的嵌入式系统软、硬件开销,以8位机为主,带有浓重的电子系统设计色彩的电子系统应用模式会长期存在下去。另外,计算机专业人士会愈来愈多地介入嵌入式系统应用,但囿于对象专业知识的隔阂,其应用领域会集中在网络、通信、多媒体、商务电子等方面,不可能替代原来电子工程师在控制、仪器仪表、机械电子等方面的嵌入式应用。因此,客观存在的两种应用模式会长期并存下去,在不同的领域中相互补充。电子系统设计模式应从计算机应用设计模式中,学习计算机工程方法和嵌入式系统软件技术;计算机应用设计模式应从电子系统设计模式中,了解嵌入式系统应用的电路系统特性、基本的外围电路设计方法和对象系统的基本要求等。
      (3) 嵌入式系统应用的高低端
      由于嵌入式系统有过很长的一段单片机的独立发展道路,大多是基于8位单片机,实现最底层的嵌入式系统应用,带有明显的电子系统设计模式特点。大多数从事单片机应用开发人员,都是对象系统领域中的电子系统工程师,加之单片机的出现,立即脱离了计算机专业领域,以“智能化”器件身份进入电子系统领域,没有带入“嵌入式系统”概念。因此,不少从事单片机应用的人,不了解单片机与嵌入式系统的关系,在谈到“嵌入式系统”领域时,往往理解成计算机专业领域的,基于32位嵌入式处理器,从事网络、通信、多媒体等的应用。这样,“单片机”与“嵌入式系统”形成了嵌入式系统中常见的两个独立的名词。但由于“单片机”是典型的、独立发展起来的嵌入式系统,从学科建设的角度出发,应该把它统一成“嵌入式系统”。考虑到原来单片机的电子系统底层应用特点,可以把嵌入式系统应用分成高端与低端,把原来的单片机应用理解成嵌入式系统的低端应用,含义为它的底层性以及与对象系统的紧耦合。
  • 中软的面试题

    2007-02-10 12:32:41

    .    简答题.
    1.    
    避免死锁的方法有哪些?
    2.    
    Sybase数据库中注册用户与数据库用户有什么区别?
    3.    
    MS SQL_Server 数据库中通过什么约束保证数据库的实体完整性
    4.    
    内存有哪几种存储组织结构.请分别加以说明
    5.    JAVA
    中的Wait() notify()方法使用时应注意些什么?
    6.    
    用户输入一个整数.系统判断,并输出是负数还是非负数,请设计测试用例.
    7.    
    操作系统中的同步和互诉解决了什么问题
    8.    UNIX
    init
    .    编写类String 的构造函数,析构函数和赋值函数
    已知类String 的原型为
    class string
    {
    public:
    string(const char *str=null);//
    普通构造函数
    string(const string &other);//
    拷贝构造函数
    ---string(void);
    string &operate=(const string &other);//
    赋值函数
    private:
    char * m-data;//
    用于保存字符串
    };
    请编写string 的上述4个函数
    .    有关内存的思考题
    1.    void getmemory(char *p)
    { p=(char*)mallol(100);
    }
    void test(void)
    {
    char * str =null;
    getmemory(str);
    strcpy(str,”hello,world”);
    printf(str);
    }
    请问运行Test函数会有什么样的结果
    2.    char*getmemory(void)
    { char p[]=”hello world”;
    return p;
    }
    void test(void)
    {
    char *str=null;
    str=Getmemory();
    printf(str);
    }
    请问运行Test 函数会有什么样的结果.

     

  • 一家通讯公司的面试题目

    2007-02-10 12:32:41



    面试题目

    1.why do you want to be a tester?
    2.
    测试的分类和过程。
    3.
    如果你是一个测试组长,你将怎么做计划,去测试一个ICEBOX。列出KEY

    POINTS

    4.
    名词解释3GPDAHTML
    5.
    什么 是好的BUG?
    6.
    WINCE有了解吗?


    6
    Windows CE作业系统是Windows家族中的成员,专门设计给掌上型电脑(HPCs)所使用的电脑环境。这样的作业系统可使完整的可携式技术与现有的Windows桌面技术整合工作。
    Windows CE
    的主要特色包括:

    增进工作的产能和效率通讯录,日历行程,工作管理,时钟,计算机,Windows档案总管可携式应用软体--Microsoft Pocket ExcelMicrosoft Pocket Word控制台--管理控制Windows CE与办公室PC的连结--在您的桌上型与可携式的办公室间转移资料与他人通讯--可透过电子邮件及红外线无线电通讯,与其他手携式设备交换资料利用可携式Internet Explorer遨游网络想要并使你的HPC达到最大的功用。

    Windows CE
    的使用从随时随地的使用电脑及口袋中藏著PC,到智慧型家电用品及丰富的多媒体家庭剧院,Microsoft Windows CE为工作、家庭及其间的任何一点开启了动态的、崭新的开发远景。这个模组化、可自订的作业系统将Windows平台延伸到桌面之外,到达更小、更机动性、更特别的装置之上,然而它的Windows血统则确保了它的相容性,并且支援了更广泛的开发基础。「MICROSOFT WINDOWS CE」揭露了革命性的系统架构,可以让身为开发者或科技领导者的您,扩展消费者及工业电子上的新市场

  • 一个外包测试公司的笔试题

    2007-02-10 11:56:36

    这个题目起码要答2个小时,我觉得有点像是考“政治”,不过
    要不不看书,有的题目还真是不好答,准备面试的同学多下点功夫哦!

    1
    试述软件的概念和特点?软件复用的含义?构件包括哪些?
    2
    瀑布模型和螺旋模型的主要区别是什末
    3
    软件生存周期及其模型是什末
    4
    什末是软件测试 软件测试的目的与原则
    5
    净室软件工程的策略是什末
    6
    软件配置管理的作用 软件配置包括什末
    7
    简述需求分析的过程和意义
    8
    什末是数据的对立性 有几个层次
    9
    网状、层次数据模型与关系数据模型的最大的区别是什末
    10dbms
    读取一条记录时发生哪些事件
    11
    什末是软件质量 软件包是什末
    12
    软件产品质量特性是什末
    13
    什末是软件质量保证 其主要任务是什末
    14
    软件质量保证体系是什末 国家标准中与质量保证管理相关的几个标准是什末 他们的编号和全称是什末
    15
    软件测试的原则与策略是什末
    16
    什末是测试用例 什末是测试脚本 两者的关系是什末
    17
    简述什末是静态测试、动态测试、黑盒测试、白盒测试、a测试 b测试
    18
    测试问题的严重性分为几级 如何区分
    19
    测试用例设计的原则是什末 目前主要的测试用例设计方法是什末
    20
    结构化系统测试和功能性系统测试分别采用了哪些方法和技术
    21
    软件测试分为几个阶段 各阶段的测试策略和要求是什末
    22
    面向对象的测试用例设计有几种方法 如何实现
    23
    在软件测试各个阶段通常完成什末工作 各个阶段的结果文件是什末 包括什末内容
    24
    软件的安全性应从哪几个方面去测试

     

  • 一道数据库的笔试题

    2007-02-10 11:55:29






    有两个表

    表一 AAA
    种类mc     库存总量s1
    A     997    
    B     1234

    表二       BBB
    种类mc     出库数量s1
    A     105
    A     213
    B     116
    B     211
    B     303
    用一条SQL语句求出A,B各剩下多少?

     

    select distinct AA.T kind ,AA.S-(select sum(BB.S) sumnum from BB group by T having AA.T=BB.T) stock from AA,BB where AA.T=BB.T

    结果:
    kind stock
    A     679
    B     604

     

     

    select distinct aa.king zhonglei,aa.zl-czl.sum kucun from aa,bb,(select king,sum(czl) sum from bb group by king) czl where aa.king=bb.king and aa.king=czl.king;
    结果:
      zhonglei kucun
      a           679
      b           604


    select distinct aaa.mc zhonglei,aaa.sl-kczl.kcsl kucun from aaa,(select mc,sum(sl) kcsl from bbb group by mc) kczl where aaa.mc=kczl.mc;

  • 一道测试notepad笔试题

    2007-02-10 11:53:18


    一道笔试题

    测试notepad的文件保存功能,就是file/save弹出对话框的功能,从那几个方面写测试用例,

  • 亚控科技笔试题

    2007-02-10 11:51:43

    1。接触过哪些组态软件 掌握程序如何
    2.
    最熟的组态软件 简述其功能或特点
    3.
    使用过哪些数据库 掌握程度如何
    4.
    简述ODBC的设置过程
    5.
    局域网 对等网的含义及一般配置连接方法
    6.
    两台计算机连接的方法有哪些
    7.
    接触过的工控硬件设备有哪些
    8.
    介绍plc或板卡的大致功能和其在行业中的一般应用场合
    9.
    对测试工作的认识
    10.
    你认为软件测试最关键的是哪个阶段 使用过的测试方法有哪些
    11.
    开发部提交给你一个系统进行测试 你如何展开工作
    12.
    谈谈你对cmmis9000的认识
    13.
    写测试用例
     
    需求描述: 1.报表可设置的表格最大行列数64*128
                2.
    单元格中可以进行字体设置
    还有不计分的个人价值观

  • 喜安科面试

    2007-02-10 11:50:44

    1、写出下列端口号:ftpdnshttppop3smtptelnetwindows终端服务
    2
    、写出下面的中文或英文:VLANWLANWANVPN
    3
    、写出下列Linux命令:killmvrmdirlsdf -a
    4
    、抽象类和接口的区别
    5
    、编程:链表反置
    6
    、在防火墙中有哪些有效的设置方法
    7
    、写出测试流程,各部分的特点
    8
    、写出ISO模型,tcp/udp在那层?他们有什么区别
    9
    、写出HUBtchRouterISO的第几层设备,叫什么?
    10
    、三角形问题、、、、、
    11
    、怎么测试ATM
    12
    、你了解的自动化测试工具?都有什么特点?
    13
    、数据库:
    student
    表(SnoSnameSageSsex
    course
    表(CnoCnameCcredit
    SC
    SnoCnograde
    1)建表studentcourseSC
    2)查询年龄小于20的学生学号、年龄,并显示
    3)查询年龄不在20-23(包括20 23 )的学生的成绩
    14
    、翻译、、、、
    15
    、一根不匀称的香烧完要一个小时,用两根这样的香怎么测出一刻钟?

  • 时力科技笔试

    2007-02-10 11:49:48

    20题都是Unix的题目

    二、
    1
    、写出c语言中主要的排序方法
    2
    、网管告诉你路由器可以与远程端进行通信,你的WIN98不能通信,应该检查什么配置?
    3
    、中间件的含义,意义,主要产品名称?
    4
    、简述一下c/s模式或者b/s模式

    三、
    写程序 3

    四、
    智力题
    1
    、有十个小球,形状完全相同,其中一个质量不同。问怎么用天平测出那个质量不同的小球,只能测三次,那个小球是比其他任何一个重还是轻?
    2
    、有三个人面试,经理有五顶帽子,三白色的两黄色的,三个人面壁而立,经理给他们每人各戴一顶帽子,看谁能最快猜出自己头上戴的是什么颜色的帽子。三人回过头来你看我我看你,看到另外两个都戴白色帽子,开始都没人猜出来,突然有人说自己戴的是白帽子,经理录用了他,问他是怎么知道自己的是白帽子的?

    五、
    关于钓鱼岛的论文,选自己熟悉的某个领域站在中国人的立场写篇关于钓鱼岛对中国经济社会的发展的论文,1000字左右。

  • 神州泰岳测试试题(笔试)

    2007-02-10 11:48:17

    统一的笔试,非测试工程师笔试




    一、   基本素质(25’’)
    1
      2吨冰变成水,最快的方法是什么?
    2
      加热会凝固的东西是什么?
    3
      请就“欧洲见闻录”猜一小说名字
    4
      如何能够与自己的主管保持良好的工作关系?
    5
      你认为IT研发人员要具备的五种最重要的素质是什么?为什么?
    6
      如果有人对你感叹“好心不得好报”,你如何来改变他的观点?(用不超过一百个汉字来描述)
    7
      你主张加班和主张不加班的理由分别是什么?
    8
      假设你的朋友请你帮忙到超市买以下物品:
    葡萄、鸡蛋、土豆、胡萝卜、桔子、菠菜、苹果、咸鸭蛋、酸奶
    如果你只能靠脑子记忆,你会用什么办法来更容易地记下?
    二、   计算机基础(30分钟)
    9
    Word97/2000中的“格式刷”如何使用?
    10
    Word97/2000中的“大纲视图”与“页面视图”的区别是什么?
    11
    、在七原色中,那种颜色能够与紫色形成最大对比的颜色搭配?
    12
    Gif图形格最高支持多少颜色数?
    13
    Photoshop中的将被编辑图形放大显示的快捷键是什么?
    14
    、美工设计某个页面的底色为RGB153134255),则体现在页面中的HTML代码为<body bgcolor=”???????”>,请写出???????所代表的代码。
    15
    、要求网页上的某个URL链接(链接文字为”link”)点击后开一个新的浏览器窗口,然后在窗口中显示http://localhost/c.html,请写出对应代码。
    16
    、要求在html页面上做一个宽度为40像素的文本输入框,文本框中输入的文字都以Arial字体显示。对应的代码是<input type=”test” name=”username” style=”FONT-FAMILY: Arial” style=”width:??”>,请写出??所代表的html代码。
    17
    、在某个网站的根目录下有两个文件:index.htmlmail.html,要求用户访问默认页面index.html 5秒后,页面自动跳转到mail.html。对应的html代码是<meta http-equiv=”refresh” content=”5;URL=?????”>,请写出?????对应的代码。
    18
    、要求用jsp实现以下功能:用户在浏览器的地址栏中看到的地址是http://127.0.0.1/test/a.jsp,但实际在浏览器中看到的页面内容却是http://127.0.0.1/text/b.jsp。请问在a.jsp中用一句什么样的jsp代码可以实现这个功能?
    19
    、要求以css方式实现鼠标移动到网页上链接时链接不出现下划线,请写出对应的css代码
    20
    、在C语言fopen()函数中,打开文件的方式用”r”与”r+”的区别是什么?打开文件的方式用”r”与”w”的区别是什么?”w”与”wb”的区别是什么?
    21
    C语言中常常使用#include语句指明所要用的“函数头文件”,在Windows2000操作系统下,系统的“函数头文件”放在什么地方?UNIX操作系统下,系统的“函数头文件”放在什么地方?
    22
    、画出程序流程图:用C语言编程,判断一个给定的字符串是否为有效的IP地址,输出判断结果。举例:testip 10.1.1.1输出“10.1.1.1 is a valid IP Address

     

  • 神洲泰岳测试试题

    2007-02-10 11:46:44

    1.一台计算机的IP192.168.10.71子网掩码255.255.255.64192.168.10.201是同一局域网吗?
    2.internet
    e-mail协仪,IE的协仪,NAT是什么,有什么好处,能带来什么问题?DNS是什么,它是如何工作的?
    3.PROXY
    是如何工作的?
    4.win2k
    系统内AT命令完成什么功能,Messenger服务是做什么,怎么使用?
    5
    进程,线程的定义及区别
    6,32
    位操作系统内,1进程地址空间多大,进程空间与物理内存有什么关系?
    7
    网络攻击常用的手段,防火墙如何保证安全.
    8
    如何配静态IP,如何测网络内2台计算机通不通,PING一次返几个数据包?
    9WIN9X
    WINNT以上操作系统有"服务",服务是什么,如何停止服务?
    10AD
    WIN2KSERVER上建需什么文件格式,AD是什么?XP多用户下"注销""切换"的区别.
    11UDP
    可以跨网段发送吗?
    12
    最简单的确认远程计算机(win2K以上)某个监听端口是正常建立的?
    13
    软件测试的定义,测试工作是枯燥反复的,你是如何理解的?黑盒,白盒,回归,压力测试的定义.
    14winrunner,loadrunner
    是什么,区别
    15
    磁盘分区如何分类,请举例说明安装操作系统的注意事项.
    (1
    小时答题)

  • 软通动力面试笔答

    2007-02-10 11:43:11

    1.白箱测试和黑箱测试是什么?什么是回归测试?

    2.
    单元测试、集成测试、系统测试的侧重点是什么?

    3.
    设计用例的方法、依据有那些?

    4.
    一个测试工程师应具备那些素质和技能?

    5.
    集成测试通常都有那些策略?

    6.
    你用过的测试工具的主要功能、性能及其他?

    7.
    一个缺陷测试报告的组成

    8.
    基于WEB信息管理系统测试时应考虑的因素有哪些?

    9.
    软件本地化测试比功能测试都有哪些方面需要注意?

    10.
    软件测试项目从什么时候开始,?为什么?

    11.
    需求测试注意事项有哪些?

    12.
    简述一下缺陷的生命周期

    13.
    测试分析测试用例注意(事项)?

     

  • 软件测试工程师笔试试题

    2007-02-10 11:42:18

     

     

    请根据您以往的学习和工作经历,结合您的个人经验回答以下问题。您可以尽可能详细和完整的表达出自己的思想,如果书写空间不够,您可以将答案写在题目所在页的背面。如果需要稿纸请同接待人员联系。

    01.   为什么要在一个团队中开展软件测试工作?

     

     

     

     

     

     

     

     

     

     

    02.   您是否了解以往所工作的企业的软件测试过程?如果了解,请试述在这个过程中都有哪些工作要做?分别由哪些不同的角色来完成这些工作?


    03.   您是否了解以往所工作的企业的软件开发过程?如果了解,请试述一个完整的开发过程需要完成哪些工作?分别由哪些不同的角色来完成这些工作?(对于软件测试部分,可以简述)

     

     

     

     

     

     

     

     

     

     

     

     

    04.   您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?


    05.   您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)

     

     

     

     

     

     

     

     

     

     

     

     

    06.   请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。

     

     

     

     

     

     

     

     

     

     

     

     


    07.   测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?

     

     

     

     

     

     

     

     

     

     

     

     

    08.   您认为做好测试计划工作的关键是什么?

     

     

     

     

     

     

     

     

     

     

     

     

     

     


    09.   您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。

     

     

     

     

     

     

     

     

     

     

     

     

    10.   您认为做好测试用例设计工作的关键是什么?

     

     

     

     

     

     

     

     

     

     

     

     


    11.   请以您以往的实际工作为例,详细的描述一次测试用例设计的完整的过程。

     

     

     

     

     

     

     

     

     

     

     

     

    12.   您以往的工作中是否曾开展过测试用例的评审工作?如果有,请描述测试用例评审的过程和评审的内容。

     

     

     

     

     

     

     

     

     

     

     


    13.   您以往是否曾经从事过性能测试工作?如果有,请尽可能的详细描述您以往的性能测试工作的完整过程。

     

     

     

     

     

     

     

     

     

     

     

     

    14.   您在从事性能测试工作时,是否使用过一些测试工具?如果有,请试述该工具的工作原理,并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。

     

     

     

     

     

     

     

     

     

     

     

     


    15.   您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么?

     

     

     

     

     

     

     

     

     

     

     

     

     

    16.   在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?

     

     

     

     

     

     

     

     

     

     

     


    17.   您以往所从事的软件测试工作中,是否使用了一些工具来进行软件缺陷(Bug)的管理?如果有,请结合该工具描述软件缺陷(Bug)跟踪管理的流程。

    18.   您以往是否曾经从事过单元测试和集成测试?如果有,请谈一下这些工作的实际开展情况。

     


    19.   您如何看待软件过程改进?在您曾经工作过的企业中,是否有一些需要改进的东西呢?您期望的理想的测试人员的工作环境是怎样的?

     

     

     

     

     

     

     

     

     

     

     

     

    20.   您以往工作过的企业中,是否开展了软件配置管理工作?您能否描述一下这项工作的开展情况和您对这项工作的认识?

     


    21.   您是否熟悉一些主流的软件工程方法论和思想,如RUPCMMCMMIXPPSPTSP。如果熟悉,您是否可以谈一下对这些方法论和思想的认识?

     

     

     

     

     

     

     

     

     

     

     

     

    22.   您认为在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员良好的人际关系的关键是什么?

     


    23.   在您以往的测试工作中,最让您感到不满意或者不堪回首的事情是什么?您是如何来对待这些事情的?

     

     

     

     

     

     

     

     

     

     

     

     

    24.   在即将完成这次笔试前,您是否愿意谈一些自己在以往的学习和工作中获得的工作经验和心得体会?(可以包括软件测试、过程改进、软件开发或者与此无关的其他方面)

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 测试人员考试试卷

    2007-02-10 11:41:19

    (考试时间90分钟,满分100分) 姓名:__________部门:__________员工号:__________
    一、判断题(每题1分,12 分,正确的√,错误的╳)
    1
    .软件测试的目的是尽可能多的找出软件的缺陷。()
    2
    Beta 测试是验收测试的一种。()
    3
    .验收测试是由最终用户来实施的。()
    4
    .项目立项前测试人员不需要提交任何工件。()
    5
    .单元测试能发现约80%的软件缺陷。()
    6
    .代码评审是检查源代码是否达到模块设计的要求。()
    7
    .自底向上集成需要测试员编写驱动程序。()
    8
    .负载测试是验证要检验的系统的能力最高能达到什么程度。()
    9
    .测试人员要坚持原则,缺陷未修复完坚决不予通过。()
    10
    .代码评审员一般由测试员担任。() 1
    1
    .我们可以人为的使得软件不存在配置问题。()
    12
    .集成测试计划在需求分析阶段末提交。()
    二、不定项选择题(每题2 分,10分)
    1
    .软件验收测试的合格通过准则是:()
    A
    软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。 B 所有测试项没有残余一级、二级和三级错误。
    C
    立项审批表、需求分析文档、设计文档和编码实现一致。
    D
    验收测试工件齐全。

    2
    .软件测试计划评审会需要哪些人员参加?()
    A
    .项目经理
    B
    SQA 负责人
    C
    .配置负责人
    D
    .测试组

    3
    .下列关于alpha 测试的描述中正确的是:()
    A
    alpha 测试需要用户代表参加
    B
    alpha 测试不需要用户代表参加
    C
    alpha 测试是系统测试的一种
    D
    alpha 测试是验收测试的一种

    4
    .测试设计员的职责有:()
    A
    .制定测试计划
    B
    .设计测试用例
    C
    .设计测试过程、脚本
    D
    .评估测试活动

    5
    .软件实施活动的进入准则是:()
    A
    .需求工件已经被基线化
    B
    .详细设计工件已经被基线化
    C
    .构架工件已经被基线化
    D
    .项目阶段成果已经被基线化

    三、填空题(每空1分,24 分)
    1
    .软件验收测试包括、、三种类型。
    2
    .系统测试的策略有功能测试、、、、易用性测 试、、、、、、、、 、、等15 种方法。
    3
    .设计系统测试计划需要参考的项目文档有、和迭代计划。
    4
    .对面向过程的系统采用的集成策略有、两种。
    5
    .通过画因果图来写测试用例的步骤为、、、及把因果图转 换为状态图共五个步骤。


    四、简答题(共37分)
    1
    阶段评审与同行评审的区别。(4 分)
    2
    什么是软件测试。(3 分)
    3
    简述集成测试的过程。(5 分)
    4
    怎样做好文档测试?(4 分)
    5
    白盒测试有那几种方法?(6 分)
    6
    系统测试计划是否需要同行评审,为什么?(4 分)
    7
    Alpha 测试与beta 测试的区别。(4 分)
    8
    比较负载测试、容量测试和强度测试的区别。(6 分) 9 测试结束的标准是什么?(3 分)

    五、 设计题(共15分) 对下面给出的程序控制图,分别以各种不同的测试方法写出最少的测试用例。



    测试人员_考试试卷(考试时间100分钟,满分100分) 姓名:__________部门:__________员工号:__________
    一、填空题:(每一空格2分,共60分)
    1
    软件实施活动的输出工件有
    2
    代码评审主要做 工作。
    3
    软件实施活动中集成员的职责是
    4
    验证与确认软件实施活动主要有 、代码评审、 SQA 验证。
    5
    表明测试已经结束。
    6
    软件测试的目的是
    7
    软件测试主要分为 四类测试。
    8
    软件测试活动有制定测试计划、 、测 试评估、测试结束八个步骤。
    9
    软件测试活动的输出工件有_
    10
    、软件测试角色有


    二、不定项选择题:(每题3 分,共15分)
    1
    软件实施活动的进入准则是()
    A
    需求工件已经被基线化
    B
    详细设计工件已经被基线化
    C
    构架工件已经被基线化
    D
    项目阶段成果已经被基线化

    2
    下面角色不属于集成计划评审的是()
    A
    配置经理
    B
    项目经理
    C
    测试员
    D
    编码员

    3
    、软件测试设计活动主要有()
    A
    工作量分析
    B
    确定并说明测试用例
    C
    确立并结构化测试过程
    D
    复审并评估测试覆盖

    4
    、不属于集成测试步骤的是()
    A
    制定集成计划
    B
    执行集成测试
    C
    记录集成测试结果
    D
    回归测试

    5
    、属于软件测试活动的输入工件的是()
    A
    软件工作版本
    B
    可测试性报告
    C
    软件需求工件 D 软件项目计划

    三、问答题:(共25 分)
    1
    项目的集中管理在软件公司的哪一个层面?(2 分)
    2
    请描述软件测试活动的生命周期。(8 分)
    3
    什么是测试评估,测试评估的范围是什么?(5 分)
    4
    阐述工作版本的定义。(2 分)
    5
    请画出软件测试活动的流程图。(8 分)  




    测试人员考试试卷(考试时间90分钟,满分100分) 姓名:__________部门:__________员工号:__________
    一、 判断题(每题2,正确的“√”,错误的“╳”)
    1
    好的测试员不懈追求完美。( )
    2
    测试程序仅仅按预期方式运行就行了。( )
    3
    不存在质量很高但可靠性很差的产品。( )
    4
    软件测试员可以对产品说明书进行白盒测试。( )
    5
    静态白盒测试可以找出遗漏之处和问题。( )
    6
    总是首先设计白盒测试用例。( )
    7
    可以发布具有配置缺陷的软件产品。( )
    8
    所有软件必须进行某种程度的兼容性测试。( )
    9
    所有软件都有一个用户界面,因此必须测试易用性。( )
    10
    测试组负责软件质量。( )


    二、 简答题
    1
    软件的缺陷等级应如何划分?(3 分)
    2
    如果能够执行完美的黑盒测试,还需要进行白盒测试吗?为什么?(5 分)
    3
    你认为一个优秀的测试工程师应该具备哪些素质?(3 分)
    4
    产品测试到什么时候就算是足够了?(2 分)
    5
    测试计划的目的是什么?( 查看(263) 评论(0) 收藏 分享 管理

  • 软件测试工程师笔试试题

    2007-02-10 11:40:38


    软件测试工程师笔试试题

    01.
    为什么要在一个团队中开展软件测试工作?

    02.
    您是否了解以往所工作的企业的软件测试过程?如果了解,请试述在这个过程中都有哪些工作要做?分别由哪些不同的角色来完成这些工作?

    03.
    您是否了解以往所工作的企业的软件开发过程?如果了解,请试述一个完整的开发过程需要完成哪些工作?分别由哪些不同的角色来完成这些工作?(对于软件测试部分,可以简述)

    04.
    您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?

    05.
    您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)

    06.
    请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。

    07.
    测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?

    08.
    您认为做好测试计划工作的关键是什么?

    09.
    您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。

    10.
    您认为做好测试用例设计工作的关键是什么?

    11.
    请以您以往的实际工作为例,详细的描述一次测试用例设计的完整的过程。

    12.
    您以往的工作中是否曾开展过测试用例的评审工作?如果有,请描述测试用例评审的过程和评审的内容。

    13.
    您以往是否曾经从事过性能测试工作?如果有,请尽可能的详细描述您以往的性能测试工作的完整过程。

    14.
    您在从事性能测试工作时,是否使用过一些测试工具?如果有,请试述该工具的工作原理,并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。

    15.
    您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么?

    16.
    在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?

    17.
    您以往所从事的软件测试工作中,是否使用了一些工具来进行软件缺陷(Bug)的管理?如果有,请结合该工具描述软件缺陷(Bug)跟踪管理的流程。

    18.
    您以往是否曾经从事过单元测试和集成测试?如果有,请谈一下这些工作的实际开展情况。

    19.
    您如何看待软件过程改进?在您曾经工作过的企业中,是否有一些需要改进的东西呢?您期望的理想的测试人员的工作环境是怎样的?

    20.
    您以往工作过的企业中,是否开展了软件配置管理工作?您能否描述一下这项工作的开展情况和您对这项工作的认识?

    21.
    您是否熟悉一些主流的软件工程方法论和思想,如RUPCMMCMMIXPPSPTSP。如果熟悉,您是否可以谈一下对这些方法论和思想的认识?

    22.
    您认为在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员良好的人际关系的关键是什么?

    23.
    在您以往的测试工作中,最让您感到不满意或者不堪回首的事情是什么?您是如何来对待这些事情的?

    24.
    在即将完成这次笔试前,您是否愿意谈一些自己在以往的学习和工作中获得的工作经验和心得体会?(可以包括软件测试、过程改进、软件开发或者与此无关的其他方面)



    作者: aBoo 2005-4-6 09:29   回复此发言  

    --------------------------------------------------------------------------------

    2
    回复:软件测试工程师笔试试题
    一、判断题(每题1分,12 分,正确的√,错误的╳)
    1
    .软件测试的目的是尽可能多的找出软件的缺陷。()
    2
    Beta 测试是验收测试的一种。()
    3
    .验收测试是由最终用户来实施的。()
    4
    .项目立项前测试人员不需要提交任何工件。()
    5
    .单元测试能发现约80%的软件缺陷。()
    6
    .代码评审是检查源代码是否达到模块设计的要求。()
    7
    .自底向上集成需要测试员编写驱动程序。()
    8
    .负载测试是验证要检验的系统的能力最高能达到什么程度。()
    9
    .测试人员要坚持原则,缺陷未修复完坚决不予通过。()
    10
    .代码评审员一般由测试员担任。()
    11
    .我们可以人为的使得软件不存在配置问题。()
    12
    .集成测试计划在需求分析阶段末提交。()
    二、不定项选择题(每题2 分,10分)
    1
    .软件验收测试的合格通过准则是:()
    A
    软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。
    B
    所有测试项没有残余一级、二级和三级错误。
    C
    立项审批表、需求分析文档、设计文档和编码实现一致。
    D
    验收测试工件齐全。
    2
    .软件测试计划评审会需要哪些人员参加?()
    A
    .项目经理
    B
    SQA 负责人
    C
    .配置负责人
    D
    .测试组
    3
    .下列关于alpha 测试的描述中正确的是:()
    A
    alpha 测试需要用户代表参加
    B
    alpha 测试不需要用户代表参加
    C
    alpha 测试是系统测试的一种
    D
    alpha 测试是验收测试的一种
    4
    .测试设计员的职责有:()
    A
    .制定测试计划
    B
    .设计测试用例
    C
    .设计测试过程、脚本
    D
    .评估测试活动
    5
    .软件实施活动的进入准则是:()
    A
    .需求工件已经被基线化
    B
    .详细设计工件已经被基线化
    C
    .构架工件已经被基线化
    D
    .项目阶段成果已经被基线化
    三、填空题(每空1分,24 分)
    1
    .软件验收测试包括、、三种类型。
    2
    .系统测试的策略有功能测试、、、、易用性测
    试、、、、、、、、
    、、等15 种方法。
    3
    .设计系统测试计划需要参考的项目文档有、和迭代计划。
    4
    .对面向过程的系统采用的集成策略有、两种。
    5
    .通过画因果图来写测试用例的步骤为、、、及把因果图转
    换为状态图共五个步骤。

    四、简答题(共37分)
    1
    阶段评审与同行评审的区别。(4 分)
    2
    什么是软件测试。(3 分)
    3
    简述集成测试的过程。(5 分)
    4
    怎样做好文档测试?(4 分)
    5
    白盒测试有那几种方法?(6 分)
    6
    系统测试计划是否需要同行评审,为什么?(4 分)
    7
    Alpha 测试与beta 测试的区别。(4 分)
    8
    比较负载测试、容量测试和强度测试的区别。(6 分)
    9
    测试结束的标准是什么?(3 分)
    五、 设计题(共15分)
    对下面给出的程序控制图,分别以各种不同的测试方法写出最少的测试用例。

    测试人员_考试试卷(考试时间100分钟,满分100分)
    姓名:__________部门:__________员工号:__________
    一、填空题:(每一空格2分,共60分)
    1
    软件实施活动的输出工件有
    2
    代码评审主要做 工作。
    3
    软件实施活动中集成员的职责是
    4
    验证与确认软件实施活动主要有 、代码评审、 SQA
    验证。
    5
    表明测试已经结束。
    6
    软件测试的目的是
    7
    软件测试主要分为 四类测试。
    8
    软件测试活动有制定测试计划、 、测
    试评估、测试结束八个步骤。
    9
    软件测试活动的输出工件有_
    10
    、软件测试角色有
    二、不定项选择题:(每题3 分,共15分)
    1
    软件实施活动的进入准则是()
    A
    需求工件已经被基线化
    B
    详细设计工件已经被基线化
    C
    构架工件已经被基线化
    D
    项目阶段成果已经被基线化
    2
    下面角色不属于集成计划评审的是()
    A
    配置经理
    B
    项目经理
    C
    测试员
    D
    编码员
    3
    、软件测试设计活动主要有()



    作者: aBoo 2005-4-7 10:29   回复此发言  

    --------------------------------------------------------------------------------

    3
    回复:软件测试工程师笔试试题
    A
    工作量分析
    B
    确定并说明测试用例
    C
    确立并结构化测试过程
    D
    复审并评估测试覆盖
    4
    、不属于集成测试步骤的是()
    A
    制定集成计划
    B
    执行集成测试
    C
    记录集成测试结果
    D
    回归测试
    5
    、属于软件测试活动的输入工件的是()
    A
    软件工作版本
    B
    可测试性报告
    C
    软件需求工件
    D
    软件项目计划
    三、问答题:(共25 分)
    1
    项目的集中管理在软件公司的哪一个层面?(2 分)
    2
    请描述软件测试活动的生命周期。(8 分)
    3
    什么是测试评估,测试评估的范围是什么?(5 分)
    4
    阐述工作版本的定义。(2 分)
    5

  • 缺陷的等级划分

    2007-02-10 11:40:07



    A
    类—严重错误,包括以下各种错误: 1 由于程序所引起的死机,非法退出 2 死循环 3 数据库发生死锁 4 因错误操作导致的程序中断 5 功能错误 6 与数据库连接错误 7 数据通讯错误

    B类—较严重错误,包括以下各种错误: 1 程序错误 2 程序接口错误 3 数据库的表、业务规则、缺省值未加完整性等约束条件

    C类—一般性错误,包括以下各种错误: 1 操作界面错误(包括数据窗口内列名定义、含义是否一致) 2 打印内容、格式错误 3 简单的输入限制未放在前台进行控制 4 删除操作未给出提示 5 数据库表中有过多的空字段

    D类—较小错误,包括以下各种错误: 1 界面不规范 2 辅助说明描述不清楚 3 输入输出不规范 4 长操作未给用户提示 5 提示窗口文字未采用行业术语 6 可输入区域和只读区域没有明显的区分标志 E类—测试建议

     

882/5<12345>
Open Toolbar