单元测试-001初探

1.单元测试初探是什么,能解决什么问题 逻辑测试  性能测试  异步测试   UI测试  自动化测试

UnitTest—— 一个一个单元 进行 测试 (单元化:测试)

驱动:TDD 测试驱动代码  SDK 接口 功能测试

回归测试后面的功能可能会影响之前的功能

单元测试 10 * 5/60 * 100 = 5m; (时间)< 回归测试

 

软件测试

 

                    1. 测试方法 -> 1.1静态VS动态测试

                                               1.2盒子方法:1.2.1白盒测试

                                                                        12.2黑盒测试  ->   1.2.2.1可视化测试

                                                                        12.3灰盒测试

                    2.测试水平  -> 2.1单元测试

                                               2.2集成测试

                                               2.3组件接口测试

                                               2.4系统测试

                    3.测试类型,技术与策略

                                               3.1回归测试

                                               3.2Alpha测试

                                               3.3Beta测试

                                               3.4持续测试  -> 3.4.1 自动化

                                               3.5性能测试

 

                                                                                                          3.6.1.1异步测试

                                               3.6开发测试 ->  3.6.1 单元测试 -> 3.6.2性能测试

                                                                            3.6.3 UI测试          3.6.1.2 OCMock

                                                3.7 A/B

 

黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。功能测试

白盒测试:已知产品的内部工作过程,可以进行测试证明每种内部操作是否符合设计规格要求,所有内部成分是否做过检查。测试程序接口与结构

灰盒测试:灰盒测试,确实是介于二者之间的,可以这样理解,灰盒测试关注输出对于输入的正确性同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。

灰盒测试结合了白盒测试和黑盒测试的要素。它考虑了用户端、特定的系统知识和操作环境。它在系统组件的协同性环境中评价应用软件的设计。

灰盒测试由方法和工具组成,这些方法和工具取材于应用程序的内部知识和与之交互的环境,能够用于黑盒测试以增强测试效率、错误发现和错误分析的效率。

灰盒测试涉及输入和输出,但使用关于代码和程序操作等通常在测试人员视野之外的信息设计测试。

 

第一认识

黑盒测试

测试特点:测试功能;测试依据:需求说明书  方法举例:等价类划分,边界值测试

优缺点:能站在用户的立场上进行测试;不能测试程序内部特定部位,如程序有误,则无法发现

白盒测试

测试特点:测试程序接口与结构;测试依据:软件程序 方法举例:逻辑覆盖

优缺点:对程序内部特定部位进行覆盖测试,无法检验外部特性

第二认识

黑盒测试把程序看作一个不能打开的黑盒子在完全不考虑程序内部结构和内部特性的情况下,针对“软件界面”和”软件功能“进行测试,只检查功能是否符合需求规格说明书能正常使用。因此黑盒测试又叫功能测试或数据驱动测试

白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看作一个打开的盒子,他允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例对程序所有逻辑路径进行测试通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试逻辑驱动测试。白盒测试是按照程序内部的结构来测试程序,通过测试检验产品内部动作是否按照设计规格说明书的要求正常进行,检验程序中的每条通道是否都按照规定正常工作。

第三认识

黑盒测试主要是为了发现以下错误:

    1>是否有不正确或者遗漏了的功能 

    2>在接口上,输入能否正确的接受?能否输出正确的结果?

    3>是否有数据结构错误或外部信息(例如数据库文件)访问错误?

    4>性能上能否满足要求

    5>是否有初始化或终止性错误

黑盒的测试用例技术设计有三种:  边界值分析、等价类划分、错误推测法

 白盒测试主要是想对程序模块进行以下检查

    1>对程序模块的所有独立的执行路径至少测试一遍

    2>对所有的逻辑判定,取的两种情况都能至少测一遍;

    3>在循环的边界和运行的界限内执行循环体

    4>测试内部数据结构的有效性,等等

    5>静态白盒测试  :即代码审查,正式审查和检验设计和程序代码

    6>动态白盒测试 利用查看代码功能和实现方式得到的信息来设计和执行测试,也叫结构测试

 白盒的测试用例技术包括逻辑覆盖和基本路径测试。

  逻辑覆盖:是以程序内在逻辑结构为基础的测试用例设计技术,这一方法要求测试人员对程序的逻辑结构有清楚的了解。

 基本路径测试:在程序控制流程图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例

以上事实说明,软件测试有一个致命的缺陷,即测试的不完全、不彻底性。由于任何程序只能进行少量(相对于穷举的巨大数量而言)的有限的测试,在未发现错误时,不能说明程序中没有错误

单元测试快捷键:Command + U

测试代码覆盖率测试代码占总代吗的覆盖率

绿色:通过测试

 

红色:不通过

001-单元测试

准备+配置:选中工程名->File->New->Target , 选择 Test-> iOS Unit Testing Bundle

查看测试代码覆盖率 Build -> Coverage

 

演示001-XCTest:

//代码执行顺序:
/**
 * 初始化->testExample->销毁,清除
   初始化->性能测试->销毁,清除
 */
- (void)setUp {
    [super setUp];
    NSLog(@"初始化");
}
- (void)tearDown {
    [super tearDown];
    NSLog(@"销毁,清除");
}
- (void)testExample {
    NSLog(@"testExample");
}
- (void)testPerformanceExample {
    NSLog(@"性能测试");
    [self measureBlock:^{
    }];
}

注意:方法名必须加test,否则不执行, 为内部方法

//报错:

演示002-测试逻辑XCTAssertEqual

-(int)getPlus:(int)num1 num2:(int)num2 {
    return num1 + num2 + 10;
}

演示003-性能测试:testPerformanceExample


    //Time: 0.566 sec (93327630% worse) 平均时间
    //Time standard deviation is 24% (max allowed: 10%).时间标准偏差为24%(允许的最大值:10%)
    //性能测试 : 强
    //参照物  baseline Average:0.586  BaseLineVS 0.888

演示004-异步测试:testAsyExample

/**
 * 异步测试
 */
- (void)testAsyExample {
    XCTestExpectation * exp = [self expectationWithDescription:@"如果不在我预期,我就挂掉了"];
    [self.vc loadData:^(id data) {
        XCTAssertNotNil(data,@"挂掉了");
        [exp fulfill];
    }];
    [self waitForExpectationsWithTimeout:1.5 handler:^(NSError * _Nullable error) {
        NSLog(@"error:%@",error.userInfo);
    }];
}

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2018-07-09 13:11  淡然微笑_Steven  阅读(186)  评论(0编辑  收藏  举报