郑重声明:本文纯属个人见解,不保证内容正确无误,仅供参考,欢迎拍砖。
参考文献:《软件测试原理与实践》 印度 Srinivasan Desikan ,Gopalaswamy Ramesh
写作目的: 3月份,群硕招测试实习生,去年参加中地数码的招聘会,都有测试的笔试题。据说,群硕测试笔试题是全英文的,
题目也大多是关于测试的。大鹏展翅和最后的刺客 两位同学,都通过了笔试,只可惜面试,折戟沉沙啊!以前也
没有专门看过测试方面的书籍,只有一点了解,因为心虚,所以从图书馆借了一本书,看了2个周,总结分享一下。
另外,今天在教三2楼会议室签纸质协议时,又提到暑期培训时,也有测试方面的培训,所以了解测试是必须的啊。
软件测试:
测试类型:(从更接近代码到更接近用户的顺序排列)
a.白盒测试
每个软件产品都是通过程序代码实现的,白盒测试是一种通过考察并测试实现外部功能的程序代码,测试代码 的外部 功能的一种方法。
白盒测试分为静态测试和结构测试。
静态测试只要求提供产品的源代码,不要求提供二进制代码或可执行程序。
静态测试不在计算机上执行程序,而是由人阅读代码,以确定:
1.代码是否能满足功能需求;
2.代码是否与项目生存周期初期开发的设计一致;
3.是否遗漏功能代码;
4.代码是否恰当地处理错误。
静态测试可以人工完成,也可以借助专门的工具。
静态测试的方法:桌面检查、代码走查、代码审查。
结构测试要考虑代码、代码的结构、内部设计以及设计是如何转换为代码的。
结构测试需要采用一些预先设计的测试用例运行实际产品,考察尽可能多或有必要执行的代码。如果在运行测试用例时,测试用
例使程序执行给定部分的代码,那么这部分代码被认为是经过考察的。
结构测试可以进一步分为单元/代码功能测试、代码覆盖和代码复杂度测试。
白盒测试中的挑战。白盒测试要求测试人员具有很好的程序代码和程序设计语言知识。这意味着开发人员要密切参与白盒测试。
1.由于人的本性,开发人员不能发现自己代码中的缺陷。
2.在现实中可能很难进行完全的代码测试。
b.黑盒测试
黑盒测试使用规格说明,不要求考察程序代码。黑盒测试以客户的视点进行,进行黑盒测试的测试工程师只知道输入值集和输 出,不知道这些输入是如何被转化为输出的。因此,黑盒测试要求有关被测试产品的功能知识,不一定了解系统的内部逻辑,也不
一定了解构建该产品所使用的程序设计语言。
黑盒测试技术:
1.基于需求的测试
确认软件系统的软件需求规格说明(SRS)给出的需求。
2.正面测试和负面测试
正面测试视图证明给定产品可以完成所期望完成的工作。
负面测试展示当输入非预期输入时产品没有失败。
3.边界值分析
这是能够有效捕获出现在边界处的缺陷的一种测试方法。
针对白盒测试讨论的边界值分析也适用于白盒测试。像数组、堆栈和队列这样的内部数据结构也需要检查边界或极限条件。如 果内部使用了链表结构,那么就应该彻底测试链表开始和结尾的行为。
4.决策表
5.等效类划分
等级划分是一种软件测试技术,用于确定少量能够产生尽可能多的不同输出条件的有代表性的输入值。
这种方法可以减少用于测试的输入、输出值的排列组合,从而提高覆盖率,降低测试工作量。
6.基于状态的测试
基于状态或图的测试对于以下情况非常有用:
a.被测产品是一个语言处理器(例如编译器),语言的句法自动构造一个状态机,或一种有轨道图表示 的与上下文无关的语法。
b.工作流建模,根据当前状态和合适的输入变量组合,执行具体的工作流,产生新的输出和新的状态。
c.数据流建模,系统建模为一组数据流,从一个状态转换到另一个状态。
7.兼容性测试
兼容性测试确保产品能够在不同的基础设施组件上正常运行。
8.用户文档测试
用户文档包括所有手册、用户指南、安装指南、设置指南、产品说明等。
9.领域测试
白盒测试要求检查程序代码,黑盒测试执行测试时不需要检查程序代码,而要检查规格说明。
领域测试可以看作是下一个测试,甚至不需要检查软件产品的规格说明,纯粹根据应用领域专门知识和经验测试产品。
这种测试方法要对软件所针对的日常业务活动有很好的理解,要求业务领域知识而不是
软件规格说明包含了什么,或软件是怎样编写的。因此,领域测试可以看作是黑盒测试的扩展。
c.集成测试
系统可以由包括硬件和软件的多个组件或模块组成的。集成定义为组件之间的交互。测试模块之间以及与其他外部系统交互的集成叫做集 成测试。
集成测试的顺序:自顶向下集成、自底向上集成、双向集成、系统集成。
d.系统测试和确认测试
系统测试是对完整集成后的系统进行测试的阶段,用来评价系统对具体需求规格说明的符合性。系统测试在单元、组件和集成测试阶段之 后进行。系统测试是既测试产品的功能也测试非功能的唯一测试阶段。
对于功能测试,系统测试更关注实际客户对系统和解决方案的使用。
对于非功能方面,系统测试有不同的测试类型(又叫做质量因素),包括:
1.性能/负载测试
2.可伸缩性测试
3.可靠性测试
4.压力测试
5.互操作测试
6.本地化测试
e.性能测试
性能测试的目的是保证产品:
1.在给定的时间段内处理所需的事务数(吞吐率);
2.可以在不同的负载条件下运行(可用性);
3.对于不同的负载条件响应足够快(响应时间);
4.有不错的资源(包括硬件的软件)投入回报,确定不同的负载条件产品所需的资源种类(能力策划)。
性能测试方法包含以下步骤:
1.收集需求;
2.编写测试用例;
3.自动化性能测试用例;
4.执行性能测试用例;
5.分析性能测试结果;
6.性能调谐;
7.性能基准测试;
8.向客户推荐合适的配置。
f.回归测试
软件在不断修改。这些修改是必要的,因为要改正缺陷,要增强现有功能,要增加新的功能,任何时候做这种修改时,重要的是要保证:
1.按照设计进行修改或补充;
2.修改或补充不能对已经有效的内容造成破坏,而且继续有效。
g.国际化测试
软件产品需要适应不同的国家和语言。
h.即兴测试
即兴测试通过直觉、以前使用产品的经验、平台或技术方面的专业知识以及测试类似产品的经验,探索产品未被发现的区域。即兴测试一般用于发现计划测试没有发现的缺陷。即兴测试不使用任何测试用例技术,例如等价类划分、边界值分析。
特殊的测试:
a.面向对象系统的测试
b.可使用性与易获得性测试
以用户视点确认产品的易用性、速度和美感的测试叫做可使用性测试。
测试阶段:
a.单元测试 b.集成测试 c.系统测试 d.确认测试