软件测试基础--02

1. 软件测试的常识知识

 1.1. 测试部门的组织结构

软件测试基础--02

软件测试基础--02

1.2. 软件测试和SQA的关系

1.1.1. 什么是SQA

软件测试基础--02 

1.1.2. SQA与测试

 软件测试基础--02

1.3. 软件测试的一些基本原则:

1.1.3. 不要试图穷举测试

穷举测试指的是测试时考虑所有可能的输入值,测试出优秀的测试用例,用最少的测试用例达到最高的覆盖率

 软件测试基础--02

 

 1.1.4. 软件测试要尽早执行

 

1.1.5. 软件测试应该追溯需求

 软件测试基础--02

 1.1.6. 缺陷的二八定理

80%的缺陷集中在20%的模块中,测试人员要抓主要矛盾。

 2. 软件测试工具

软件测试工具是通过一些工具能够使软件的一些简单问题直观的显示,使测试人员更好的找出软件错误所在。

软件测试工具分为自动化软件测试工具测试管理(禅道)工具。

软件测试工具存在的价值是为了提高测试效率,用软件来代替一些人工输入。

测试管理工具是为了复用测试用例,提高软件测试的价值。

一个好的软件测试工具和测试管理工具结合起来使用将会使软件测试效率大大的提高。

 软件测试基础--02

1.1.7. WinRunner

Winrunner 最主要的功能是自动重复执行某一固定的测试过程,它以脚本的形式记录下手工测试的一系列操作,在环境相同的情况下重放,检查其在相同的环境中有无异常的现象或与预期结果不符的地方。可以减少由于人为因素造成结果错误,同时也可以节省测试人员大量测试时间和精力来做别的事情。功能模块主要包括:GUI map、检查点、TSL 脚本编程、批量测试、数据驱动等几部分

1.1.8. LoadRunner

商业化-挣钱 性能测试工具 响应时间,CPU,内存,吞吐量....

LoadRunner® 是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使LoadRunner ,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。LoadRunner 是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。LoadRunner 的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。此外,还能支持广范的协议和技术,为您的特殊环境提供特殊的解决方案

 

1.1.9. QTP

QTP是一个B/S系统的自动化功能测试的利器,软件程序测试工具。Mercury的自动化功能测试软件QuickTest Professional ,可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。Mercury QuickTest Pro 是一款先进的自动化测试解决方案,用于创建功能和回归测试。它自动捕获、验证和重放用户的交互行为。 Mercury QuickTest Pro为每一个重要软件应用和环境提供功能和回归测试自动化的行业最佳解决方案。

1.1.10. TestDirector

测试管理工具

基于WEB的测试管理工具,他能够让你系统地控制整个测试过程,并创建整个测试工作流的框架和基础,使整个测试管理过程变得更为简单和有组织。他能够帮助你维护一个测试工程数据库,并且能够覆盖你的应用程序功能性的各个方面。T并且还为你提供了直观和有效的方式来计划和执行测试集、收集测试结果并分析数据。还专门提供了一个完善的缺陷跟踪系统。并可以同Mercury公司的测试工具、第三方或者自主开发的测试工具、需求和配置管理工具、建模工具的整合功能。你可以通过他进行需求定义、测试计划、测试执行和缺陷跟踪,即整个测试过程的各个阶段

 

1.1.11. Selenium

自动化测试工具 支持java python的脚本 python

   自动化--写好脚本,运行脚本,自己执行,自己出测试报告,自己发送到测试和开发邮箱

80%bug 手动测试出来

Selenium是为正在蓬勃发展的web应用开发的一套完整的测试系统。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。它的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建衰退测试检验软件功能和用户需求。支持自动录制动作和自动生成。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可运行于任何支持JavaScript的浏览器上,包括IEMozilla FirefoxChromeSafari

1.1.12. Appium

自动化测试工具,androidios软件 手机App app

Appium是一个开源、跨平台的,适用于原生或混合移动应用(hybrid mobile apps)的自动化测试平台。Appium使用WebDriver(JSON wire protocol)驱动安卓和iOS移动应用.Appium的设计哲学是不要为了移动端的自动化测试而重新发明*,重新写一套惊天动地的api,也就是说webdriver协议里的api已经够好了,拿来改进一下就可以了另外Appium可以把server放在任意机器上,哪怕是云服务器都可以,所以Appium和WebDriver天生适合做云测试。

1.1.13. Jmeter

开源,免费,简单,易操作。 开源组织,支持脚本录制,支持抓包测试,支持测试移动端软件

压力和负载测试

 

1.1.14. PostMan

接口测试,测试接口的压力,接口是否规范,登录:用户名,密码 接口是否安全 加密

 

2.1. 抓包和接口测试

Charlesfiddler 抓包工具

抓浏览器,抓手机APP请求

 

Android--抓包-今日头条

3. 单元测试

 

3.1. 单元测试概念

单元测试是对软件基本组成单元的测试。

在传统的结构化编程语言如C语言中,单元一般是模块,也就是函数或子过程;

在象C++中, 单元是类或类的方法;

Ada语言中,单元可为独立的过程、函数或Ada包;

在第四代语言(4GL)中,单元对应为一个菜单或显示界面。

多个被测模块之间的单元测试可同时进行,以提高单元测试效率。

单元测试一般应该由编程人员完成,有时测试人员也加入进来,但编程人员仍会起到主要作用。

单元测试的依据是软件的详细设计描述、源程序清单、编码标准等。

 3.2. 单元测试目的

验证代码能否达到详细设计的预期要求。

发现代码中不符合编码规范的地方。

准确定位发现的错误,以便排除错误。

3.3. 单元测试的优点

由于单元测试是在编码过程中进行的,若发现了一个错误,不管是从做回归测试的角度,还是对错误原因理解的深刻性的角度,修复错误的成本远小于集成测试阶段,更是小于系统测试阶段。

在编码的过程中考虑单元测试问题,有助于编程人员养成良好的编程习惯,提高源代码质量。

 3.4. 单元测试的测试方法

 Java junit测试

Python unittest测试 ---白盒测试

在单元测试阶段,应使用白盒测试方法和黑盒测试方法对被测单元进行测试,其中以使用白盒方法为主。

在单元测试阶段以使用白盒测试方法为主,是指在单元测试阶段,白盒测试消耗的时间、人力、物力等成本一般会大于黑盒测试的成本。

3.5. 单元测试的步骤

单元测试的实施应遵循一定的步骤,力争做到有计划、可重用。

单元测试的步骤如下:

① 计划单元测试

② 设计单元测试

③ 实现单元测试

④ 执行单元测试

⑤ 单元测试结果分析并提交测试报告

3.6. 单元测试的环境构成

 在单元测试时,如果模块不是独立的程序,需要辅助测试模块,有两种辅助模块:

驱动模块(Driver

桩模块(Stub

 软件测试基础--02

3.7. 单元测试环境

驱动模块(Driver

用来代替被测单元的上层模块的。驱动模块能接收测试数据,调用被测单元,也就是将数据传递给被测单元,最后打印测试的执行结果。可将驱动模块理解为被测单元的主程序。

桩模块(Stub

又称为存根模块,它用来代替被测单元的子模块。设计桩模块的目的是模拟实现被测单元的接口。桩模块不需要包括子模块的全部功能,但应做少量的数据操作,并打印接口处的信息。

人们在进行单元测试时尽量避免开发驱动模块和桩模块。尤其应避免开发桩模块,因为驱动模块开发的工作量一般少于桩模块。

若采用自底向上的方式进行开发,底层的单元先开发并先测试,可以避免开发桩模块,采用这种方法测试上层单元时,也是对下层单元的间接测试,但当下层单元被改动后,则需要执行回归测试判断其上层单元是否需要修改。

当不得不开发驱动模块及桩模块时,人们力求它们的简单以提高工作效率。但过于简单的驱动模块和桩模块会影响单元测试的有效性,因而,对被测单元的彻底测试有时会被推迟到集成测试阶段完成。

3.8. 单元测试用例设计

单元测试的内容

单元测试的对象是软件设计的最小单位——模块或函数,单元测试的依据是详细设计描述。

 软件测试基础--02

4. Junit 4.x——Java单元测试框架

开源的Java测试框架,主要用于白盒测试、回归测试;Junit 4.x 版本中引入了注解(Annotation)来执行单元测试。Eclipse中已经带有Junit4

 软件测试基础--02

软件测试基础--02

开源的Java测试框架,主要用于白盒测试、回归测试;Junit 4.x 版本中引入了注解(Annotation)来执行单元测试。Eclipse中已经带有Junit4

4.1. 创建Junit项目

 软件测试基础--02

软件测试基础--02 

4.2. 创建计算器类

 软件测试基础--02

 

4.3. 执行入门JUnit测试

1.1.15. 创建测试类,编写测试代码

 软件测试基础--02

软件测试基础--02

1.1.16. 测试通过

软件测试基础--02

4.4. Before After Test标签的应用

1.1.17. 代码效果

 软件测试基础--02

1.1.18. 测试结果

 软件测试基础--02

4.5. 断言用法

 软件测试基础--02

 

对于断言,如果断定的正确运行通过,绿条

如果断定的不正确,红条

 

4.6. 其他特殊场景

 

1.1.19. 异常预测测试

 软件测试基础--02


软件测试基础--02 

1.1.20. tmeout 超时关闭

 另外一个test 用法,@Test(timeout=毫秒),如果一个方法里有循环,在这里可以设置超时时间,限制它多长时间关闭。  

 软件测试基础--02

 1.1.21. Ignore注解

软件测试基础--02

 

4.7. 创建测试组(测试一堆)

 软件测试基础--02

 

 软件测试基础--02


软件测试基础--02 

 软件测试基础--02

 软件测试基础--02