The present disclosure relates generally to application program reviewing and testing application programs.
This section is intended to introduce the reader to various aspects of art that may be related to various aspects of the present disclosure, which are described and/or claimed below. The background information discussed herein should provide the reader with a better understanding of various aspects of the present disclosure. Accordingly, it should be understood that these statements are to be read in this light, and not as admissions of prior art.
Application programs continue to become prevalent. Application programs provide numerous functions and features. However, developers may want to test for errors, issues, or consumer response to design before the application program reaches production. Thus, developers may test the applications internally, but the developers may also wish to include external testers. However, external testers may lack technical sophistication to enable to external testers to provide information specific to their electronic devices to pair their devices with the tested application program.
A summary of certain embodiments disclosed herein is set forth below. It should be understood that these aspects are presented merely to provide the reader with a brief summary of these certain embodiments and that these aspects are not intended to limit the scope of this disclosure. Indeed, this disclosure may encompass a variety of aspects that may not be set forth below.
The present disclosure generally relates to techniques for testing application programs prior to production that enables the developer to internally test and beta test an application program. Furthermore, a potential tester may be added to a beta test list without providing information specific to a device or account information. Specifically, a tester may provide the developer with any contact information that allows the user to receive a beta test invitation. The beta test invitation may include a link that opens a beta testing application that allows the tester to enter account information that is sent to an organization that distributes the application program without sharing such information with the developer. The distributing organization then may create a provisioning profile that pairs the device with the tested application. Thus, the developer may add external testers even when the external testers do not want to share personal account information or have the ability to share device identification information with the developer.
Various aspects of this disclosure may be better understood upon reading the following detailed description and upon reference to the drawings in which:
One or more specific embodiments of the present disclosure will be described below. These described embodiments are only examples of the presently disclosed techniques. Additionally, in an effort to provide a concise description of these embodiments, all features of an actual implementation may not be described in the specification. It should be appreciated that in the development of any such actual implementation, as in any engineering or design project, numerous implementation-specific decisions must be made to achieve the developers' specific goals, such as compliance with system-related and business-related constraints, which may vary from one implementation to another. Moreover, it should be appreciated that such a development effort might be complex and time consuming, but would nevertheless be a routine undertaking of design, fabrication, and manufacture for those of ordinary skill having the benefit of this disclosure.
When introducing elements of various embodiments of the present disclosure, the articles “a,” “an,” and “the” are intended to mean that there are one or more of the elements. The terms “comprising,” “including,” and “having” are intended to be inclusive and mean that there may be additional elements other than the listed elements. Additionally, it should be understood that references to “one embodiment” or “an embodiment” of the present disclosure are not intended to be interpreted as excluding the existence of additional embodiments that also incorporate the recited features.
The present disclosure generally relates to techniques for testing application programs prior to production that enables the developer to internally test and beta test an application program. Furthermore, the developer may add a potential tester a beta test list without the tester providing device-specific information or account information. Specifically, a tester may provide the developer with any contact information that allows the user to receive a beta test invitation. The beta test invitation may include a link that opens a beta testing application that allows the tester to enter account information that is sent to an organization that distributes the application program without sharing such information with the developer. The distributing organization then may create a provisioning profile that pairs the device with the tested application.
Using the provisioning profile, the tester may install a beta tested version of the application using a sandboxed beta account that the distributing organization has linked to the device and the tester's account (e.g., a production account) corresponding to the information sent to the distributing organization. In some scenarios, the sandboxed beta account may be used to “purchase” applications or in-app purchases without the costs that would be associated with the same purchases using the production account. Therefore, the beta tested application may be fully tested using a sandbox environment so that even purchased features may be fully beta tested.
A variety of suitable electronic devices may employ the techniques described herein.
Turning first to
By way of example, the electronic device 10 may represent a block diagram of the handheld device depicted in
The processor(s) 18 and/or other data processing circuitry may execute instructions and/or operate on data stored in the memory 20 and/or nonvolatile storage 22. The memory 20 and the nonvolatile storage 22 may be any suitable articles of manufacture that include tangible, non-transitory, computer-readable media to store the instructions or data, such as random-access memory, read-only memory, rewritable flash memory, hard drives, and optical discs. By way of example, a computer program product containing the instructions may include an operating system (e.g., OS X® or iOS by Apple Inc.) or an application program (e.g., iBooks® by Apple Inc.).
The network interface 24 may include, for example, one or more interfaces for a personal area network (PAN), such as a Bluetooth network, for a local area network (LAN), such as an 802.11x Wi-Fi network, and/or for a wide area network (WAN), such as a 4G or LTE cellular network. The power source 26 of the electronic device 10 may be any suitable source of energy, such as a rechargeable lithium polymer (Li-poly) battery and/or an alternating current (AC) power converter.
As mentioned above, the electronic device 10 may take the form of a computer or other type of electronic device. Such computers may include computers that are generally portable (such as laptop, notebook, and tablet computers) as well as computers that are generally used in one place (such as conventional desktop computers, workstations and/or servers).
The handheld device 10A may include an enclosure 28 to protect interior components from physical damage and to shield them from electromagnetic interference. The enclosure 28 may surround the display 12, which may display a graphical user interface (GUI) 30 having an array of icons 32. By way of example, one of the icons 32 may launch an application program (e.g., iBooks® by Apple Inc.). User input structures 14, in combination with the display 12, may allow a user to control the handheld device 10A. For example, the input structures 14 may activate or deactivate the handheld device 10A, navigate a user interface to a home screen, navigate a user interface to a user-configurable application screen, activate a voice-recognition feature, provide volume control, and toggle between vibrate and ring modes. Touchscreen features of the display 12 of the handheld device 10A may provide a simplified approach to controlling the application programs. The handheld device 10A may include I/O ports 16 that open through the enclosure 28. These I/O ports 16 may include, for example, an audio jack and/or a Lightning® port from Apple Inc. to connect to external devices. The electronic device 10 may also be a tablet device 10B, as illustrated in
In certain embodiments, the electronic device 10 may take the form of a computer, such as a model of a MacBook®, MacBook® Pro, MacBook Air®, iMac®, Mac® mini, or Mac Pro® available from Apple Inc. By way of example, the electronic device 10, taking the form of a notebook computer 10C, is illustrated in
With the preceding in mind,
Each of the electronic devices 10 may store and execute application programs in a respective storage 22. In some embodiments, these application programs may be developed using one or more electronic devices (e.g., notebook computer 54) and uploaded to the servers 46 to be retrieved, stored, and installed on other electronic devices (e.g., tablet device 60).
The developer may add internal testers (block 74) that may immediately view, download, upload, or modify the application program settings, fees, and/or code. In some embodiments, one or more of the internal testers or the developer, via an electronic device, may submit the application program build for beta review (block 76) so that beta testers may be added for the application program (block 78). In some embodiments, invitations to the beta testers may be delayed until a beta testing review has occurred. In other embodiments, the beta testers are invited as soon as the beta testers are added. Once beta testing has been completed, a production version of the build may be submitted for a production review (block 80). Once the production build has been approved, the build may be added to an online store that enables any user access to the application. (block 82) In some embodiments, a distributing organization may conduct a single review to replace the both the beta review and the production review. In some embodiments, this single review may be conducted prior to, during, or after beta testing.
In other words, a developer of an application program may designate two different classifications of testers: internal testers and external (e.g., beta) testers. In some embodiments, the internal testers may be a group of developers that may exert a level of control over the application program. For example, in some embodiments, internal testers may change prices of the applications, edit and reupload builds, invite beta testers, determine which builds are to be beta tested, and/or other application program controls. In certain embodiments, internal testers may include other developers that are already registered as a developer with a distributing organization (e.g., organization operating the servers and reviewing the application program). For example, the internal testers may be iTunes® Connect users that are part of the iOS® Development Program or the Mac® Developer Program.
On the other hand, beta testers may be any person that the developer wants to add to his beta testing group. Furthermore, internal testers may have access to more than one build and/or may have access to builds immediately after the builds are uploaded. Beta testers may instead only receive builds that have been selected for beta testing by the developer, one or more internal testers, and/or the distribution organization via beta review.
When the screen 80 is presented using a web browser, the developer may navigate to an application program management page via a uniform resource locator (URL) 84. The URL 84 may direct the browser to display a menu of information and options, such as menus for inspecting or uploading application programs, managing payment information, or inspecting or uploading media (e.g., movies, music, or application programs) for sale. Upon selection of the application programs menu, the screen 80 may be displayed by the browser 82 as indicated by a title 86. The screen 80 further shows that iPhoto® has been selected as indicated by an application title 88. The screen 80 also shows additional information that may be presented to the developer. For example, the screen 80 may show an application name 90, an operating system or environment 92 for the application program, a currently available version 94 of the application, and/or additional information that may be helpful for the developer to be able to quickly identify about the application program and/or its versions and builds.
The screen 80 also includes eight tabs 96, 98, 100, 102, 104, 106, 108, and 110 that provide different options and actions to the developer in managing the applications. The name of the selected tab may be shown differently than other tabs to indicate which tab is currently selected. In some embodiments, the screen 80 may include more or less tabs. For example, the screen 80 may include 0, 1, 2, 3, 4, 5, or more tabs. Within the prerelease tab 98 of screen 80, three sub-tabs—a builds tab 112, an internal testers tab 114, and a beta testers tab 116. An indicator 118 may be used to indicate which tab has been selected. For example, the indicator 118 indicates that the builds tab 112 is currently selected.
Within the builds tab 112, one or more versions 120 may be presented with respective builds. For example, in the current embodiment, a single version—2.1—has a single build 100. Data pertaining to the builds may be presented in columns or any other suitable presentation format. The presented data may include an application icon 122 for the build, a build number 124, an upload date 126 for the build, information about internal testers 128, information about external or beta testers 130, a number of installations 132 of the build, a number of sessions 134 of the build, a number of crashes 136 of the build, and/or other pertinent information about the build. In some embodiments, a testing button 137 may be included to toggle whether the application program is to be tested. In some embodiments, the internal testers information 128 and/or the beta testers information 130 may include statuses of the internal and beta testing process including corresponding link 138 and 139 to complete the next steps. For example, the illustrated link 138 provides a link 138 that when selected causes invitations to be sent to the internal testers, if internal testers have been previously added. Similarly, the illustrated link 139 when selected causes the build to be submitted for review or provides a page for inputting information that may be used in the review process.
In some embodiments, internal testers may be added to the application program before even a single build is uploaded for the application program. For example, screen 140 of
In some embodiments, a brief summary may be included for each added tester. For example, a name 142 for each tester indicates a name of the internal tester. Status information 143 may be displayed about each particular tester. Specifically, the status information 143 may indicate whether the tester has been added, has been invited, has accepted the invitation, has quit internal testing, or is currently an active tester for the application program build. A latest build 144 may be used to indicate the most recent build that the tester has been using. Likewise, sessions 146 and crashes 148 may indicate how many times the tester has run the build or application and experienced a crash, respectively. A testing toggle 150 may be used to indicate whether the internal tester should be added as a tester for this build. In other words, internal testers may be added to the tab but selected for or removed from testing at a different time. This later flexibility of testing status may be useful for prioritizing internal testers, which may be particularly helpful if a number of allowed internal testers is limited. For example, in the current embodiment, six internal testers have been assigned out of the maximum of 25 internal testers. Thus, the developer may be able to quickly ascertain whether additional internal testers should be added or if the spots should by saved for other more desirable (e.g., different technical levels or demographics) testers. In other embodiments, different limits (e.g., 5, 10, 15, 20, or more internal testers) may be placed on the total number of internal testers.
When a developer selects to submit a build for beta testing via the link 139 or the beta testers tab 116, a starting beta testing screen may be displayed, such as the screen 160 of
The screen 160 also includes an app information section 164 that enables the developer to provide information for beta testers to see when the beta testers add the application program to their electronic devices. For example, the information section 164 may include a new information section 166, an app description section 168, and a beta information section 170. The new information section 166 may provide a place for the developer to provide a description of newly added features to be tested in the beta tests. The app description section 168 enables the developer to provide a brief description detailing the functions of the application program. The beta information section 170 allows the developer to provide contact information (e.g., contact name, contact email address, contact phone number, contact address, etc.) for receiving beta testing results or other beta testing information. In some embodiments, the screen 160 may further include additional information that may be relevant to the distributing organization. For example, the screen 160 may include a questionnaire that asks pertinent questions about the build about which the distributing organization may desire to know, such as “Have you made any significant changes to this beta build since your previous submission?” The responses to the questionnaire may be used to assist the distributing organization in reviewing the newly-submitted build. In certain embodiments, the screen 160 may include a process advancement navigation 171 that allows the user to advance to the next step in the beta testing process or to cancel the current step of the beta testing process.
To add beta testers, the developer may select a beta tester addition box 176 that opens a beta testers input screen 178 illustrated in
As will be discussed below, the desired tester is contacted via the contact information and may become a beta tester without giving confidential iTunes account information to developers. Thus, the tester may keep iTunes contact information private while participating in the beta test. In some embodiments, contact information may include a phone number (e.g., with a texted link), a physical address (e.g., a postcard with URL attached), and/or other contact information may be used. To complete the beta testers addition process, the screen 178 may include a beta tester addition navigation 182 that may be used to confirm or cancel the addition of the testers input into the input box 180.
After beta testers are added, a beta testers added screen, such as the beta testers added screen 190 of
In some embodiments, the developer may group the beta testers into various groups, such as designers, internal developers, quality assurance, stakeholders, friends, family, another suitable grouping of users, or some combination thereof. The grouping of users allows the developer to quickly review that an intended type of review is being conducted by sorted the listing 196 by group types (e.g., quality assurance).
Returning to the builds tab 112 after the beta testers have been added, a quick summary screen 212 as illustrated in
Although the foregoing discusses only a single build of an application program, a developer may add additional builds or version trains at a later time even when a current build is already being beta tested. For example, a build tab screen 216 of
Although the developer may review data related to a build through a website or testing application program, in some embodiments, some details may be sent to the developer as notifications. For example, the developer may receive a notification via email, via text message, via a notification screen of a device, notification within a testing application, or other suitable method for informing the developer of changes in the beta testing process and/or testers. For example,
When the electronic device receives a selection of a link in the invitation, the electronic device opens the link (block 238). In some embodiments, the link may include a hyperlink that is opened in a browser of the electronic device. In certain embodiments, the link may be application specific, and the electronic device may open the link through specific application, such as a beta testing application or an application program used to distribute application programs, such as a store operated by the distributing organization. In any case, the electronic device requests account information from the tester (block 240). The electronic device then receives the account information (block 242). The account information may be an account that the tester has previously established with the distributing company, or, instead, the tester may establish a new account. In any case, the tester may authenticate the account without providing contact information or login information to the developer for the account, since, as discussed below, the servers 46 are able to link the tester with an account without requiring the developer to know contact information about the user.
Once the electronic device has authenticated an account via a connection with the servers 46, the electronic device may run the beta tested application (block 244). For example, the electronic device may download a testing application be used to download, manage, or view beta tested applications. In some embodiments, the testing application program may already be downloaded and authentication of account may link the invitation to a tester's account without the tester sharing account information with the developer. For example, the electronic device may request the account information using the beta testing application 250 as illustrated in
In some embodiments, the beta testing application may display additional information before running or testing the tested application. For example, the testing application may display a terms of service and privacy policy 254 of
In some embodiments, a user may add the testing application to one or more electronic devices without first receiving an invitation to beta test an application program. In such embodiments, when the testing application is opened, the testing application may inform the user that they are not currently testing any apps. For example, the notification screen 260 of
In some embodiments, the testing application may visually emulate another application that the tester may be comfortable with. For instance, the testing application may emulate an application program store that is operated by the distributing organization. For example, the testing application may emulate the App StoreSM as illustrated in
In certain embodiments, as illustrated in
Within the testing application, the electronic device 10 may present additional information about the build being beta tested. For instance, as illustrated in
In some embodiments, a tester, once added to a beta test, may test an application on multiple devices. In some embodiments, the number of devices may be limited for an account. For example, a testing application and the related account may be used on five devices. Consider the scenario when a user has more than five devices or has lost access to one of the five registered accounts. The tester may want to manage devices tied to the beta test. Accordingly, the testing application may include a device management screen 300, illustrated in
During the beta testing process, the tester may receive additional updates or notifications about beta testing application changes. For example, the electronic device may receive and display notifications that an application is a beta-testing-available application. For example, in some embodiments, the electronic device may display beta application program icons or names differently than production applications. For example, the icon may include a dot next to the name of the application. In other embodiments, the icon may have a background or other indication that indicates that the application is beta-testing-available.
The tester may also receive other notifications other than availability of a beta test application. For example, the tester may receive notifications of awards that may be available for achieving various levels of testing. For example, a developer may decide to give in-application rewards or application program discounts or giveaways. For example, the developer may award in-game items that may only be attained via beta testing; the developer may give the application to the tester for free once a predetermined level of testing has been performed or a predetermined amount of productive feedback has been sent by the beta tester; or the developer may set other rewards for beta testing the application that may incentivize the beta testers to test applications. In some embodiments, the notifications may be sent before or after the award has been earned. These notifications of these awards or leaderboards may be made available to the tester via notifications, such email, text messages, application push notifications, operating system notifications, or other suitable notification methods.
The simplified beta testing and internal testing scheme discussed herein may be implemented using one or more servers, such as the servers 46.
Furthermore, in some embodiments, the servers 46 may track, manage, send, control, and/or store beta applications using a beta test store and track, manage, send, control, and/or store production applications using a production store. Indeed, in some embodiments, the production store and the beta test store may be stored and implemented using different portions of the servers 46. For example, in some embodiments, the production store may run on a first subset of the servers 46 while the beta test store runs on a second subset of the servers 46. Thus, in such embodiments, the production store and the beta test store are partitioned from each other.
In embodiments, where a new build is to be approved through an application review before testing, the servers 46 may send the build for an application review (block 306). For example, the build may be sent to another server or digitally sent to an appropriate application review organization. For example, the build to be tested may be sent to an application review committee based on a function type of the application program to be tested. In other embodiments, the servers 46 may “send” the application program to a code check that determined whether detrimental code exists in the application program. For example, the code check may check for viruses, malware, memory leaks, infinite loops, and/or other code that may cause the application program to behave in a manner detrimental to an executing device. In some embodiments, at least a portion of the code check may be an automated code scan or execution.
The servers 46 also receive contact information for testers to be added to the testing program (block 308). In certain embodiments, the testers may be added before receiving the build. In such embodiments, when a new build has been uploaded and/or approved, the servers 46 may notify currently added testers of previous builds of the availability of the beta test or updated build. In other embodiments, the build may be uploaded prior to the addition of testers.
In embodiments where the build is subject to an application review, the beta testing process may be halted from proceeding to sending invitations until the application program has been reviewed. Once the servers 46 have determined that the beta testing process is ready to advance, the servers 46 may send beta test invitations to added testers (block 310). As previously discussed, the invitations may include a link that may be selected by the tester that opens a request for account credentials from the tester. Furthermore, the invitations may be for a limited period of time (e.g., 30 days) that may be used as a “try before buy” that enables the tester to demo the application before purchasing the application. Furthermore, a person or organization considering acquiring rights to the application program may beta test the application prior to buying and/or transferring the application program management to the transferee.
The servers 46 receive account credentials from the tester (block 312). For example, the servers 46 may receive biometric or login information for an account with the servers. Thus, as previously discussed, the tester may send the login information to the servers without sharing the login information with the developer. In some embodiments, the account credentials may be used to create a new account with the servers 46. Using the received account credentials, the servers 46 may link the account associated with the credentials to the beta test application (block 314). In some embodiments, the servers 46 may acquire a directory services identification (DSID) cryptography key or unique device identifier (UDID) of the tester's electronic device to create or add to a current beta account that is linked to the account associated with the credentials. The servers 46 may use the beta account to create a sandbox environment that enables the tester to fully test the beta tested application, as previously discussed. The DSID cryptography key is linked to the sandboxed beta account. In some embodiments, using the sandboxed beta account, the tester may acquire in-app purchases or beta applications without paying a fee through the sandboxed account even though a similar action through the account associated with the credentials would have a monetary cost. In some embodiments, the sandboxed beta account may be used with a limited number of devices (e.g., 5).
After creation or association of a beta account with a beta tested application, the servers 46 send the build to an electronic device of a tester (block 316). As part of the sending and install process, a developer-signed provisioning profile is created for the device upon which the application is being installed. Thus, the provisioning profile is device-specific and paired with the beta tested application. In some embodiments, the profile has a limited period of time (e.g., 30 days) for the pairing of the device with the beta tested application. In some embodiments, the build may be encrypted, and the servers 46 provide a key that provides the tester access to the application. However, in certain embodiments, the developer and/or the servers 46 may exert some control over the key as digital rights management. For example, the developer may choose to remove the tester from their approved beta testers, and the servers 46 may revoke the key such that the tester no longer has access to the tested application even if the provisioning profile has not expired.
During beta testing, the servers 46 track information about the beta tested application (block 318). For example, the servers 46 may track the number of times that the beta tested application how often the beta tested application has been opened or executed. The servers 46 may also track a number of crashes for the beta tested application. The servers 46 may also track testing for each user, and use the information to determine whether each user has qualified for incentives, such as free production applications or in-app purchases. Once these incentives have been earned, the servers 46 may send suitable promo codes or links to the tester for redeeming the incentives.
The specific embodiments described above have been shown by way of example, and it should be understood that these embodiments may be susceptible to various modifications and alternative forms. It should be further understood that the claims are not intended to be limited to the particular forms disclosed, but rather to cover all modifications, equivalents, and alternatives falling within the spirit and scope of this disclosure.