`
ihuashao
  • 浏览: 4533717 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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

阅读更多

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


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)是对测试活动的事先策划,包括确定测试范围、估算测试工作量、识别测试风险、安排资源和进度等。测试计划指导测试用例的设计和测试套件的创建,测试套件是由测试用例构成。测试计划的实施需要借助测试用例、测试套件来实现。

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


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

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

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


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

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


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

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

当然,还有一些具体的知识或能力,如工具(Jmeter, Selenium, QTP, LoadRunner)的使用, CMM/CMMI, ISO9000等等。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics