app基础

一、app背景

随着移动互联网和智能设备越来越普及,移动App已经渗透到了我们的生活方方面面,

比如出行、饮食、旅行、社交、金融等。用户对App产品的质量和用户体验要求越来越高。

因此很多互联网企业也因此开始对移动端产品质量越来越重视。

二、手机app三种分类及区别?

1、Web版应用程序(web app)

本质就是浏览器功能的叠加,用普通Web开发语言(javasprict、node、js)开发的,通过浏览器运行。

应用场景:在网页上开发的H5小游戏、微信小程序、电商app,如淘宝网页版

优势:

(1)支持范围广;

(2)开发成本低、周期短。

缺点:

(1)对联网要求高,离线不能做任何操作;

(2)功能有限;

(3)运行速度慢,页面不能承载太多东西;

(4)图片和动画支持性不高;

2、原生应用程序(Native App)

原生APP是什么?原生APP就是利用Android、iOS平台官方的开发语言、开发类库、工具进行开发,

应用于用户的输入点击等操作。比如安卓的java语言,iOS的object-c 语言。在应用性能上和交互体验上应该是最好的。

如手机上的时钟、计算器、便签、通讯录

优点

(1)可访问手机所有功能、可实现功能最齐全;

(2)运行速度快、性能高,绝佳的用户体验;

(3)支持大量图形和动画。不卡,反应快。

(4)比较快捷地使用设备端提供的接口,处理速度上有优势。

缺点:

(1)在过去主要是成本高、周期长,Android和iOS都需要单独开发。

(2)更新版本需要重新下载安装包。

3、混合应用程序(Hybrid App

即利用了原生APP的开发技术还应用了HTML5开发技术,是原生和HTML5技术的混合应用。混合比例不限。

既有原生app的特点,又有web app的特点。这个是app的主流,如支付宝、抖音、手机淘宝

优点:

1、开发周期短;

2、功能更新发布快;

缺点:

1、用户体验不如本地应用;

2、性能稍慢(需要连接网络);

 三、app基于的移动设备操作系统

1、主流

android和ios

android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智

能手机和平板电脑,由Google公司和开放手机联盟领导及开发。iOS是由苹果公司开发

的移动操作系统 。苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最

初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad以及Apple TV等产品上。

iOS与苹果的Mac OS X操作系统一样,属于类Unix的商业操作系统。

1.1. 安卓系统简介

Android一次原意指“机器人”,同时也是Google2007115日宣布的基于Linux平台的开源手机操作系统的名称,Android操作系统基于Linux内核设计,使用了Google公司自己开发的Dalvik Java虚拟机。

1.2 安卓的系统架构

android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。

1)应用程序

Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。

2)应用程序框架

开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。

隐藏在每个应用后面的是一系列的服务和系统, 其中包括;

* 活动管理器( Activity Manager): 用来管理应用程序生命周期并提供常用的导航回退功能。

* 窗口管理器(Windows Manager):主要用来管理所有的窗口程序。

* 内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据

* 视图管理器(Views System),可以用来构建应用程序, 它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons), 甚至可嵌入的web浏览器。

* 通知管理器 (Notification Manager):使得应用程序可以在状态栏中显示自定义的提示信息。

* 包管理器(Package Manager):主要用来对Android系统内的程序进行管理。

* 电话管理器(Telephone Manager):主要用来对联系人及通话记录等信息进行管理。

* 资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件( layout files )

* 位置管理器(Location Manager):主要用来提供使用者的当前位置等信息,如GPS定位。

* XMPP serverXMPP服务(通信协议)。

3)系统运行库

1程序库

主要提供了Android程序运行时需要的一些类库,这些类库一般是使用C/C++语言编写。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:

* libcC语言标准库,C语言标准库通过Linux系统来调试。

* Surface Manager:主要管理多个应用程序同时执行时各个程序之间的显示与存取。并且为多个应用程序提供了2D3D图层的无缝融合。

* SQLite:一个对于所有应用程序可用,关系数据库引擎。

* OpenGL|ES:3D效果的支持。

 * Media FrameworkAndroid系统多媒体库,该库支持多种常见格式的音频、视频的回放和录制。

* SGL - 底层的2D图形引擎

* SSL:位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持。

* FreeType -位图(bitmap)和矢量(vector)字体显示。

2Android 运行库

Android 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。

每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。 Dalvik虚拟机执行(.dex)Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中 的 "dx" 工具转化成.dex格式由虚拟机执行。

Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。

4.Linux 内核

Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 而Android更多的是需要一些与移动设备相关的驱动程序,比如显示驱动、USB接口驱动、蓝牙驱动、电源驱动、Wi-Fi驱动等。

1.3. Android相关的一些属性简介

Activity(活动):软件系统和用户进行交互的界面叫一个“活动”。

例如:Word中,它出现的每一个功能界面,比如在编辑文件、改变文件字体的大小后,我们单击工具条中的“保存”按钮;或者一个拼车的一个手机APP,我们约车的时候,其也会提供一个界面,需要我们指定出发的地点、目的地、出发时间等信息,单击“确认预约”按钮。

Server(后台服务):后台服务通常没有交互的图形化界面,是用于处理长时间任务,而不影响前台用户体验的组件。例如:我们一边看着微信的朋友圈内容,一边听着手机的音乐(后台的播放音乐的服务)。

2、非主流

黑莓、塞班、ubuntu、Firefox OS等等

黑莓(BlackBerry OS)是Research In Motion(加拿大的一家通信公司,主要产品为黑莓

手机。为其智能手机产品BlackBerry开发的专用操作系统。该系统具有多任务处理能力,并

支持特定输入装置,如滚轮、轨迹球、触摸板及触摸屏等。黑莓已经没落是不不争的事实,

但这并不能掩盖它曾经的辉煌。黑莓曾一度引领着手机系统的发展,因此黑莓系统是除了主

流手机操作系统的一个不错选择!要知道,美国总统奥巴马曾经用的就是黑莓系统哦。

其他几个都已经停止使用、开发和维护

四、安卓与iOS应用程序的区别

Android:

1、操作系统是开源

2、开发语言:java、Kotlin

3、程序包的名字结尾是:xxx.apk

4、每家手机厂商都有自己开发的系统,基于安卓系统开发的

5、安卓系统的所有权是由谷歌来维护的

6、序列号:表示一部安卓手机

iOS:

1、操作系统是闭源

2、开发语言:Objective-C、Swift

3、程序安装包的包名的结尾:xxx.api

4、系统由苹果公司维护

5、Udidi:表示一部手机

五、app的工作原理

基本交互:

 

 

 

 

app的client发送url请求,nginx接受后,经过处理转发给tomcat,tomcat经过解释处理后,

给java代码执行,执行的结果 在转给tomcat,在转给nginx,最后返回客户端数据

六、APP测试流程

拿到项目需求文档

开需求评审会议,明确需求,明确项目的任务周期

测试计划编写

编写测试用例

评审测试用例

搭建测试环境

冒烟测试

执行测试用例

发现bug提交并跟踪

回归测试----bug的生命周期

发布到预发布环境(主要验证主要功能)

写测试报告(包含内容)

发布到线上(主要验证主要功能)(主要功能无法实现,代码回滚)

项目总结

posted on 2019-10-25 20:47  礼哥宝典  阅读(347)  评论(0)    收藏  举报