在产品设计出来之后
业务:版权信息,用户隐私,服务协议,域名备案
通用:分析业务流程和功能模块
服务器:根据功能,构建数据库,创建后端管理系统。
Web后端:。。。
Web前端:。。。
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,友盟等,以及用户反馈系统。
参考: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); }
}];
}
参考:http://www.cocoachina.com/ios/20170718/19930.html
参考:http://www.cocoachina.com/ios/20170401/18995.html
参考: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
第三方支付
实物产品不用内购
业务,功能第一,理解万岁。