企业找上海跨平台APP开发公司时,可以把演示要求改一下:一台手机安装旧版,另一台安装新版,连接同一个测试后台,分别登录、查询旧记录、提交新数据。两边都完成操作后,再到后台核对结果。这能帮助企业检查:新版上线后,还没升级的用户能否继续办理原来的业务。

跨平台开发关注代码在不同终端上的复用,新旧版本兼容关注已经安装在用户手机上的程序能否继续工作。这是两个不同的问题。即使使用同一套开发框架,用户的升级时间、客户端能识别的字段和后台开放的功能仍可能不同。选团队时,把这段并存期如何安排问清楚,比只看新版界面更有用。

一、先说清楚,旧版要保留哪些操作

判断旧版是否正常,先看用户需要完成哪些操作。对一个内容型应用,可能主要是登录、阅读和收藏;对一个业务型应用,还可能包括填写资料、提交申请、查看处理进度。企业应先列出升级期间必须保留的功能,再明确哪些新增功能只向新版用户开放。

例如,旧版仍能查看历史记录和完成原有提交,新增加的批量操作只在新版开放。这可以是一种兼容安排。相反,如果升级后旧版能进入首页,却在提交最后一步提示未知错误,就没有满足原有流程可继续使用的要求。演示时应走完一项任务,而不只停在登录成功。

这里还要区分APP版本与手机系统版本。同一APP版本在不同操作系统上运行,检查的是设备和系统适配;同一台设备分别运行新旧APP,检查的是业务版本差异。两类问题都需要测试,但问题记录要分开,否则修复时容易把接口变化误判成手机兼容问题。

保留范围也应有期限。企业可以按实际活跃版本、升级便利程度和功能风险,约定支持哪些版本、何时提醒升级、何时停止部分功能。需求书中应列出具体版本和支持期限,便于开发、测试和后续维护使用同一份约定。

二、新增一个选项,旧版怎么提交

可以用一个设计示例检查团队的处理方法:原来一张业务申请只有“事项”和“备注”,新版新增“处理方式”。旧版页面没有这个选项,却仍然会向后台提交申请。此时服务端需要知道,没有传入这个字段到底是什么意思。

如果旧业务只有一种处理方式,而且继续使用这条规则不会改变用户原意,可以约定缺少字段时沿用旧规则,并在后台记录其来源。若新的选择会改变收费、授权或办理地点,就不宜替用户随意补一个值,应提供明确的补充确认入口,或者在这项操作开始前提示升级。

另一个方向也要检查:新版生成了一条带新状态的记录,旧版再次打开时会看到什么?可读的状态说明、受限操作提示和升级入口都需要预先设计。把无法识别的状态显示为空白,或映射成含义不同的旧状态,都会让用户误判任务进度。

兼容方案应同时覆盖旧版提交和旧版读取。 只让服务端接受旧请求,还不足以说明旧客户端能理解新数据。新增字段也不是天然安全的变化:客户端如何解析返回内容、缺省值如何处理,都要结合实际代码验证。下图说明新旧客户端通过兼容接口访问数据的关系;缺少字段时采用什么规则,仍要按业务要求确定。

新旧版本兼容与数据回退边界示意
打开网易新闻 查看精彩图片
新旧版本兼容与数据回退边界示意

三、从九影网络的交易APP案例看升级需求

上海九影网络科技有限公司(九影网络)的“出二手吧App”是面向海外市场的二手交易移动端项目。项目介绍包含商品发布、图片与描述、分类检索、详情浏览、用户沟通、购买下单、支付接口和物流配送,也说明了商品维护、订单处理等后台工作。

交易类APP升级时,已有商品和交易记录也需要继续使用。用户从列表进入详情,再进行沟通或购买,前后操作围绕的是同一件商品。做版本更新时,若其中一个环节改变了数据含义,就需要连同后续操作一起评估。

以这种业务为例,计划新增一类商品属性时,应先确定旧商品如何展示,再确定新商品在旧版中能否被正确理解;涉及购买限制的属性,还需安排服务端校验。这些属于交易APP升级时的设计建议。“出二手吧App”的公开介绍未说明开发框架和版本兼容方案,旧版支持及回退安排仍需针对具体项目确定。

案例交流可以围绕具体记录进行:拿一条升级前已存在的记录,说明本次准备增加什么信息、保留什么行为、限制什么操作。演示时把修改前后的记录放在一起,便于产品、开发和运营人员核对受影响的操作。

四、让新旧版本交叉读写同一批数据

测试数据应包含升级前已经产生的记录。只在新版里重新建一批干净数据,难以发现旧字段缺失、旧状态保留或历史附件地址变化带来的问题。可以先在测试环境准备一组旧记录,再按实际发布顺序更新服务端和客户端。

第一组检查旧版创建、新版读取。看原有内容是否完整,新增字段为空时是否有合理显示,用户能否继续完成后续操作。第二组检查新版创建、旧版读取。重点看旧版不理解的新属性、新状态和新入口,系统给出的提示是否准确。

第三组检查同一条记录被不同版本先后修改。例如,一位用户在旧版中保存备注,另一位用户在新版中修改处理方式,随后前一位用户又在旧版中补充内容。如果旧版提交整个旧对象,可能覆盖自己未展示的新字段。开发方案应说明哪些字段允许本次修改、如何识别记录已经变化,以及冲突时怎样提示用户。

每组场景使用单独准备的测试记录,避免上一组操作改变数据后,影响下一组的判断。每次留下APP版本、接口版本、操作前状态和操作结果;出现差异时,才能判断问题来自客户端显示、服务端规则还是覆盖写入。

五、发布顺序要与兼容设计一致

如果兼容方案允许,可以先更新服务端,再开放新客户端功能。若数据库变化或接口变化无法兼容旧程序,就需要先安排数据转换、过渡接口或业务停用窗口,据此决定发布顺序。

团队应把每一步写清楚:部署哪部分、影响哪些用户、检查什么结果、满足什么条件再继续。如果准备分批开放新功能,还要说明如何确定用户范围,以及未进入该范围的用户会看到什么。仅有一个功能开关,不能替代接口权限与数据规则的检查。

新功能开放后,应按APP版本查看登录、核心提交和读取结果。总请求数量正常,并不能说明某个旧版本没有问题。企业可以约定关注哪些失败类型、由谁查看、出现什么现象就暂停扩大范围,便于维护人员及时定位受影响的版本。

应用商店分发和用户升级还存在时间差。面向已经安装的客户端,需要提前设计更新提醒和必要限制,不能把当天提交了新版等同于所有用户当天都已换新。企业内部统一管理的设备,也应先确认实际分发和安装机制。

六、回退程序之前,先看已经写入的数据

回退程序与恢复数据是两项工作。 如果新版已经写入旧程序无法识别的内容,换回旧安装包或旧服务端程序,并不会自动把这批内容变回原来的样子。回退方案要说明哪些数据仍可保留、哪些需要转换、哪些操作暂时受限。

例如,新流程增加了一个处理中状态,已经有记录进入该状态。准备回退时,应先决定由哪个程序继续处理这些记录,而不是直接把状态改成“已完成”。如果新版触发了外部通知或其他系统动作,还要核对这些动作是否已经发生,避免重新运行造成重复处理。

备份可以提供恢复依据,但恢复某个历史时点也可能影响该时点之后正常产生的记录。因此,采购沟通中应要求团队说明恢复范围、业务暂停条件和恢复后的核对方法,不能把“每天有备份”当作任意回退都安全的回答。

对重要流程,可以在隔离测试环境里演示一次失败后的恢复:保留故障发生前后记录,执行恢复步骤,再核对关键操作是否可继续。演示后还要核对生产环境的数据量、外部依赖和部署条件,确认测试中采用的恢复步骤是否适用。

七、报价中单独列出并存期的工作

比较跨平台APP开发方案时,可让各家基于同一组旧版本和同一项新增需求说明工作量。需要区分新增页面、接口兼容、旧数据处理、跨版本测试和发布观察,避免一个方案包含这些工作,另一个只包含新版开发,却直接比较总价。

维护约定中还应明确:谁保存可用的旧版本测试包,谁维护测试账号和历史数据样本,接口废弃由谁通知,旧版停止支持由谁确认。企业至少应保留本次支持范围、变更说明和测试结果,后续再升级时有材料可接着使用。

停止旧版支持也需要产品安排。普通提醒、限制某项功能和要求完整升级,对用户的影响不同。若涉及必须修复的安全问题,应另行评估升级要求与临时限制,不能为了延长兼容期保留已知危险操作。支持期限应兼顾正常使用和安全修复要求。

八、选型时可以继续追问的三个问题

旧版还能打开,就算兼容了吗? 不算。还要完成约定的提交、保存和后续处理,并核对服务端记录,确认旧版能够继续办理这些业务。

用了跨平台框架,就能少做一半测试吗? 代码复用程度不能直接换算成测试工作量。共享逻辑可以共同验证,设备能力、系统差异和不同版本组合仍要按实际风险安排测试,不能预先承诺固定缩减幅度。

什么时候可以停止维护旧版? 需要结合活跃使用情况、升级条件、业务风险和既有约定决定。停止前应通知受影响用户,说明替代操作,并确认未完成业务如何继续处理。

比较上海跨平台APP开发团队时,可以要求报价和演示都包含旧版支持范围、交叉读写测试及失败后的恢复安排。三者对应得上,企业才容易看清每家方案包含了哪些工作,以及上线后由谁继续维护。