Addressing Mobile App Quality and Efficiency: iQIYI's Comprehensive Logging and Diagnostic System
iQIYI tackled the complexity of its large, multi‑team, multi‑technology mobile app by implementing an automated, standardized logging and diagnostic platform—including UI testing, code‑coverage, a unified SDK, real‑time log debugger and web viewer—enabling proactive design‑for‑debug, faster releases and higher quality.
Background: Rapid online releases with high quality and performance are a perpetual goal for technology R&D and project management teams. As mobile development matures and competition intensifies, major apps become platform‑centric and containerized, leading to larger, more complex applications.
Challenges identified include:
Large business scale: dozens of modules that need proper isolation and coupling management.
Large development team: many modules are owned by different teams with asynchronous integration cycles, increasing release complexity.
Heterogeneous technology stack: native, React‑Native, H5, mini‑programs, Flutter, and multiple languages (JS, Lua, C/C++) coexist, requiring strict isolation and coordinated collaboration.
Fast iteration speed: a bi‑weekly release cadence (one week for backend, one week for client development and testing) demands high maintainability and testability.
Solution approach: After investigating industry practices and internal discussions, iQIYI adopted an "automation, standardization, proactivity, systematization" governance model. Key measures include:
Automated UI testing for fixed‑flow UI scenarios and mandatory unit‑test cases for UI APIs, with automated execution.
Integrated code‑coverage statistics for real devices and emulators, providing concrete data on submission quality and test coverage.
Adoption of a unified logging system as the core of a comprehensive mobile diagnostic platform.
Logging SDK: Integrated into the main and independent apps, the SDK provides log monitoring and tracing for critical nodes across modules. Features include log levels, shard storage, configurable filters, multiple storage back‑ends, and remote configuration. It also supports output to console, files, server upload, a LogDebugger, and a Web viewer.
Supporting tools:
Log Debugger: a client‑server tool that aggregates logs, filters by level/module/keyword, and offers real‑time remote debugging across LAN devices.
Web Viewer: enables developers and testers to view real‑time or historical logs, module‑specific debug information, and other internal states via a browser.
Proactive Diagnosis/Debugging: Inspired by embedded‑system debugging, iQIYI built a proactive diagnostic mechanism that allows remote command channels for interactive debugging during development, internal testing, and even post‑release via push tokens. The framework is extensible, allowing custom debug commands.
Design for Debug: The concept of "Design for Debug"—originating from IC development—was introduced to plan debug capabilities early in design, turning passive logging into active diagnostics.
Conclusion: The logging system connects development, debugging, testing, and release phases, significantly improving efficiency and quality. The article also outlines ongoing exploration of proactive diagnostics and the broader implications of design‑for‑debug in complex software systems.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
