项目开发流程

在产品设计出来之后

业务:版权信息,用户隐私,服务协议,域名备案
通用:分析业务流程和功能模块
服务器:根据功能,构建数据库,创建后端管理系统。
Web后端:。。。
Web前端:。。。

iOS APP端:

规范

Organization名称,Created by,Copyright ©问题,就是软件公司方,写作方问题。
项目用公司或者项目名称的大写首个单词。能封装的封装,能优化的优化。

前期考虑

软件设计典范: MVC (MVP,MVVM)
服务:第三方登录,支付,分享的APPID,APPKEY
适配问题:最低支持系统,界面适配,支持设备。
技术:考虑需要解决的技术问题

开发

准备:APP开发证书,推送证书,配置文件。
构建项目,设置Base SDK,导入常用Framework,设置权限,需要添加的功能。

工具类-根据功能:APPINFO类-宏定义APP基本信息(版本,屏幕分辨率,LOG,HOST,通用颜色,通用字体)。通用,资源管理类,HTTP请求类,归档数据管理类,SQLite数据库管理类,推送处理类,分享管理,支付管理。

注意:HTTP请求封装,请求接口使用宏定义或字符串常量,尽量将数据解析写在接口里面,直接给外面block(success, errmsg, data) data为处理过的数据。可以直接看到解析结果,方便测试。

VC-根据业务流程:根据业务创建界面转换流程
View,Cell-根据设计:分局设计分析出通用界面

看接口文档(理解各参数含义,补充,完善数据)
Model-根据接口:根据接口创建Model数据 ….

可以先使用假数据测试各界面基本功能…….

软件测试

1,服务器接口测试:可以自动化
2,APP接入的接口测试,参数是否完整,参数类型是否匹配,检测返回数据的正确,完整。(个人附加) (流程分析法,边界值分析法,错误推断法,因果法的没有用到)
3,按APP功能模块测试,看界面是否OK,跳转流程是否符合标准、是否卡顿,检查各种bug。
前后台切换:检查数据更新。APP更新,是否显示更新,是否强制更新。
登录、注册:第三方登录,支付该隐藏的隐藏。
退出:清空该清空的数据,清空推送,popToRootVC,设置根目录
注意:登录又退出,登录又退出,是否能再登录,以及内存,通知问题。APP单点登录?
4,系统兼容测试,换个系统看看界面是否正常现实,APP的功能是否能正常使用。语言,时间,日历,货币是否正常。数据库升级。
5,性能测试
网络:网络出错有提示,上传大文件时可以取消上传。
界面:图片加载速度,大小,格式,清晰度,是否可优化。
6,线上出现问题,接入Bugly,友盟等,以及用户反馈系统。

测试

使用Xcode内置单元测试

参考:https://blog.csdn.net/hello_hwc/article/details/46671053
用例测试:用来测试方法,小功能。可参考AFNetworking项目,MQTT项目。一般用于工具类测试。
异步测试:一般用于网络接口测试
代码性能测试
代码覆盖率

#import 
#import "ANAssetManager.h"
@interface TestAssetManager : XCTestCase
@property (nonatomic, strong) ANAssetManager *manager;
@end

@implementation TestAssetManager

- (void)setUp {
    [super setUp];
    _manager = [ANAssetManager mamager];
}

- (void)tearDown {
    [super tearDown];
}

- (void)testExample {
    XCTAssert(TRUE, @"hello");
    XCTAssertTrue(TRUE, @"hello");
    XCTAssertFalse(FALSE, @"hello");

    XCTAssertNil(nil, @"hello");
    XCTAssertNotNil(@"not nil", @"hello");

    XCTAssertEqual(1, 1, @"hello");
    XCTAssertNotEqual(1, 2, @"hello");

    XCTAssertEqualWithAccuracy(1.0, 2.0, 1, "hello");
    XCTAssertNotEqualWithAccuracy(1.0, 3.0, 1, @"hello");

    XCTAssertEqualObjects(@"1", @"1", @"hello");
    XCTAssertNotEqualObjects(@"1", @"2", @"hello");

    XCTAssertGreaterThan(2, 1, @"hello");
    XCTAssertGreaterThanOrEqual(2, 2, @"hello");
    XCTAssertLessThan(1, 2, @"hello");
    XCTAssertLessThanOrEqual(1, 2, @"hello");
}

// 用例测试
- (void)testCameraRollAsset{
    [_manager getCameraRollAssetWithBlock:^(ANAlbumModel *result, NSArray *results, NSError *error) {
        XCTAssert(results.count, @"count == 0");
    }];
}

// 异步测试-一般可以测试接口
- (void)testNetwork{
    XCTestExpectation *expectation = [self expectationWithDescription:@"test"];
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        sleep(3);
        [expectation fulfill];
    });
    [self waitForExpectationsWithTimeout:5 handler:^(NSError *error) {

    }];
}

// 代码性能测试
- (void)testPerformanceExample {
    [self measureBlock:^{
        for(int i=0; i < 100; i++){ NSLog(@"%d",i); }
    }];
}

使用Xcode内置界面测试

参考:http://www.cocoachina.com/ios/20170718/19930.html

APP自动化测试

参考:http://www.cocoachina.com/ios/20170401/18995.html

APP稳定性指标和监控

参考:http://www.cocoachina.com/ios/20170804/20145.html

常见被拒问题:

metadata:介绍图不符,命名不合适,关键词不当。
隐藏第三方登录
登录注册时注意用户隐私和服务协议
游戏类APP增加游客登录
IPv6,HTTPS IPv6域名测试网址:https://www.subnetonline.com/pages/ipv6-network-tools/online-ipv6-ping.php
第三方支付
实物产品不用内购

总结

业务,功能第一,理解万岁。

这里写图片描述

你可能感兴趣的:(计算机)