`
jake0719
  • 浏览: 90831 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

开发者面试百问-测试部分答案

    博客分类:
  • Tech
阅读更多

转自朱少民ID:KerryZhu http://blog.csdn.net/KerryZhu/archive/2009/02/28/3945871.aspx

里先回答 软件开发者面试百问 中测试部分,以后有时间再回答软件工程、软件项目管理等各个部分。这些问题的答案一般没有正确与否,各个人回答不同,只不过希望这里的答案相对不错,对你有所帮助。


1. 什么是回归测试?怎样知道新引入的变化没有给现有的功能造成破坏?

【参考答案】由于软件修改或变更,对修改后的工作版本所有可能影响的范围进行的测试,就是回归测试。回归测试的目的是发现原来正常的功能特性出现新的问题——回归缺陷,从而确保原来正常的或符合要求的特性,不受其它区域修改的影响。回归测试,伴随着测试过程,单元测试、集成测试和系统测试中,一旦有变更或修正,都要进行相应的回归测试。

通过代码查看或代码评审,可以基本知道新引入的变化是否会给现有的功能造成影响,但不能确定,所以需要进行回归测试。

 

 

 

2. 如果业务层和数据层之间有依赖关系,你该怎么写单元测试?

【参考答案】

JAVA中,如果业务层与数据层之间有依赖关系,也就是说业务处理不单纯,这时我们一般用Mock对象来模拟所需要的数据,来进行单元测试。简单地说mock就是模型,模拟测试时需要的对象及测试数据。这类测试工具有MockObjectsXdocletEasyMockMockCreatorMockEJBObjcUnitjMock

比如,用过Struts的都知道,Struts中的action类要运行必须依靠服务器的支持,只有服务器可以提供HttpServletRequestHttpServletResponse对象,如果不启动服务器,那么就没有办法对action类进行单元测试,而借助mock,可以完成strutsAction的测试。

对业务层测试可以用Mock来模拟,而对数据层如何测试?有两种方法:

使用Mock对象来测试DAO。它屏蔽了具体的关系数据库,它的优点是测试代码的编写方便,可以快速运行。缺点:风险太大,对数据层测试的力度太小,屏蔽了很多与数据库相关的问题,比如:对象和数据库表之间映射,查询语句的语法是否正确。
直接在关系数据库中测试。优点:能对数据层进行完整的测试。缺点:单元测试运行速度太慢,要频繁的对数据库进行操作

还可以参考下列文章:

 

 

3. 你用哪些工具测试代码质量?

【参考答案】这就取决于使用工具的经验,而这方面的经验,开发人员更多。主要的工具有适合Java代码的CheckstyleFindbugsJalopyPMDParasoft JtestCoverity Prevent for Java;适合C++语言,Parasoft C++TestCoverity Prevent for C/C++

 

 

4. 在产品部署之后,你最常碰到的是什么类型的问题?

【参考答案】产品部署之后,容易碰到的问题是安装配置上不对,测试环境和实际运行环境总是存在差异。其次,出现的问题,可能是系统稳定性问题、性能问题,可能由于脏数据、传输中的异常数据和大数据量等引起。

 

 

5. 什么是代码覆盖率?有多少种代码覆盖率?

【参考答案】当我们想了解测试是否充分、是否有些地方没被测试过,就需要对所有测试过的地方有所了解,也就是了解测试的覆盖程度。测试越充分,测试的覆盖程度越高,产品的质量就越能得到保证。这种程度的量化就是测试覆盖率,即测试覆盖率是用来衡量测试完成程度、或评估测试活动覆盖产品代码的一种量化的结果,评估测试工作的质量,也是产品代码质量的间接度量方法。如果用公式描述的话,可以看作测试过程中已验证的区域或集合要求被测试的总的区域或集合的比值。

基于代码的测试覆盖评测是对被测试的程序代码语句、代码块、类、函数(方法)、路径或条件的覆盖率分析。如果应用基于代码的覆盖率分析,一般需要借助工具(如IBM Rational PureCoverageBullseye Coverage开源CloverEMMACoberturaNoUnit等)来执行。

 

6. 功能测试和探索性测试的区别是什么?你怎么对网站进行测试?

【参考答案】这个题目本身有问题,把功能测试探索性测试比较不合理。功能测试中包含了按已完成的测试用例或已计划的测试大纲等进行测试探索性测试,而探索性测试一般也是为了发现功能中的问题,虽然探索性测试还会涉及安全性测试、性能测试等。

功能测试方法中包括等价类划分、边界值分析、因果图、决策表、正交试验法等,也包括错误猜测法,错误猜测法也可归为探索性测试。

探索性测试,也可以称随机测试(ad-hoc test),充分发挥测试人员最大的灵动性、创造性,进行各种猜测和试探,去发现一些相对隐藏比较深或偏僻的软件缺陷。随机(ad-hoc)测试,也可作为一种重要的测试辅助手段,以帮助测试人员尽早地熟悉产品,发现测试用例的不足,添加或改进测试用例。我的书《全程软件测试》对它们做了充分讨论。

对网站进行测试时,不仅要做好功能测试,包括功能的逐项验证、针对功能的负面测试、探索性测试等,还要进行安全性测试、性能测试、UI适用性测试等。

 

 


7. 测试套件、测试用例、测试计划,这三者之间的区别是什么?你怎么组织测试?

【参考答案】测试用例(test case)是为了更有效地发现缺陷而设计的、可以独立地执行的最小测试单元。测试套件(test suite)是为了完成某个测试目标或任务而组织的若干个测试用例的集合。测试计划(test plan)是对测试活动的事先策划,包括确定测试范围、估算测试工作量、识别测试风险、安排资源和进度等。测试计划指导测试用例的设计和测试套件的创建,测试套件是由测试用例构成。测试计划的实施需要借助测试用例、测试套件来实现。

组织测试,简单地说就是 计划测试 -> 设计测试用例 -> 创建测试套件 -> 执行测试套件 (转化为执行测试用例) -> 测试结果分析和评估 -> 调整测试计划 ->  …… 详细参见《全程软件测试》

 

 


8. 要对电子商务网站做冒烟测试,你会做哪些类型的测试?

【参考答案】冒烟测试(smoke test )这个名称的来历,大概是从电路板测试得来的。因为当电路板做好以后,首先会加电测试,如果板子没有冒烟在进行其它测试,否则就退回去。软件中的冒烟测试就是在每日构建(daily build)软件包后,对系统的基本功能进行快速的测试,以验证基本功能是否能正常运行。如果有问题,就打回开发部门;如果正常运行,说明软件包构建成功,接下来就可以进行常规测试或大规模测试。

对电子商务网站做冒烟测试,包括基本功能测试和性能测试。基本功能测试可以完成一个交易的完整过程,即从系统登录 -> 商品查询 -> 选择商品 ->  提交订单 ->确认 ->  付款  -> 结算等。 

 

 


9. 客户在验收测试中会发现不满意的东西,怎样减少这种情况的发生?

【参考答案】 客户可能发现功能或界面设计和他预想的不一致、或者会发现有些功能的操作不是很方便、或者发现一些错别字等各种缺陷。针对不同的问题,有相应的一些办法,概括起来就是和客户进行充分沟通,真正理解客户的需求,和客户的理解达成一致。其次,在开发期间,还可以邀请客户参与软件设计规格说明书、测试计划、测试用例等的评审,当软件能基本正常工作时再次邀请客户从头到尾再看一遍(product work-through)。最后,就是开发人员和测试人员做好自己的本质工作,构建高质量的软件,进行充分的测试。

 

 

10. 你去年在测试和质量保证方面学到了哪些东西?

【参考答案】 通过自己遇到具体的问题,来说明。例如,某个特定的缺陷分析,使你认识到某个方面的问题,然后找到真正原因,并加以克服。或者,通过某个质量事故,增强了质量第一的意识,或者由于某些冲突导致项目质量问题,认识到沟通流程规范font-fa

分享到:
评论

相关推荐

    软件开发者面试百问

    软件开发者面试百问 该资源是面向软件开发者的面试题库,涵盖了软件开发的各个方面,包括需求管理、功能设计、技术设计、程序设计、算法、数据结构和测试等。该资源共有 100 多个问题,涵盖了软件开发的各个阶段...

    软件开发者面试一百问

    【标题】:“软件开发者面试一百问” 【描述】:这篇内容是关于软件开发者面试的一百个问题,旨在覆盖软件工程的各个知识领域,帮助招聘者筛选出具备专业技能的聪明人才,而非仅满足基础要求的应聘者。文章强调了...

    软件开发者面试百问(涵盖了软件工程知识体系中定义的大多数知识域)

    《软件开发者面试百问》是针对软件工程领域面试的一个综合指南,旨在帮助招聘者筛选出优秀的程序员和架构师。这份清单覆盖了软件工程知识体系的多个关键领域,如需求分析、功能设计、技术设计和程序设计,同时也包含...

    软件开发者面试问题收集

    软件开发面试过程中,为了筛选出优秀的开发者,面试官通常会提出一系列涵盖广泛的问题,旨在评估候选人的技术能力、解决问题的技巧以及对软件工程的理解。以下是一些关键知识点的详细说明: 1. **需求分析**: - ...

    软件测试经典面试题 (超实用)

    ### 重要知识点解析 #### 1. 兼容性测试及其侧重方面 - **兼容性测试**是指在...以上内容涵盖了软件测试领域的多个核心知识点,从兼容性测试到具体的测试工具使用方法,为面试准备提供了丰富的理论基础和实践经验。

    面试笔记-带答案.docx

    1.3 Java专业技能测试:面试官会深入询问关于Java的知识,这部分会在后面详细讨论。 1.4 面试结束时,面试者可以反问公司项目的技术栈和期望,展示自己对职位的热情和准备。 二、Java专业技能 2.1 Java跨平台原理...

    ASP.NET MVC经典面试及答案-76页 基础学习资料

    *** MVC是一种用于开发动态网页应用的架构模式,它允许开发者创建一个网页应用,该应用将用户界面(UI)与业务逻辑分离,从而使得应用更加模块化、易于测试和维护。MVC代表模型(Model)、视图(View)和控制器...

    全网最齐全的Java面试题库-附答案.zip

    "全网最齐全的Java面试题库-附答案.zip"提供了一份全面的资源,旨在帮助Java开发者准备面试,提升自己的竞争力。这份资料涵盖了从基础到高级的各类Java知识点,包括但不限于语法、数据结构、算法、多线程、并发、JVM...

    Java面试宝典集-涵盖面试题面试宝典等整体打包.zip

    其次,"2014年3月阿里巴巴实习招聘笔试题及部分答案.docx"提供了阿里巴巴实习招聘的笔试题目,这些题目通常会测试候选人的基础编程能力、逻辑思维和问题解决技巧。通过这些题目,求职者可以了解企业的考察重点,如...

    python软件测试面试题答案及题目-100(1).zip

    【Python软件测试面试题答案及题目-100(1).zip】这个压缩包文件显然聚焦于Python在软件测试领域的应用,尤其是针对面试准备。在软件测试中,Python以其易读性、强大的库支持和自动化测试框架而备受青睐。下面我们将...

    经典的软件测试英文面试题目第二部分(共三部分)

    此外,之前的软件开发经验也对软件测试工程师非常有帮助,因为它可以提供软件开发过程的深入理解,增强测试者的开发者视角,并缩短自动化测试工具编程的学习曲线。 此外,软件测试工程师还需要具备判断能力,以评估...

    软件测试经典面试、笔试题及答案整理

    以上只是软件测试领域中的一部分知识点,实际面试中可能涉及更多细节。为了在面试中脱颖而出,除了理论知识,还要积累实践经验,了解并熟练运用各种测试工具。通过深入学习和不断实践,你将能够成功应对软件测试领域...

    最新各大公司企业真实面试题-Java面试题

    "Java 面试题及其答案.doc"和"JAVA面试题.doc"提供了大量的面试题及解答,涵盖了从基础知识到高级特性的广泛范围,包括反射、注解、设计模式、Spring框架、数据库操作等。通过这些题目,求职者可以自我评估,了解...

    软件测试基本面试问题及答案

    在软件测试领域,面试时经常会遇到一系列基础问题,这些问题旨在评估候选人的理论知识和实践经验。以下是一些核心的测试概念及其重要性: 1. **黑盒测试**:这是基于软件功能的测试,不考虑内部实现,关注的是软件...

    软件测试工程师面试宝典

    ### 软件测试工程师面试宝典知识点梳理 #### 一、文档测试的理解与实践 ...以上是对《软件测试工程师面试宝典》部分试题的知识点梳理,希望能帮助准备软件测试工程师职位面试的读者更好地理解和掌握相关知识。

    性能测试面试中常见的问题

    这些工具帮助开发者在测试过程中快速定位和解决问题。 ### 39. 数据库查询优化策略 数据库查询优化策略包括使用索引、简化查询语句、避免全表扫描、减少JOIN操作等。合理设计数据库结构和查询逻辑,对于提高系统...

    JAVA工程师面试常见问题及答案

    ### JAVA工程师面试常见问题及答案解析 #### 1. 事务隔离级别 事务隔离级别是数据库系统为了保证数据的一致性和防止并发操作引起的问题而设置的不同级别。主要有四种不同的隔离级别: - **READ UNCOMMITTED (未...

    阿里面试-Java面试八股文

    在准备阿里面试时,Java开发者需要对各个技术领域有深入的理解。以下是对提供的压缩包文件所涉及知识点的详细解读: 1. **Spring框架**: - Spring是Java企业级应用中的基石,包括依赖注入(DI)、面向切面编程(AOP)...

    Java面试基础测试题及答案

    Java是一种广泛使用的高级编程语言,它的设计目标是创建一种面向对象的、平台独立的语言,同时吸取...这些知识点涵盖了Java的基础概念,是Java面试中常见的问题,理解和掌握它们对于成为一名合格的Java开发者至关重要。

    常见的软件测试面试题及其参考答案

    命周期通常包括以下几个主要阶段: - **计划阶段**:在这个阶段,确定项目的范围、...以上就是针对软件测试面试题目的详细解答,希望这些内容能够帮助准备面试的应聘者更好地理解和掌握软件测试领域的核心知识和技术。

Global site tag (gtag.js) - Google Analytics