Vraag Hoe Core Data Migration te testen met een app die al in de App Store is?


We hebben een app die zich momenteel in de app store bevindt. Het gebruikt Core Data als zijn persistentiemechanisme. We hebben een nieuwe versie die klaar is om te gebruiken en het heeft een aantal schemawijzigingen. Concreet hebben we 1 nieuwe entiteit toegevoegd en een nieuw attribuut toegevoegd aan een bestaande entiteit. Vanuit mijn begrip en lezen is dit een van de meest eenvoudige migraties die kunnen plaatsvinden. Er zijn geen veldverwijderingen en er zijn geen relaties om te veranderen. Het gegevensmodel bestaat uit 5 entiteiten zonder enige relatie.

We hebben het datamodel gemoderniseerd en een .xcmappingmodel gemaakt om de migratie af te handelen. We behandelen de migratie door de volgende opties toe te voegen aan de aanmaak van de PersistentStoreCoordinator:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                     [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, nil];

Momenteel hebben we met succes verschillende leden van het team getest met behulp van het volgende proces:

  1. Verwijder alle testversies van de app van het apparaat en van iTunes
  2. Ga naar de app store en download de huidige versie
  3. Breng enkele wijzigingen aan in de app die aantonen dat de migratie succesvol is verlopen
  4. Sleep het nieuwe binaire bestand (ondertekend met dezelfde bundel-ID) naar iTunes en synchroniseer
  5. Laad de nieuwe versie op het apparaat, controleer of de wijzigingen in de vorige versie nog steeds aanwezig zijn en dat de app niet crasht

Mijn vraag is dit: Is er een eenvoudigere / betere manier om dit te testen? Onze zorg is dat zodra de app de deur uitgaat, er geen andere manier is om onze gebruikers de best mogelijke ervaring te bieden.


12
2018-06-01 02:48


oorsprong


antwoorden:


Ik heb gebruikt Core Data voor mijn app en ongeveer 7 keer geüpgraded, van oude modellen naar nieuwe modellen.

Telkens wanneer ik bereid ben om de volgende versie uit te brengen, test ik migratie altijd met behulp van Model Mapping. Zolang ik elke entiteit en elk attribuut van het bronmodel heb gemaakt is matched against corresponding entiteit en attribuut van het bestemmingsmodel, ik heb geen probleem ondervonden.

Testen met uw eigen projectbestanden is net zo hetzelfde als het testen van vrijgegeven exemplaren die worden gedistribueerd naar de klanten, dus u hoeft zich geen zorgen te maken als uw test voor het migreren van het oude model naar een nieuw model geldig is.

Met andere woorden, het doel van uw projectbundel, dat zal worden gearchiveerd en ingediend, is hetzelfde als wat de klant downloadt.

Ik heb er vrij veel vertrouwen in dat dit het geval is, omdat ik zonder problemen heb getest met verschillende versies van mijn app.


5
2018-06-01 07:39



Ja.

Ik hoop dat je je broncode beheert in een broncodebeheersysteem. Zo niet, begin dan zo snel mogelijk. Xcode 4 biedt git ingebouwd, gebruik die als je geen andere hebt.

Als je de oude broncode hebt, bewaar je twee verschillende mappen, de 1.0-build (die nu in de winkel staat) en de 1.1-build. Als je de gegevens die in de simulator worden uitgevoerd, kunt manipuleren, is dat ideaal.

Je slaat je kerngegevens op in een bestand in de app, het is nu zo /Users/bshirley/Library/Application\ Support/iPhone\ Simulator/4.3.2/Applications/6D18BD0E-70C1-41FB-9BE8-F736CAAA9FFC/Documents/MyApp.sqlite

U kunt dit uit de directory kopiëren, toevoegen als een bron in de nieuwe app en de conversie uitvoeren elke keer dat u de app opnieuw installeert op de sim / het apparaat. U kunt elke nieuwe versie van het oude formaat toevoegen om verschillende gegevenssets uit te proberen.


2
2018-06-01 03:07