title: Ð Ð°Ð·ÑÐ°Ð±Ð¾ÑÐºÐ° Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑÐµÐºÐ¸ Ð´Ð»Ñ snapshot ÑÐµÑÑÐ¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ iOS Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ Ð½Ð° Swift
title: Ð²ÑÐ¿ÑÑÐºÐ½Ð°Ñ ÐºÐ²Ð°Ð»Ð¸ÑÐ¸ÐºÐ°ÑÐ¸Ð¾Ð½Ð½Ð°Ñ ÑÐ°Ð±Ð¾ÑÐ° Ð±Ð°ÐºÐ°Ð»Ð°Ð²ÑÐ°
titleType: Subtitle
title: Development of a Library for Snapshot Testing iOS Applications in Swift
Creators: name: ÐÐ¾ÑÑÐºÐ¸Ð½, ÐÑÐ°Ð½Ð°ÑÐ¸Ð¹
Publisher: name: Ð¡Ð°Ð½ÐºÑ-ÐÐµÑÐµÑÐ±ÑÑÐ³ÑÐºÐ¸Ð¹ Ð¿Ð¾Ð»Ð¸ÑÐµÑÐ½Ð¸ÑÐµÑÐºÐ¸Ð¹ ÑÐ½Ð¸Ð²ÐµÑÑÐ¸ÑÐµÑ ÐÐµÑÑÐ° ÐÐµÐ»Ð¸ÐºÐ¾Ð³Ð¾
Year: 2024
Subjects: ÐºÐ°ÑÐµÑÑÐ²Ð¾ ÐÐ
ÑÐµÑÑÐ¸ÑÐ¾Ð²Ð°Ð½Ð¸Ðµ
Apple Metal
Metal Computed Shaders
Ð¿Ð°ÑÐ°Ð»Ð»ÐµÐ»ÑÐ½ÑÐ¹ Ð°Ð»Ð³Ð¾ÑÐ¸ÑÐ¼
ÐºÐ»Ð°ÑÑÐµÑÐ½ÑÐ¹ Ð°Ð½Ð°Ð»Ð¸Ð·
Snapshot Testing
software quality
testing
parallel algorithm
cluster analysis

description: Ð¦ÐµÐ»Ñ ÑÐ°Ð±Ð¾ÑÑ â ÑÐ°Ð·ÑÐ°Ð±Ð¾ÑÐºÐ° Ð¸Ð½ÑÑÑÑÐ¼ÐµÐ½ÑÐ° Ð´Ð»Ñ Ð¿ÑÐ¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ ÑÐµÑÑÐ¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ ios Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ Ð½Ð° Ð¾ÑÐ½Ð¾Ð²Ðµ ÑÐ½Ð¸Ð¼ÐºÐ¾Ð². ÐÐ½ÐµÐ´ÑÐµÐ½Ð¸Ðµ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ð¿Ð¾Ð´ÑÐ¾Ð´Ð° Ð½Ð° Ð¾ÑÐ½Ð¾Ð²Ðµ ÐºÐ»Ð°ÑÑÐµÑÐ½Ð¾Ð³Ð¾ Ð°Ð½Ð°Ð»Ð¸Ð·Ð° Ñ ÑÐµÐ°Ð»Ð¸Ð·Ð°ÑÐ¸ÐµÐ¹ Ð½Ð° Ð²ÑÑÐ¸ÑÐ»Ð¸ÑÐµÐ»ÑÐ½ÑÑ ÑÐµÐ¹Ð´ÐµÑÐ°Ñ. Ð­ÑÐ¾ Ð´Ð°ÑÑ ÑÐ°Ð·ÑÐ°Ð±Ð¾ÑÑÐ¸ÐºÐ°Ð¼ Ð½Ð¾Ð²ÑÐ¹ Ð±Ð¾Ð»ÐµÐµ Ð¿ÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð¸ÑÐµÐ»ÑÐ½ÑÐ¹ Ð¸Ð½ÑÑÑÑÐ¼ÐµÐ½Ñ Ñ Ð³Ð¸Ð±ÐºÐ¸Ð¼Ð¸ Ð½Ð°ÑÑÑÐ¾Ð¹ÐºÐ°Ð¼Ð¸ Ð¸ Ð½Ð¾Ð²ÑÐ¼Ð¸ ÑÑÑÐ°ÑÐµÐ³Ð¸ÑÐ¼Ð¸ Ð² Ð±Ð¾ÑÑÐ±Ðµ Ñ Ð²ÑÐ±ÑÐ¾ÑÐ°Ð¼Ð¸. ÐÐ°Ð´Ð°ÑÐ¸, ÐºÐ¾ÑÐ¾ÑÑÐµ ÑÐµÑÐ°Ð»Ð¸ÑÑ Ð² ÑÐ¾Ð´Ðµ ÑÐ°Ð±Ð¾ÑÑ: 1. ÐÐ½Ð°Ð»Ð¸Ð· ÑÑÑÐµÑÑÐ²ÑÑÑÐ¸Ñ ÑÐµÑÐµÐ½Ð¸Ð¹. 2. ÐÑÐ¾ÐµÐºÑÐ¸ÑÐ¾Ð²Ð°Ð½Ð¸Ðµ Ð°ÑÑÐ¸ÑÐµÐºÑÑÑÑ. 3. Ð Ð°Ð·ÑÐ°Ð±Ð¾ÑÐºÐ° Ð°Ð»Ð³Ð¾ÑÐ¸ÑÐ¼Ð° ÐºÐ»Ð°ÑÑÐµÑÐ½Ð¾Ð³Ð¾ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°. 4. Ð¡Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ ÑÐµÑÑÐ¾Ð². 5. ÐÑÐµÐ½ÐºÐ° Ð¿ÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð¸ÑÐµÐ»ÑÐ½Ð¾ÑÑÐ¸ ÑÐ¾Ð·Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑÐµÑÐµÐ½Ð¸Ñ. ÐÑÐ¾Ð²ÐµÐ´ÐµÐ½ Ð°Ð½Ð°Ð»Ð¸Ð· ÑÑÑÐµÑÑÐ²ÑÑÑÐ¸Ñ ÑÐµÑÐµÐ½Ð¸Ð¹ Ð´Ð»Ñ snapshot ÑÐµÑÑÐ¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² Ð¸Ð½Ð´ÑÑÑÑÐ¸Ð¸ iOS-ÑÐ°Ð·ÑÐ°Ð±Ð¾ÑÐºÐ¸. ÐÑÐ½Ð¾Ð²Ð½Ð¾Ð¹ ÑÐ¿Ð¾Ñ Ð±ÑÐ» ÑÐ´ÐµÐ»Ð°Ð½ Ð½Ð° Ð¾ÑÐ¾Ð±ÐµÐ½Ð½Ð¾ÑÑÐ¸ ÑÐ°Ð±Ð¾ÑÑ Ð°Ð»Ð³Ð¾ÑÐ¸ÑÐ¼Ð¾Ð² Ð¾Ð±ÑÐ°Ð±Ð¾ÑÐºÐ¸ Ð²ÑÐ±ÑÐ¾ÑÐ¾Ð² Ð¸ Ð¾ÑÐµÐ½ÐºÐ° Ð¸Ñ ÑÑÑÐµÐºÑÐ¸Ð²Ð½Ð¾ÑÑÐ¸. ÐÑÐ»Ð¸ Ð²ÑÑÐ²Ð»ÐµÐ½Ñ Ð½ÐµÐ´Ð¾ÑÑÐ°ÑÐºÐ¸ Ð¸Ð¼ÐµÑÑÐ¸ÑÑÑ ÑÐµÑÐµÐ½Ð¸Ð¹, ÑÐ°ÐºÐ¸Ðµ ÐºÐ°Ðº Ð¾Ð´Ð½Ð¾ÑÐ¸Ð¿Ð½Ð¾ÑÑÑ Ð¿Ð¾Ð´ÑÐ¾Ð´Ð¾Ð², Ð½ÐµÐ´Ð¾ÑÑÐ°ÑÐ¾Ðº Ð´Ð°Ð½Ð½ÑÑ Ð½Ð° Ð²ÑÑÐ¾Ð´Ðµ Ð¸ Ð¾Ð³ÑÐ°Ð½Ð¸ÑÐµÐ½Ð½ÑÐµ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÐ¸ Ð¿Ð°ÑÐ°Ð¼ÐµÑÑÐ¸Ð·Ð°ÑÐ¸Ð¸ ÑÐµÑÑÐ¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ. Ð Ð°Ð·ÑÐ°Ð±Ð¾ÑÐ°Ð½Ð½Ð¾Ðµ ÑÐµÑÐµÐ½Ð¸Ðµ Ð¿ÑÐµÐ´Ð»Ð°Ð³Ð°ÐµÑ Ð½Ð¾Ð²ÑÐ¹ ÑÐ¿Ð¾ÑÐ¾Ð± Ð±Ð¾ÑÑÐ±Ñ Ñ Ð²ÑÐ±ÑÐ¾ÑÐ°Ð¼Ð¸, Ð° ÐµÐ³Ð¾ ÑÐµÐ°Ð»Ð¸Ð·Ð°ÑÐ¸Ñ Ð² Ð²Ð¸Ð´Ðµ Ð¿Ð°ÑÐ°Ð»Ð»ÐµÐ»ÑÐ½Ð¾Ð³Ð¾ Ð°Ð»Ð³Ð¾ÑÐ¸ÑÐ¼Ð° Ñ Ð¸ÑÐ¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼ GPU Apple Metal Ð¿ÑÐµÐ²Ð¾ÑÑÐ¾Ð´Ð¸Ñ Ð¿Ð¾ ÑÐºÐ¾ÑÐ¾ÑÑÐ¸ ÑÑÑÐµÑÑÐ²ÑÑÑÐµÐµ Ð°ÐºÑÑÐ°Ð»ÑÐ½Ð¾Ðµ ÑÐµÑÐµÐ½Ð¸Ðµ. ÐÑÐ¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ Metal Ð¿ÑÐ¸ ÑÐµÐ°Ð»Ð¸Ð·Ð°ÑÐ¸Ð¸ Ð°Ð»Ð³Ð¾ÑÐ¸ÑÐ¼Ð° Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ð» Ð±ÐµÐ· Ð¿Ð¾ÑÐµÑÐ¸ Ð¿ÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð¸ÑÐµÐ»ÑÐ½Ð¾ÑÑÐ¸ Ð¿Ð¾Ð²ÑÑÐ¸ÑÑ Ð³Ð¸Ð±ÐºÐ¾ÑÑÑ Ð½Ð°ÑÑÑÐ°Ð¸Ð²Ð°ÐµÐ¼ÑÑ Ð¿Ð°ÑÐ°Ð¼ÐµÑÑÐ¾Ð² ÑÐµÑÑÐ°.
description: The aim of the work is to develop a tool for testing iOS applications based on snapshots. Implementation of a new approach based on cluster analysis with implementation on computed shaders. This will provide developers with a new, more efficient tool with flexible settings and new strategies to deal with outliers. Tasks addressed during the work: 1. Analysis of existing solutions. 2. Architecture design. 3. Development of cluster analysis algorithm. 4. Test creation. 5. Performance evaluation of the developed solution. An analysis of existing solutions for snapshot testing in the iOS development industry was conducted. The main emphasis was placed on the features of outlier processing algorithms and the evaluation of their effectiveness. The drawbacks of existing solutions were identified, such as uniformity of approaches, lack of output data, and limited testing parameterization capabilities. The developed solution offers a new way to handle outliers, and its implementation as a parallel algorithm using Apple Metal GPU surpasses the speed of existing relevant solutions. Using Metal in the algorithm implementation allowed for increased flexibility of test parameters without sacrificing performance.