题型:
选择:10*2=20
判断:5*2=10
简答:4*10=40
应用:3*10=30
<1>单个用例覆盖最小化原则。测试用例的调试、分析和维护成本最低。每个测试用例应该尽可能的简单,只验证你所要验证的内容
<2>测试用例替代产品文档功能原则。用产品代码和测试用例准确地描述产品的功能,
<3>单次投入成本和多次投入成本原则。。对成本的考虑应该客观和全面地体现在测试的设计、执行和维护的各个阶段。
<4>使测试结果分析和调试最简单化原则。在编写自动化测试代码时,要重点考虑如何使得测试结果分析和测试调更简单。
自顶向下的优点:可在测试早期实现并验证系统主要功能;不需要驱动模块。
自底向上的优点:设计测试用例容易;不需要桩模块。
自顶向下的缺点:失去了在特定的测试和组装特定的模块间的精确对应关系;需要stub模块。
自底向上的缺点:只有到最后程序才能作为一个整体。
1):问题的定义及规划: 此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。
2):需求分析: 在确定软件开发可行的情况下,对软件需要实现的各功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。
3):软件设计: 此阶段主要根据需求分析的结果,把整个软件系统划分为大大小小的多个模块,设计出每一个模块的具体结构。如系统框架设计,数据库设计等。软件设计一般分为总体设计和详细设计。
4):程序编码: 此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。
5):软件测试: 在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试(白盒)、集成测试(黑盒,功能测试、强度性能测试)以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。
6):运行维护: 安装部署软件系统,修复软件中存在的bug和升级系统。在软件开发完成并投入使后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。
简答题
1.白盒测试和黑盒测试
黑盒测试方法( blake-box testing),是把程序看作一个不能打开的黑盒子,不考虑程序内部结构和内部特性,而是考察数据的输入、条件限制和数据输出,完成测试。黑盒测试方法,是根据用户的需求和已经定义好的产品规格,针对程序接口和用户界面进行测试,检验程序是否能适当地接收输人数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要运用于单元的功能和性能方面的测试,以检验程序的真正行为,是否与产品规格说明、客户的需求保持一致。
黑盒测试方法的具体方法有等价类划分方法、边界值分析、因果分析、决策表方法、正交实验设计方法等。
白盒测试方法( white-box testing), 也称结构测试或逻辑驱动测试。白盒测试方法是根据模块内部结构了解,基于内部逻辑结构,针对程序语句、路径、变量状态等来进行测试,检验程序中的各个分支条件是否得到满足,每条执行路径是否按预定要求正确地工作。例如,对程序代码的条件和分支一目了然,就可以通过设计测试用例,使测试经过每个条件和分支。对于函数或子程序,可以进行逻辑分析,但对于一个复杂的软件系统 (可能是几十万行或儿百万行代码),根本不可能全面地完成逻辑分析,所以白盒测试方法非常适合进行单元测试。白盒测试方法就是清楚被测软件的内部结构:程序逻辑等之后,对代码进行全面的逻辑分析之后进行准确定位、有效地测试。因为白盒测试方法是通过逻辑分析来完成的,所以也被称为逻辑驱动测试方法。
白盒测试的主要方法有逻辑覆盖、分支覆盖、条件组合覆盖、基本路径测试等。
2.自动化测试vs手动测试
自动化测试
含义:是靠系统或测试工具自动执行测试的过程,包括输入数据自动生成、结果的检验、自动发送测试报告等。
优点:有助于提高软件开发效率,缩短开发周期,节省人力资源。
特点:自动运行的速度快;测试结果准确;高复用性;永不疲劳;可靠;能力
缺点:机器执行测试用例是按部就班进行的,没有变通的余地,没有创造力。
手工测试
含义:就是指靠测试人员不借助测试工具,靠手工一步一步执行测试用例,并人为的判断测试结果对不对。
优点:人具有创造性,容易受到前面操作或结果的启发,能举一反三,从一个测试用例想到其他一些测试场景,发现更多的问题。
缺点:
1.许多与时序、死锁、资源冲突,多线程等有关的错误通过手工测试很难捕捉到,更难以测定测试的覆盖率。
2.如果让手工做重复的测试,容易引起测试人员的乏味,严重影响工作情绪等。
3.特别在性能测试、压力测试之中,需要模拟大量并发用户。没有测试工具的帮助是无法想象的
4.在回归测试中,多数情况下时间很紧,希望一天能完成几千、几万个测试用例的执行。即使让测试人员通宵达日地工作,也无法完成。
3.单元测试、集成测试、系统测试的侧重点
单元测试:系统模块,包括子程序的正确性验证
集成测试:模块间的衔接,参数的传递
系统测试:整个系统的运行以及与其他软件的兼容性
4.软件生命周期模式 P14( v模型)
5.边界值分析法 (定义)
6.静态测试vs动态测试
静态测试主要活动是评审,即通过对需求、设计、配置、程序和其他各类文档的审查来检验相应内容是否满足用户的需求。不需要运行程序,测试对象属于静态的。
动态测试是通过运行程序来发现软件系统中的问题。这种测试是在程序运行过程中将缺陷发现出来,具有动态性,所以称为动态测试。
7.为什么没有错误的单元模块还要进行集成测试(集成测试的重要性和必要性)
所有的软件项目都不能摆脱系统集成这个阶段。不管采用什么开发模式,具体的开发工作总得从一个一个的软件单元做起,软件单元只有经过集成才能形成一个有机的整体。具体的集成过程可能是显性的也可能是隐性的。只要有集成,总是会出现一些常见问题,工程实践中,几乎不存在软件单元组装过程中不出任何问题的情况。集成测试的必要性还在于一些模块虽然能够单独地工作,但并不能保证连接起来也能正常工作。程序在某些局部反映不出来的问题,有可能在全局上会暴露出来,影响功能的实现。此外,在某些开发模式中,如迭代式开发,设计和实现是迭代进行的。这种情况下,集成测试的意义还在于它能间接地验证概要设计是否具有可行性。
8.软件测试的目的
1.验证软件是否满足软件开发合同或项目开发计划、系统设计文档、软件需求规格说明、软件设计说明和软件产品说明等规定的软件质量需求。
2.通过测试发现软件缺陷
3.为软件产品的质量测量和评价提供依据
4.测试的目的是发现尽可能多的缺陷,而不是证明“软件没有问题”。成功的测试在于发现了迄今为止尚未发现的缺陷。测试人员的职责是设计测试用例来有效地揭示潜伏在软件里的缺陷。
9. 为什么软件测试仅仅在于发现而不在于改正
一个软件的成型和从业者的角色密不可分,软件测试者最主要的工作是提前发现软件中的种种缺陷,发现的问题提交给开发者来进行问题定位及修正,这样的分工才让这个工作流程更加便捷,毕竟术业有专攻.从这个层面上来说软件测试的目的简单的说是发现软件中的缺陷,专业的说是质量保证,只有通过测试人员的认可这个软件才可以上市或者发布.
如果从测试驱动开发的层面来说,测试人员不仅仅只是发现问题就了之了这么简单,测试人员要对发现的缺陷问题进行分类汇总分析及问题的初步定位,帮助开发人员更好的了解开发的软件本身的优势及缺陷,开发人员会根据测试数据分析合适的调整开发适配方案,从整个软件开发进程上说不定会少走很多弯路.
10. 若成为好的软件测试者,需要有什么品质
有扎实的基础知识,良好的编码能力;
很好的开发水平;
具有自觉的规范意识和团队精神;
具有一定的沟通能力;
有开放性的灵活头脑;
具有求知欲和进取心;