测试在项目开发中是至关重要的一环,大公司一般会有测试小组,专门进行各种测试;一些小的公司可能没有测试组,这时程序猿自身测试就显得尤为重要了,这里就讲下单元测试即 Unit Tests。

1.什么是软件测试、单元测试

具体概念这里可以到 维基百科英文版
这里写图片描述

2.一般在创建项目时会勾选 Include Unit Tests

点击 UnitTestTests.m ,可看到测试相应的方法

- (void)setUp {
    [super setUp];
    // Put setup code here. This method is called before the invocation of each test method in the class.
    // 1.重置对象,为测试条件做准备
// 每次测试方法执行的时候都会跑
- (void)tearDown {
    // Put teardown code here. This method is called after the invocation of each test method in the class.
    // 2.置空    
    [super tearDown];
// 测试代码
- (void)testExample {

查看详细的每个测试方法测试情况在这里方便查看
这里写图片描述

3.举个单元测试的例子

我们在viewController.m里面创建一个方法,就是简单的两个数相加

- (int)add:(int)numberA with:(int)numberB
    return numberA + numberB;

注意:这里需要在viewController.h 声明一下这个方法,因为在测试的时候要导入viewController.m头文件,才能调用并测试里面的方法。

- (int)add:(int)numberA with:(int)numberB;

现在我们到UnitTestTests 去测试这个方法

// 1. Given:初始条件设置
int num1 = 1;
int num2 = 2;
// 2. When:被测试的一些方法
int result = [self.vc add:num1 with:num2];
// 3. Then:测试判断结果
XCTAssertEqual(result, 3);

注意:这里要使用断言来判断结果是否正确,不然这个测试就没有意义了,因为你也不知道测试的结果是否正确。断言在XCTestAssertions.h里面有,介绍的很详细。

下面再测试一个超时功能,在viewController类里,同上:

- (void)sendRequest:(void(^)(NSString *targetString))finished
    dispatch_queue_t globle = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_async(globle, ^{
        [NSThread sleepForTimeInterval:3];
        dispatch_async(dispatch_get_main_queue(), ^{
            finished(@"完成");
- (void)testTimeOut {
    XCTestExpectation *expectation = [self   expectationWithDescription:@"Async test was failed"];
    [self.vc sendRequest:^(NSString *targetString) {
        // 1.传回来的的值是否正确,是否存在
        XCTAssertNotNil(targetString);
        // 2.是否按时传回(履行,执行)
        [expectation fulfill];
    // 如果走了 [expectation fulfill] 方法就不会再走下面的方法了,说明已经按时返回了。
// 我们可以看到如果这个时间小于3秒的话,就会报错
    [self waitForExpectationsWithTimeout:5 handler:^(NSError * _Nullable error) {
        NSLog(@"%@",error);

注意:写测试方法时,只要在方法名前缀test就可以,Xcode会识别这个方法是测试方法。

4.性能测试

同样在UnitTestTests 里面,你还会看到这个方法,这里就是代码性能测试的地方。

- (void)testPerformanceExample {
    [self measureBlock:^{
        // Put the code you want to measure the time of here.
        // code
// 性能测试提高精度,只测试一部分代码
- (void)testUseFileHandlePerformance
    [self measureMetrics:@[XCTPerformanceMetric_WallClockTime] automaticallyStartMeasuring:NO forBlock:^{
        // 只测试一部分功能代码
        [self startMeasuring];
        // code
        [self stopMeasuring];        

查看性能测试结果:
这里写图片描述
这里写图片描述

我们看到代码执行 ,Metric:时间作为性能的指标; Average:表示平均时间;Baseline:表示你设置一个基线;Result:是指平均时间和你是设置的基线进行比较后得出的结果,百分比表示的;max STDDEV :表示标准偏差 10%。

我们做单元测试,不要把测试方法写的很复杂,也不要把一个庞大的功能一下子拿过来测试,最好是分成如干个小功能进行测试,不然单元测试就变得复杂了,很多人就是因此放弃写单元测试,其实单元测试是很有用的。

Demo下载地址 https://github.com/MichaelSSY/UITest-UnitTest

测试在项目开发中是至关重要的一环,大公司一般会有测试小组,专门进行各种测试;一些小的公司可能没有测试组,这时程序猿自身测试就显得尤为重要了,这里就讲下单元测试即 Unit Tests。1.什么是软件测试、单元测试具体概念这里可以到维基百科英文版 2.一般在创建项目时会勾选 Include Unit Tests点击UnitTestTests.m,可看到测试相应的方法...
原文 简书 看到文章标题的时候,你也许会问,测试不是测试妹子干的事吗?的确,测试妹子能帮助我们测试出软件的很多问题(不符合业务的问题),但是代码的测试还得靠我们自己啊。因此,代码自测也变成了一个项目重要的一环。是的,今天我要聊的就是我们程序员对自己代码的测试,而不是测试妹子的测试。在iOS开发中我们用单元测试来保证我们的代码可靠性,什么是单元测试,请看在维基百科上的解释: 在计算机编程中,...
iOS 单元测试--逻辑测试 这篇文章的基础上,来介绍性能测试。直接在单元测试文件PersonTests.m里进行如下操作: 1.找到系统为我们提供的性能测试的方法,此方法可以测试出一个方法运行过程的耗时时间, - (void)test
导读:本文不讨论单元测试是什么,或者它之于一个工程的利弊,我认为单元测试是一个开发者保证产出代码质量的有效工具。本文从使用者的角度对比当下比较流行的两款单元测试框架,给大家提供一些选用建议。如果你还不甚了解单元测试在工程中所起到的作用,或者还不知道TDD的开发模式,可参考:Test-DrivenDevelopment和UnitTesting。本文对比两个iOS开发中常见的单元测试框架:OCUnit,被官方集成进XCode4.x版本中;GHUnit,被推荐最多的测试框架,带GUI界面。初窥两款测试框架非常相似,而上手使用就会发现其中的区别。细节上的区别使两款框架在不同角度各有优劣。OCUnit
开发程序其中很重要的一点是测试,我们如何保证代码的质量,如何保证每个函数是可运行,运行结果是正确的,又如何保证写出来的代码性能是好的,我们知道单元测试的重点在于发现程序设计或实现的逻辑错误,使问题及早暴露,便于问题的定位解决,而性能测试的重点在于发现程序设计上的一些问题,让线上的程序能够在高并发的情况下还能保持稳定。本小节将带着这一连串的问题来讲解Go语言中如何来实现单元测试性能测试
此文适合初级测试工程师观看!版本迭代时,一些性能测试数据需要测试,比如:启动时间,启动流量,使用中的内存,这三个比较重要的性能数据最好还是收集一下,与之前版本进行对比,也可和其他产品进行对比,我用的是 里的1.打开sourcetree,选择要测的版本,拉代码到本地ps:如果遇到报错,本地代码与远端的代码冲突,点击重置,重新拉取即可2.打开终端,执行 3.打开xcode,注意相应证书的选择点击运行,即可在手机上打包成功ps:注意在打包时,Debug information Format的选择:4.打开PS
测试对于互联网应用软件开发来说非常重要,它对软件可靠性保证具有重要意义,通过测试能够尽可能发现并改正软件中的错误,提高软件质量。 这里我们主要讲解Go语言如何实现单元测试性能测试。 go语言中自带有一个轻量级的测试框架testing和自带的go test命令来实现单元测试性能测试,testing框架和其他语言中的测试框架类似,你可以基于这个框架写针对相应函数的测试用例,也可以基于该框架写相应的...
APP 性能测试背景 在任何软件的测试过程中,性能测试都是一个很重要的环节。我们一般所说的性能测试分为客户端及服务器端。针对客户端性能测试,尤其像游戏、视频类的软件,比如玩游戏不断卡顿、看视频电量消耗极快,都直接影响了用户体验。 对于性能测试的需求,主要来源于行业的通用标准,竞品的参考数据,历史版本的测试数据,或是直接的客户反馈等。App 性能测试指标主要包括:响应、内存、CPU 、FPS、GPU 渲染、耗电、耗流等。 APP 性能测试的基本原理是在不同用户操作场景下通过监控 APP 的各项指标来识别
1. 准备一台MAC电脑,并安装最新的操作系统。然后下载并安装Xcode,这是进行iOS开发和性能测试的必备工具。 2. 下载并配置WebDriverAgent,这是一个可以启动app的工具。在配置过程中,需要填写一个开发账号,并连接手机。配置完成后,运行WebDriverAgent,如果成功的话,手机上会出现一个Integration App的应用。 3. 打开Xcode,并选择Instruments。Instruments是一个性能测试工具,可以用来监测和分析iOS应用的性能。 4. 在Instruments中选择你想要跑的指标,比如APPLaunch,这是一个衡量应用启动时间的指标。 5. 运行测试,并查看测试结果。根据结果,可以与开发团队一起分析是否存在性能问题,并进行优化。除了启动时间,还可以跑其他指标,根据需要选择相应的指标进行测试。 需要注意的是,在进行性能对比实验时,要尽量保持实验场景的一致性,或者取大量真实数据的平均值。然而,由于用户的真实使用场景很难完全一样,可能会受到多种因素的影响,比如网络状况、硬件、系统版本、设备可用空间以及同时运行的其他应用等\[2\]。 此外,Instrument还可以与UI Test配合使用,通过脚本记录用户行为序列,实现可重复多次的自动化测试。这个脚本是由Xcode自动生成的,不需要程序员手动编写\[3\]。 希望以上信息对您有所帮助! #### 引用[.reference_title] - *1* [APP性能测试IOS性能测试-instruments使用](https://blog.csdn.net/Marry_Ma/article/details/121765175)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [《iOS APP 性能检测》](https://blog.csdn.net/xxq_2011/article/details/78129298)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
ERROR: Could not build wheels for lxml, which is required to install pyproject.toml-based projects TTtianTT_: work!感谢楼主 ERROR: Could not build wheels for lxml, which is required to install pyproject.toml-based projects ThisisFelix: 留言打Call。 被lxml的安装被折腾了一天,各种不成功。 也尝试过下载.whl文件、升级pip等。 最终方案就是博主的第一步,升级wheel,问题解决。 [code=python] Installing collected packages: wheel, setuptools Attempting uninstall: wheel Found existing installation: wheel 0.38.4 Uninstalling wheel-0.38.4: Successfully uninstalled wheel-0.38.4 Attempting uninstall: setuptools Found existing installation: setuptools 65.5.1 Uninstalling setuptools-65.5.1: Successfully uninstalled setuptools-65.5.1 Successfully installed setuptools-68.2.2 wheel-0.41.3 [/code] IDEA-自带Database中table进行增删改查和筛选数据 为啥我没有那个筛选图标表情包 IDEA-自带Database中table进行增删改查和筛选数据 Corey_A: 那TX:auto旁边的√这个符号是干嘛的啊 Mac 安装 IntelliJ IDEA 以及激活方法 lyuuq^: 好的 谢谢你