Tag: Immobilienscout24

从零到英雄:ImmobilienScout24 III上本地应用程序开发的故事

这是由Immobilienscout24的移动工程师Iyad Tamer Agha撰写的由三部分组成的本地应用程序开发@ immobilienscout24系列的最后一部分 。 随时阅读第1部分和第2部分,以获取对该主题的更多见解。 非技术措施 技术方法和工具对于确保移动应用程序的质量至关重要,尽管某些非技术性措施可能会导致检测软件错误的时间更早或根本没有发生。 结对编程:我们团队中已建立的一种实践称为结对编程,结对编程是指两个程序员共同工作以共同承担编程任务。 四眼原理导致对编写代码的更多控制和更少的错误。 通过成对工作,将对代码进行更详细的讨论,从而获得更可靠的软件。 协同工作还意味着可以在团队中更好地共享知识。 经验表明,结对编程的另一个副作用是,与单独工作的同事相比,串联工作的同事被打扰的可能性较小。 Mob编程:我们团队中也使用过的成对编程的扩展形式,即mob编程,其中不仅有两个开发人员来完成一项任务,而且整个团队也一起来处理代码。 当团队希望将新功能集成到应用程序中时,该方法被证明是成功的。 这将导致团队内部就该功能代码的共同确定原则达成共识。 代码审查:确保代码质量的另一种方法是代码审查。 实施一项新功能后,团队中的一个或多个开发人员将仔细检查代码。 目的是识别任何编程错误,并检查是否遵守了编写代码的内部准则。 这也鼓励团队内部的知识共享。 我们劳动的成果 首次发布仅一年后,我们的努力就获得了回报。 发布后的第一年,我们有849,000个应用程序下载,这个数字比上一年增加了15%。 我们的App Store评分从3星提高到4星,反映了用户满意度的提高。 这些年来,团队学到了很多东西。 关键课程是: 质量不仅仅是一个技术问题 :结对编程和代码审查之类的实践与对软件质量进行持续改进的技术措施同样重要。 用户永远是对的:如果用户决定应用程序应提供哪些功能,则提供错误内容的风险非常低。 少即是多:一个好的应用不是包含所有可能功能的应用。 删除很少使用的功能并改进常用功能是值得的。 四个星期的发布周期:尽管该应用适合每两周冲刺后发布新功能,但事实证明,最好是四个星期。 这为用户提供了足够的时间来评估新功能,并且团队有机会评估发布的成功并采取适当的措施。 我们的未来方向 大多数基于软件的公司开始与小型团队一起开发移动应用程序。 但是,随着时间的流逝,它们的使用变得如此广泛,以至于对于某些产品来说,大多数流量已经从移动应用程序中产生了,例如ImmobilienScout24就是这种情况。 由于移动应用程序的快速增长,负责移动开发的中央团队的模型已不再足够。 因此,我们的未来计划是在功能团队中扩展移动开发。 我们将iOS应用程序划分为单独的软件组件(模块),以便不同的团队可以彼此独立地开发自己的应用程序需求。 我们期望减少日益重要的移动应用程序的上市时间,因为速度是使自己在竞争中脱颖而出的关键因素。

从零到英雄:ImmobilienScout24 II上本地应用程序开发的故事

由Mohamed Iyad Tamer Agha撰写 技术 多年来,iOS应用程序的开发中使用了许多技术。 与2011年的标准一样,使用Objective-C作为编程语言。2014年底,Apple引入了一种用于开发iOS / OS X应用程序的新编程语言,称为Swift。 Swift是一种强大而直观的编程语言,它使应用程序的编程变得更加轻松和安全。 而且,Swift是开源的,它使每个开发人员都可以查看Swift的源代码并参与其开发。 为了从Swift的优势中受益,我们ImmobilienScout24于2015年春季开始使用它来编写我们的iOS应用程序的一部分。 团队使用的其他技术是: Xcode和appCode作为开发环境(IDE) git与github和gitlab进行版本控制 XCTest和OCMock用于单元测试 KIF和EarlGrey用于UI测试 HockeyApp用于崩溃监控和Beta测试应用程序分发 NewRelic用于应用程序监视 除了这些技术措施外,我们还在日常工作中采用了许多质量改进措施。 技术措施:自动测试 编写自动测试软件部分的测试已成为生产软件时的行业标准。 不同种类的测试之间有区别。 ImmobilienScout24应用程序的开发过程中使用了三种测试。 单元测试:单元测试用于测试软件的最小可能组件(单元)。 更具体地说,这意味着项目中的每个Objective-C或Swift类都有一个测试功能准确性的单元测试类。 可以使用某些工具来衡量整个项目的测试范围。 拥有2,000多个单元测试,我们项目的测试覆盖率超过80%。 单元测试的另一个方面是所谓的“测试驱动开发”,简称TDD,其中测试是在实际软件组件之前编写的。 然后,以符合测试要求的方式实施软件组件。 在我们的团队中,每个人都知道单元测试非常重要,但是由每个开发人员来决定是在软件组件之前还是之后编写测试。 快照测试:快照测试是一种集成测试,其中保存了应用程序每个屏幕的屏幕快照,并且每次测试运行都用于检查屏幕显示是否有所更改。 因此,在更改程序代码时,可以快速识别应用程序中的显示错误。 使用Facebook开源框架来实现这种测试。 UI测试:在UI测试期间,将自动启动并单击该应用程序,以检查该应用程序中各个屏幕的交互和整体导航是否符合预期。 由于此类测试的可操作性取决于许多变量,因此是一个真正的挑战,多年来,我们尝试了各种工具和框架,以确保此测试的稳定性。 我们目前正在评估一个名为EarlGrey的新Google框架。 持续整合系统 流畅,高效的软件开发过程需要使用持续集成系统(简称CI)。 CI的任务是为每个git commit构建整个软件并执行所有自动化测试。 如果没有错误,将创建该应用程序的版本。 否则,将通知开发人员,以便可以快速修复该错误。 对于我们的应用程序,我们使用Team City作为CI系统。 我们选择Team City是因为它已经成为ImmobilienScout24的标准配置,并提供了我们工作所需的所有功能。 其他CI系统(例如免费的Jenkins)也可以完成这项工作。 应用分析 Apple的Xcode提供了一个有用的工具,称为Instruments,用于分析应用程序的行为。 使用Instruments可以衡量的关键功能之一是应用程序的内存使用情况。 内存是有限资源,应谨慎使用,尤其是在智能手机上。 iPhone的操作系统可能会很快迫使浪费内存的应用程序关闭。 因此,在发布应用程序版本之前,我们曾使用Instruments进行了内存分析。 […]