设计测试用例
万能公式:功能测试+性能测试+界面测试+兼容性测试+安全性测试+易用性测试
弱网测试:fiddler上行速率和下行速率
安装卸载测试
在工作中:
1.基于需求文档来设计测试用例(粗粒度)
输入字段长度为6~15位
功能测试
设计功能测试用例,参考产品规格说明书进行用例的编写,具体的测试用例需要使用黑盒设计测试用例的方法,如等价类、边界值、判定表法、正交法、场景法、错误猜测法等。
前面讲到的设计测试用例的方法,并不会关注到程序内部代码逻辑,因此前面的设计测试的方法也称为黑盒测试设计测试用例的方法
性能测试
我们使用软件的时候有时会碰到软件页面打开时越来越慢,查询数据时很长时间才显示列表,软件运行越来越慢等问题,这些问题都是系统的性能问题引起的
可靠性测试
安全性测试
易用性测试
产品使用起来更加灵活,舒适。软件产品始终关注用户体验,让用户获得舒适,易用的体验,针对软件这方面的测试称之为易用性测试。
1.标准性 2.直观性 3.灵活性 4.舒适性
按照执行方式分类
按照测试方法
白盒测试
白盒测试又称为结构测试或逻辑测试,他一般用来分析程序的内部结构,针对程序的逻辑结构来设计测试用例进行测试。
白盒测试主要分为静态测试和动态测试两种。静态测试常见于桌面检查、代码审查、代码走查、代码扫描工具
动态测试方法主要包含六种测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖
if A and B
then action1
if C or D
then action2
1.语句覆盖
语句覆盖:每个语句至少执行一次
A:T真 B:T真
C:T真 D:T真 ; C:T真 D:F假 ; C:F假 D:T真
输出用例: A:T B:T C:T D:F
2.判定覆盖
在该案例中if语句就是判定语句
if语句:既要测试为T也要测试为F
A and B T(真) F(假)
(1)A:T B:T (1)A:T B:F
(2)A:F B:F
(3)A:F B:T
C or D T(真) F(假)
(1)C:T D:T (1)C:F D:F
(2)C:T D:F
(3)C:F D:T
得出用例:
用例1:A=T B=T (T) C=T D=F(T) 满足条件都为真的情况
用例2:A=T B=F (F) C=F D=F(F) 满足条件都为假的情况
3.条件覆盖
A: T F
B: T F
C: T F
D: T F
得出用例:
用例1:A=T B=T C=T D=T
用例2:A=F B=F C=F D=F
4.判定条件覆盖
结合判定覆盖和条件覆盖来设计测试用例,用例既可以覆盖到条件,也可以覆盖到判定
5.条件组合覆盖
6.路径覆盖
判定条件定义如下:
(1) if(x>0&&y>0) 判定:记为P1
(2) if(z<0)判定:记为P2
(3) x>0:记为C1
(4) y>0:记为C2
(5) z<0:记为C3
测试用例设计:
if(x>0&&y>0) if(z<0)
数据 | C1 | C2 | C3 | P1 | P2 | 路径 |
---|---|---|---|---|---|---|
{x=3,y=3,z=-2} | T | T | T | T | T | a-b-d-f |
{x=-3,y=3,z=-2} | F | T | T | F | T | a-c-d-f |
{x=3,y=3,z=2} | T | T | F | T | F | a-b-e-f |
{x=-3,y=15,z=2} | F | T | F | F | F | a-c-e-f |
根据条件判断进行P1和P2的真假覆盖,从而进行设计测试用例
黑盒测试
登录功能
账号密码 -------> 登陆结果
(输入数据) (输出数据)
灰盒测试
结合了白盒测试和黑盒测试,但是又不完全复制
但是,灰盒测试没有白盒测试详细和完整,黑盒测试是覆盖产品范围最广的测试,因此灰盒测试基本是不能够替代黑盒测试,否则需要很大的代价,设计非常多的用例。
灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。
常见面试题:你知道的测试方法有哪些?哪种用的比较多?
常见的测试方法有黑盒测试,白盒测试和灰盒测试。开发人员主要用白盒测试和灰盒测试,测试人员主要用白盒测试和黑盒测试。对于测试人员来说,相较于白盒测试,黑盒测试用的更多一些。
测试面试的时候一定要留心眼子~~~ 话不要说得太死,存在即合理
按照测试阶段分类
单元测试
单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。至于“单元”的大小或范围,并没有一个明确的标准,“单元”可以是一个函数、方法、类、功能模块或者子系统。
单元测试通常和白盒测试联系到一起,如果单从概念上来讲两者是有区别的,不过我们通常所说的“单元测试”和“白盒测试”都认为是和代码有关系的,所以在某些语境下也通常认为这两者是同一个东西。还有一种理解方式,单元测试和白盒测试就是对开发人员所编写的代码进行测试。
最小单元,"最小单元"是人为规定的
单元测试框架 java 中junit测试框架
import java.util.Arrays;
public class BubbleSort {
public static void bubbleSort(int[] array) {
int n = array.length;
// 外层循环控制排序轮数
for (int i = 0; i < n - 1; i++) {
// 内层循环控制每轮比较次数
for (int j = 0; j < n - i - 1; j++) {
// 如果前一个元素比后一个元素大,则交换它们
if (array[j] > array[j + 1]) {
// 交换元素
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
public static void main(String[] args) {
// 排序无序数组
Test01();
// 排序有序数组
Test02();
// 排序空数组
Test03();
// 排序有重复数组数组
Test04();
}
private static void Test01() {
int[] act_array1 = {64,34,25,12,22,11,90};
int[] expect_array1 = {11,12,22,25,34,64,90};
// 排序无序数组
bubbleSort(act_array1);
boolean isSame = Arrays.equals(act_array1, expect_array1);// 判断两个数组是否相等
if(isSame == false){
System.out.println("测试不通过");
}else {
System.out.println("测试通过");
}
}
private static void Test02() {
int[] act_array2 = {1,2,3,4,5,6,7,8,9,10};
int[] expect_array2 = {1,2,3,4,5,6,7,8,9,10};
// 排序有序数组
bubbleSort(act_array2);
boolean isSame = Arrays.equals(act_array2, expect_array2);
if(isSame == false){
System.out.println("测试不通过");
}else {
System.out.println("测试通过");
}
}
private static void Test03() {
int[] act_array3 = {};
int[] expect_array3 = {};
// 排序空数组
bubbleSort(act_array3);
boolean isSame = Arrays.equals(act_array3, expect_array3);
if(isSame == false){
System.out.println("测试不通过");
}else {
System.out.println("测试通过");
}
}
private static void Test04() {
int[] act_array4 = {1,1,2,3,4,4,5,6,7,8,9,10};
int[] expect_array4 = {1,1,2,3,4,4,5,6,7,8,9,10};
// 排序有重复数组数组
bubbleSort(act_array4);
boolean isSame = Arrays.equals(act_array4, expect_array4);
if(isSame == false){
System.out.println("测试不通过");
}else {
System.out.println("测试通过");
}
}
}
集成测试
测试阶段:一般单元测试之后进行
测试对象:模块间的接口
测试人员:白盒测试工程师或者开发工程师
测试依据:单元测试的模块+概要设计文档
测试方法:黑盒测试与白盒测试相结合
测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响
系统测试
冒烟测试就是完成一个新版本的开发后,对该版本最基本的功能进行测试,保证基本的功能和流程能走通。
回归测试(Regression Test)是指在软件项目中,开发人员在修改了软件的代码以修复已经发现的bug后,测试人员在需要重新测试前面已经测试过的内容,以确认此次修改没有引入新的错误。 也就是说,回归测试的目的就是检查开发人员在修复已有bug时是否又导致了新的bug。
验收测试
验收测试标准实现软件确认要通过一系列黑盒测试。测试过程则定义一些特殊的测试用例,旨在说明软件与需求是否一致。无论是计划还是过程,都应该着重考虑软件是否满足合同规定的所有功能和性能,文档资料是否完整、准确人机界面和其他方面(例如,可移植性、兼容性、错误恢复能力和可维护性等)是否令用户满意。验收测试的结果有两种可能,一种是功能和性能指标满足软件需求说明的要求,用户可以接受;另一种是软件不满足软件需求说明的要求,用户无法接受。
按照是否手工测试
手工测试
手工测试就是由人去一个一个的输入用例,然后观察结果,和机器测试相对应,属于比较原始但是必须的一个步骤。
自动化测试
是一个统称
就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。简单说自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。自动化测试比如功能测试自动化、性能测试自动化、安全测试自动化。自动化测试按照测试对象来分,还可以分为接口测试、UI测试等。接口测试的ROI(产出投入比)要比UI测试高。(这里了解一下,等到将自动化的时候再详细展开)
自动化测试和手工测试优缺点
自动化测试 | 手工测试 | |
---|---|---|
优点 | 节省成本 提高测试人员执行工作效率 保障软件的质量 | 对测试人员技术要求没有自动化技术要求高 可以进行发散性测试 |
缺点 | 对测试人员技术要求较高 不能发散性测试 | 效率低 人员、时间成本比起自动化测试都比较高 |
按照实施组织划分
大型通用软件,在正式发布前,通常需要执行**Alpha和Beta测试**
α测试(Alpha 测试 )
内测,通常是公司内部的用户在模拟实际操作环境下进行的测试。目的是评价软件产品的FLURPS(即功能、可使用性、可靠性、性能和支持)。α测试不能由程序员或测试员完成。
β测试(beta测试)
β测试又叫公测或者b测
β测试由软件的最终用户们在一个或多个场所进行,这里就可以理解为,β测试是正式用户中的一部分,他们在任意的场合来使用软件,目的是为了发现软件是否在一系列的问题
通常会发送一些邀请码,来邀请用户参与项目测试