1"use strict";(self.webpackChunkKatalon_Docs=self.webpackChunkKatalon_Docs||[]).push([[6488],{28453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>a});var i=n(96540);const s={},r=i.createContext(s);function o(e){const t=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:t},e.children)}},70532:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"get-started/quick-start-guide-for-mobile-testing","title":"Quick start guide for mobile testing","description":"Create, run, and improve a mobile test in Katalon Studio with Smart Mobile Recorder and Katalon AI Assistant.","source":"@site/docs/katalon-studio/get-started/quick-start-guide-for-mobile-testing.md","sourceDirName":"get-started","slug":"/get-started/quick-start-guide-for-mobile-testing","permalink":"/katalon-studio/get-started/quick-start-guide-for-mobile-testing","draft":false,"unlisted":false,"tags":[],"version":"current","lastUpdatedAt":1787052477000,"frontMatter":{"title":"Quick start guide for mobile testing","description":"Create, run, and improve a mobile test in Katalon Studio with Smart Mobile Recorder and Katalon AI Assistant."},"sidebar":"katalon-studio","previous":{"title":"Quick guide for testers","permalink":"/katalon-studio/get-started/quick-guide-for-testers"},"next":{"title":"Katalon Help","permalink":"/katalon-studio/get-started/katalon-help"}}');var s=n(74848),r=n(28453);const o={title:"Quick start guide for mobile testing",description:"Create, run, and improve a mobile test in Katalon Studio with Smart Mobile Recorder and Katalon AI Assistant."},a=void 0,l={},d=[{value:"Before you start",id:"before-you-start",level:2},{value:"Capture a working user journey",id:"capture-a-working-user-journey",level:2},{value:"Create a mobile project",id:"create-a-mobile-project",level:3},{value:"Record the journey",id:"record-the-journey",level:3},{value:"Turn the recording into a real test with AI",id:"turn-the-recording-into-a-real-test-with-ai",level:2},{value:"Run on the device that matters",id:"run-on-the-device-that-matters",level:2},{value:"You are ready to expand when",id:"you-are-ready-to-expand-when",level:2}];function c(e){const t={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.p,{children:"Use this guide to turn one important mobile user journey into a test you can run and improve. You do not need to design a complete framework first. Start with a real interaction, let Katalon Studio capture the app's objects and actions, then use AI to add checks and help diagnose failures."}),"\n",(0,s.jsx)(t.p,{children:"By the end, you will have a test that:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Exercises a useful path through your Android or iOS app."}),"\n",(0,s.jsx)(t.li,{children:"Verifies an outcome instead of only replaying taps."}),"\n",(0,s.jsx)(t.li,{children:"Runs on a local or cloud device."}),"\n",(0,s.jsx)(t.li,{children:"Gives you enough failure context to make the next fix quickly."}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"The example in this guide is a sign-in journey, but you can use the same approach for onboarding, search, checkout, or any short critical flow."}),"\n",(0,s.jsx)(t.h2,{id:"before-you-start",children:"Before you start"}),"\n",(0,s.jsx)(t.p,{children:"You need Katalon Studio and an application file:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Android: ",(0,s.jsx)(t.code,{children:".apk"})," or ",(0,s.jsx)(t.code,{children:".aab"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:["iOS: ",(0,s.jsx)(t.code,{children:".ipa"})," for real or cloud devices, or ",(0,s.jsx)(t.code,{children:".app"})," for a local simulator."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"Choose where to work:"}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Device"}),(0,s.jsx)(t.th,{children:"Choose this when"}),(0,s.jsx)(t.th,{children:"What to prepare"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsxs)(t.td,{children:[(0,s.jsx)(t.strong,{children:"Cloud device"})," (recommended)"]}),(0,s.jsx)(t.td,{children:"You want the shortest path or need broader device coverage."}),(0,s.jsxs)(t.td,{children:["Upload the app in True Platform under ",(0,s.jsx)(t.strong,{children:"Device Cloud > Applications"}),"."]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:(0,s.jsx)(t.strong,{children:"Local device, emulator, or simulator"})}),(0,s.jsx)(t.td,{children:"You already have a development device available."}),(0,s.jsx)(t.td,{children:"Connect the device and complete the local Ap
1pium setup."})]})]})]}),"\n",(0,s.jsxs)(t.p,{children:["For the cloud path, see ",(0,s.jsx)(t.a,{href:"/katalon-testcloud/mobile-native-app-testing/upload-your-application/upload-a-mobile-app-to-testops",children:"Upload a mobile app"}),". For the local path, see ",(0,s.jsx)(t.a,{href:"/katalon-studio/manage-projects/set-up-projects/mobile-testing/execute-mobile-tests-with-appium",children:"Execute mobile tests with Appium"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["AI assistance is optional. To use it, configure Katalon AI Assistant as described in ",(0,s.jsx)(t.a,{href:"/katalon-studio/studioassist/studioassist-overview",children:"Katalon AI Assistant Overview"}),". Without AI assistance, you can still complete the recorder and execution steps below."]}),"\n",(0,s.jsx)(t.h2,{id:"capture-a-working-user-journey",children:"Capture a working user journey"}),"\n",(0,s.jsx)(t.p,{children:"Pick a journey that takes about five to ten actions and has an observable result. For example:"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:"Launch the app."}),"\n",(0,s.jsx)(t.li,{children:"Enter a username and password."}),"\n",(0,s.jsxs)(t.li,{children:["Tap ",(0,s.jsx)(t.strong,{children:"Sign in"}),"."]}),"\n",(0,s.jsx)(t.li,{children:"Verify that the home screen appears."}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"Keeping the first journey small makes it easier to tell whether a failure comes from the app, the test, or the device environment."}),"\n",(0,s.jsx)(t.h3,{id:"create-a-mobile-project",children:"Create a mobile project"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["In Katalon Studio, select ",(0,s.jsx)(t.strong,{children:"File > New > Project"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:["Enter a project name and select ",(0,s.jsx)(t.strong,{children:"Mobile"})," as the project type."]}),"\n",(0,s.jsxs)(t.li,{children:["Choose ",(0,s.jsx)(t.strong,{children:"Blank"})," to test your own app, or choose a mobile sample project to explore the workflow with a ready-made app."]}),"\n",(0,s.jsxs)(t.li,{children:["Select a location, then click ",(0,s.jsx)(t.strong,{children:"OK"}),"."]}),"\n"]}),"\n",(0,s.jsx)(t.h3,{id:"record-the-journey",children:"Record the journey"}),"\n",(0,s.jsx)(t.p,{children:"The Smart Mobile Recorder observes the real app session. It creates both the interaction steps and the mobile test objects that later give AI useful, project-specific context."}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Go to ",(0,s.jsx)(t.strong,{children:"Preferences > Recorder"}),", enable ",(0,s.jsx)(t.strong,{children:"Smart Mobile Recorder"}),", then click ",(0,s.jsx)(t.strong,{children:"Apply and Close"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Click ",(0,s.jsx)(t.strong,{children:"Record Mobile"})," on the main toolbar."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Select a source:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["For a cloud device, select ",(0,s.jsx)(t.strong,{children:"Cloud Provider"}),", then select your uploaded app and a device."]}),"\n",(0,s.jsxs)(t.li,{children:["For a local device, select ",(0,s.jsx)(t.strong,{children:"Local Device"}),", choose the connected device, then provide the application file or application ID."]}),"\n"]}),"\n",(0,s.jsx)("img",{src:"https://tw-cdn.katalon.com/katalon-studio/record-and-spy/mobile-smart-recorder/smart-mobile-recorder-cloud-provider-configurations-1.png",alt:"Configure a cloud device and application in Smart Mobile Recorder",width:"500"}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Click ",(0,s.jsx)(t.strong,{children:"Start Record"})," and wait for the app to appear in ",(0,s.jsx)(t.strong,{children:"Device View"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Enable ",(0,s.jsx)(t.strong,{children:"Interactive Mode"}),", then perform your chosen journey in ",(0,s.jsx)(t.strong,{children:"Device View"}),"."]}),"\n",(0,s.jsx)("img",{src:"https://tw-cdn.katalon.com/katalon-studio/record-and-spy/mobile-smart-recorder/katalon-studio-smart-mobile-recorder-interactive-mode-1.png",alt:"Capture mobile actions and objects in Smart Mobile Recorder Interactive Mode",width:"700"}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Pause and click ",(0,s.jsx)(t.strong,{children:"Run"})," to replay the captured steps. Fix any missed or incorrect action while the session is still open."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Click ",(0,s.jsx)(t.strong,{children:"Save"})," and name the test case after the behavior, for example, ",(0,s.jsx)(t.code,{children:"Sign_in_with_valid_account"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["You now have a runnable baseline. Keep it even if you plan to use AI: the recorded objects and observed actions ground the generated changes in your actual app. For recorder controls and requirements, see ",(0,s.jsx)(t.a,{href:"/katalon-studio/record-and-spy/mobile-record-and-spy-utilities/smart-mobile-recorder",children:"Smart Mobile Recorder"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"turn-the-recording-into-a-real-test-with-ai",children:"Turn the recording into a real test with AI"}),"\n",(0,s.jsx)(t.p,{children:"A recording shows that Katalon Studio can repeat your actions. A useful test also states what must be true. Use Katalon AI Assistant Agent mode to review the recorded test and add focu
1sed waits and verifications."}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:"Open the recorded test case."}),"\n",(0,s.jsxs)(t.li,{children:["Open ",(0,s.jsx)(t.strong,{children:"Katalon AI Assistant"})," chat and select ",(0,s.jsx)(t.strong,{children:"Agent"})," mode."]}),"\n",(0,s.jsx)(t.li,{children:"Give the assistant the behavior, expected result, and constraints. For example:"}),"\n"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-jsx",children:"Review the open mobile test case for a successful sign-in.\n\nUse only mobile test objects that already exist in this project.\nAdd explicit waits before interactions and verify that the home screen\nis visible after sign-in. Keep the test short and readable. Do not invent\ncredentials, objects, or application behavior. Explain any assumption.\n"})}),"\n",(0,s.jsxs)(t.ol,{start:"4",children:["\n",(0,s.jsxs)(t.li,{children:["Review every proposed file change in ",(0,s.jsx)(t.strong,{children:"Modified Files"}),". Check that the assistant used the right objects and that each verification represents user-visible behavior, then keep the changes you want."]}),"\n",(0,s.jsx)(t.li,{children:"Run the revised test once. If it fails, attach the error log or screenshot in the same conversation and prompt:"}),"\n"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-jsx",children:"Analyze this failure. Decide whether it is most likely an app issue,\ntest script issue, test data issue, or environment issue. Propose the\nsmallest fix, but do not remove the final verification.\n"})}),"\n",(0,s.jsxs)(t.p,{children:["Treat generated steps as a draft: AI can misunderstand the intended behavior or generate an invalid keyword. Your recording, expected outcome, and review remain the source of truth. For more prompting patterns, see ",(0,s.jsx)(t.a,{href:"/katalon-studio/studioassist/studioassist-agent-mode",children:"Katalon AI Assistant Agent mode"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"run-on-the-device-that-matters",children:"Run on the device that matters"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["Open the test case and use the dropdown next to ",(0,s.jsx)(t.strong,{children:"Run"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:["Choose an execution target:","\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Test Execution - Cloud:"})," Select ",(0,s.jsx)(t.strong,{children:"Mobile Native Apps"}),", choose the OS, OS version, device, and uploaded app, then click ",(0,s.jsx)(t.strong,{children:"Run"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Local Android or iOS:"})," Select the connected device, then click ",(0,s.jsx)(t.strong,{children:"OK"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.li,{children:"Watch the execution log and confirm that the final verification passes."}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"Do not begin with a large device matrix. First make the test reliable on one representative device. Then rerun the same test on one older OS version and one different screen size. This small matrix often reveals layout, keyboard, permission, and timing problems without creating unnecessary noise."}),"\n",(0,s.jsx)(t.p,{children:"Cloud results are uploaded to True Platform automatically. For local runs, you can connect the project to True Platform when you want shared history and analytics."}),"\n",(0,s.jsx)(t.admonition,{title:"Best practices for a reliable test",type:"tip",children:(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Replace fixed delays with waits for a specific mobile object or app state. Katalon AI Assistant can suggest these changes, but review the timeout and failure handling before accepting them."}),"\n",(0,s.jsx)(t.li,{children:"Move credentials or search terms into test case variables. Add a meaningful negative case and verify the error shown to the user."}),"\n",(0,s.jsxs)(t.li,{children:["Enable mobile self-healing in ",(0,s.jsx)(t.strong,{children:"Project > Settings > Self-Healing"}),". Review any suggested locator before accepting it. See ",(0,s.jsx)(t.a,{href:"/katalon-studio/maintain-tests/self-healing-tests-in-katalon-studio",children:"Self-healing tests"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:["For test-suite runs, enable ",(0,s.jsx)(t.strong,{children:"Analyze failed reason using AI"})," under ",(0,s.jsx)(t.strong,{children:"Project > Settings > Report"}),". Confirm the generated diagnosis against the execution log, screenshot, and app behavior."]}),"\n"]})}),"\n",(0,s.jsx)(t.h2,{id:"you-are-ready-to-expand-when",children:"You are ready to expand when"}),"\n",(0,s.jsx)(t.p,{children:"Your first test is a sound building block when it:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Has a name that describes user behavior."}),"\n",(0,s.jsx)(t.li,{children:"Uses captured, reviewable test objects."}),"\n",(0,s.jsx)(t.li,{children:"Waits for app state instead of relying on arbitrary delays."}),"\n",(0,s.jsx)(t.li,{children:"Verifies a result the user can observe."}),"\n",(0,s.jsx)(t.li,{children:"Passes repeatedly on one device before you add more devices."}),"\n",(0,s.jsx)(t.li,{children:"Produces a log or screenshot that makes failures actionable."}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["Choose the next critical journey and repeat the same loop: ",(0,s.jsx)(t.strong,{children:"capture, strengthen with AI, run, diagnose, and refine"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.