IBM CDL 常见问题收集

上一篇 / 下一篇  2008-07-09 12:03:46 / 个人分类:English

软件缺陷( Software Bug )的具体含义包括下面几个因素:

1.软件未达到客户需求的功能和性能; 2. 软件超出客户需求的范围; 3.软件出现客户需求不能容忍的错误; 4.软件的使用未能符合客户的习惯和工作环境。

 软件测试的目的

软件测试:正确性, 完整性, 安全性, 质量

质量: 性能, 效率, 可靠性, 可维护性, 兼容性, 易用性

测试的流程

需求分析: Testing should begin in the requirements phase of the software development life cycle.

设计分析: During the design phase, testers work with developers in determining what aspects of a design are testable and under what parameter those tests work.

 测试计划和准备: Test Strategy, Test Plan(s), Test Bed creation. Test Development: Test Procedures, Test Scenarios, Test Cases, Test scrīpts to use in testing software. Test Execution: Testers execute the software based on the plans and report any errors found to the development team.

 测试报告 Retesting the Defects (测试结果分析)

 白盒测试

静态测试:阅读代码       动态测试:执行程序

单元测试、测试覆盖、安全测试

方法:Data-flow Testing 代码走查工具。 代码覆盖分析工具。 单元测试工具。 代码性能分析和优化工具。 Debug、内存泄漏等工具。

黑盒测试(Functional/behavīoral Testing)

It not need any knowledge of internal design or code . In order to implement Black Box Testing Strategy, the tester is needed to be thorough with the requirement specifications of the system and as a user , should know, how the system should behave in response to the particular action.

功能测试、压力测试、随机测试、易用性测试恢复测试to check how fast and better the application can recover against any type of crash or hardware failure Volume Testing: Huge amount of data is processed through the application in order to check the extreme limitations of the system User Acceptance Testing, Beta Testing (需要用户介入) Alpha Testing: In this type of testing, the users are invited at the development center where they use the application and the developers note every particular input or action carried out by the user. Any type of abnormal behavīor of the system is noted and rectified by the developers. (需要用户介入)

 黑盒测试的测试用例设计方法:1.等价类划分方法 2.边界值分析方法 3.错误推测方法 4.因果图方法

测试用例的基本格式 ---软件测试用例的基本要素包括测试用例编号、测试标题、重要级别、测试输入、操作步骤、预期结果   Information + Test case activity + Results

Test Case(测试用例): 测试输入 + 执行条件 + 预期结果 测试某个程序路径或核实是否满足某个特定的需求 Collections of test cases are sometimes incorrectly termed a test plan. They might correctly be called a test specification. If sequence is specified , it can be called a test scrīpt, scenario or procedure.

regression testing(回归测试) - make sure unchanged functionality remains unchanged

如何保证测试的覆盖率?

软件测试覆盖包括分支覆盖,语句覆盖以及条件覆盖,这是白盒测试中一个很基本的测试概念

语句覆盖:它要求被测程序的每一可执行语句在测试中尽可能都检验过;

分支覆盖:要求程序中所有判定的分支尽可能得到检验;

条件覆盖:当判定式中含有多个条件时,要求每个条件的取值均得到检验;

画流程图?测试工具?Control Flow Graph?

单元测试通常采用白盒测试的方式,白盒测试也称结构测试或逻辑驱动测试,已知产品内部工作过程,通过测试来检测内部动作是否正常。测试按照程序内部结构进行,检验程序中的每条通路是否正确工作,而不顾它的功能。测试是从代码的路径结构和内部逻辑信息设计测试用例并覆盖全部代码、分支、路径、条件。 所以,单元测试的一个很重要的指标就是代码覆盖率,很多软件开发标准化组织都对单元测试的代码覆盖率有很明确的要求,低于标准就意味着单元测试不通过。

 测试需要注意

全方位的观察测试用例执行结果: 测试执行过程中,当测试的实际输出结果与测试用例中的预期输出结果一致的时候,是否可以认为测试用例执行成功了?

有没有出现测试人员和开发人员出现冲突的情况、如何解决冲突...... 与开发人员良好的沟通: 测试执行过程中,当你提交了问题报告单,可能被开发人员无情驳回,拒绝修改。这时候,只能对开发人员晓之以理,做到有理、有据,有说服力。首先,要定义软件缺陷的标准原则,这个原则应该是开发人员和测试人员都认可的,如果没有共同认可的原则,那么开发人员与测试人员对问题的争执就不可避免了。此外,测试人员打算说服开发人员之前,考虑是否能够先说服自己,在保证可以说服自己的前提下,再开始与开发人员交流。

The best tester is not the one who finds the most bugs or who embarrasses the most developers. The best tester is the one who gets the most bugs fixed .

1、要耐心和细心

细心是测试工程师的一个基本素质,测试工程师是对质量负责的人,涉及到质量问题,就不能含糊,因此一定要细心。细心是一种态度,你的态度迟早会感染和你合作的开发人员,而这往往是合作愉快的基础。至于说到耐心,在我的工作经历中,不厌其烦地向开发人员解释一个BUG,让他认识到BUG的重要性是经常的事情,其实想想也很正常,对任何人来说,被人指出自己的缺点和不足都不是让人舒服的事情,因此,一点不耐烦的情绪就可能引起对方很大的反感,给自己的工作带来不必要的麻烦。

 2、要懂得尊重对方开发是一件需要全面和综合考虑的工作,开发工作中,由于各种原因导致程序中出现问题是很正常的现象,作为测试工程师,发现了这些问题并不值得你夸耀,也不能说明你比开发工程师聪明。一个好的测试工程师一定是懂得尊重开发工程师的人,尊重对方的技术水平,尊重对方的代码。对他们来说,代码就像是自己的孩子一样,因此,记得在合适的时候表达你对他的尊重,赞扬一下他代码的精妙之处。

 3、要能设身处地为对方着想开发工程师一般都处在较大的工作压力下,他的上司直接考核他们的指标很大程度上是已完成的代码,所以在工作任务紧张的时候,对于测试工程师报上来的BUG会 拖延解决甚至是推脱,给测试工程师的感觉就是很不合作。那么在这个时候,就需要设身处地的为对方着想了,每个人都会为自己的工作在内心排定优先级,如果他 认为解决你发现的BUG不是重要的事情,那么最大的可能就是你并没有向他解释清楚这个BUG 的严重程度。发现BUG是我们的责任,敦促BUG得到解决是我们更重要的责任,因此,我们可以心平气和地和开发人员坐下来讨论一下BUG的严重程度,和他一起排定BUG的优先级别并确定解决的时间。

4、要有原则

5、要主动承担

【四不要】

 1、不要嘲笑

2、不要在背后评论开发工程师

3、不要动辄用上层来压制对方

4、和开发人员的沟通不要只有BUG 除了在BUG记录单上,在其他的地方也让和你合作的开发工程师接触到你吧,午餐或是集体活动的时候多和对方聊聊天,一方面可以增进彼此的感情,混个脸熟,打交道的时候也方便;另一方面,从他那里了解业务的知识和他负责模块的方方面面,对自己也是提升。我个人就很喜欢和开发工程师沟通,开发工程师其实一般都是比较健谈的,尤其是对自己程序的精妙之处,多了解一些,多接触一些,对自己总是有益的。

 写了这么多,其实关键的就是两点:多从别人的角度去想想,所谓"换位思考",多尊重对方就一定能得到对方的尊重与配合;其次是加强和开发工程师的沟通,让他清楚地认识到你的工作对他的价值,你发现的每一个BUG的重要性。

 怎样测试C++中的内存泄露,有过啥测试软件...

VC中检测内存泄漏可以引入系统定义的宏来查看,内存在哪个位置泄漏

文件开始处加入下列定义

#define _CRTDBG_MAP_ALLOC

#include <stdlib.h>

#include <crtdbg.h>

程序退出时加入以下函数:

 _CrtDumpMemoryLeaks();

<crtdbg.h>的_malloc_dbg和_free_dbg将取代标准的malloc和free函数出现在DEBUG 版中,它可以跟踪内存的分配和释放。但是这只会在DEBUG版本中发生(当#define _DEBUG 的时候),而Release版本仍使用标准的malloc和free功能。

 Rational PurifyPlus?

你最想去哪家公司?

IBM的了解 学习和技术的角度 IBM价值观 成就客户 创新为要 诚信负责

 知道堆和栈么?除了动态分配内存还有什么会操作堆? GC ; Windows API

用过字符串拷贝函数么?strcpy

 他的原型是什么那?char * strcpy(char * dst, const char * src)....

为什么返回值会是char *? 有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,可以附加返回值。例如字符串拷贝函数strcpy 的原型: char *strcpy(char *strDest,const char *strSrc); strcpy 函数将strSrc 拷贝至输出参数strDest 中,同时函数的返回值又是strDest 。这样做并非多此一举,可以获得如下灵活性: char str[20]; int length = strlen( strcpy(str, "Hello World") );

存储过程(Stored procedure) DB2 SQL/PL

A stored procedure is a set of SQL commands that has been compiled and stored on the database server. Once the stored procedure has been "stored", client applications can execute the stored procedure over and over again without sending it to the database server again and without compiling it again.Stored procedures improve performance by reducing network traffic and CPU load. Stored procedures are similar to user-defined functions (UDFs). The major difference is that UDFs can be used like any other expression within SQL statements, whereas stored procedures must be invoked using the CALL

 那么有几种方式声明常量呢?

const #define const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。

static有什么不一样?如果把一个函数声明成static呢?static和声明的常量是在堆上还是在栈上?内存里面是怎么分配的?

 static修饰的变量的生命周期是整个程序,编译时分配内存,外部静态变量作用域是外部静态变量所在文件内从变量定义之后直到文件结束,局部静态变量作用域是局部静态变量所在的块内从变量定义之后直到该块结束。指定为static的函数为静态函数,静态函数局部于它所在的文件。 内存分配方式有三种:从静态存储区域分配、在栈上创建、从堆上分配。全局变量,static变量都是在从静态存储区域分配 。

xml解析技术有什么?DOM和SAX有什么区别?

DOM SAX JDOM DOM4J   

DOM采用建立树形结构的方式访问XML文档,而SAX采用的事件模型。DOM解析器把 XML文档转化为一个包含其内容的树,并可以对树进行遍历。用DOM解析模型的优点是编程容易。可以很容易的添加和修改树中的元素。然而由于使用DOM解析器的时候需要处理整个XML文档,所以对性能和内存的要求比较高,尤其是遇到很大的XML文件的时候。由于它的遍历能力,DOM解析器常用于XML文档需要频繁的改变的服务中。SAX 解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX对内存的要求通常会比较低,因为它让开发人员自己来决定所要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时,SAX这种扩展能力得到了更好的体现。但用SAX解析器的时候编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。

如何理解java的垃圾回收,其内部机制是什么?让你设计你怎么设计?

在Java中,内存的分配是由程序完成的,而内存的释放是有GC完成的。GC为了能够正确释放对象,GC必须监控每一个对象的运行状态,包括对象的申请、引用、被引用、赋值等,GC都需要进行监控。监视对象状态是为了更加准确地、及时地释放对象,而释放对象的根本原则就是该对象不再被引用。(有向图、引用计数器) Java中存在内存泄露,对象被引用但是无用。

假设在一个平面上一张有很多点,有的有连线,有的没有,设计一个数据结构,获取这些所有连通点。连接矩阵。

 要做好测试的话,需要那些方面的特质,tech的和非tech的

1. 对软件测试感兴趣和对自己有自信

 2. 善于怀疑,世界上没有绝对正确的,总有错误的地方,别人认为不可能发生的事,我却认为可能发生。

 3. 打破砂锅问到底的精神,对于只出现过一次的bug,一定找出原因,不解决誓不罢休。

 4. 做测试时要细心,不是所有的bug都能很容易的找出,一定要细心才能找出这些bug 。

5. 灵活一些,聪明一点,多制造一些容易产生bug的例子。

 6. 在有条件的情况下,多和客户沟通,他们身上有你所需要的。

7. 设身处地为客户着想,从他们的角度去测试系统。

8. 考虑问题要全面,结合客户的需求、业务的流程、和系统的构架,等多方面考虑问题。

9. 追求完美,对于新测试员来说,努力的追求完美,这对你很好,尽管有些事无法做到,但你应该去尝试。

10. 幽默感,能和开发小组很好的沟通是关键。 熟悉测试流程、Bug管理流程等;

熟悉测试方法,有较强的逻辑分析能力和学习能力,具备较强的总结能力;能够熟练应用多种测试工具者

回归测试 每当软件发生变化时,我们就必须重新测试现有的功能,以便确定修改是否达到了预期的目的,检查修改是否损害了原有的正常功能。同时,还需要补充新的测试用例来测试新的或被修改了的功能。为了验证修改的正确性及其影响就需要进行回归测试。

 白盒测试方法(程序流分析、逻辑覆盖、程序插装) Software Development Life Cycle Specification, Software architecture, Implementation (or coding), Testing , Documentation, Software Training and Support, Maintenance 瀑布模型 演化模型 螺旋模型 增量和迭代模型 快速和敏捷开发


TAG: English

 

评分:0

我来说两句

日历

« 2024-03-28  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 142690
  • 日志数: 180
  • 图片数: 2
  • 文件数: 2
  • 书签数: 15
  • 建立时间: 2008-03-15
  • 更新时间: 2012-04-17

RSS订阅

Open Toolbar