<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="tr">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Aktör Tabanlı Sistemler için Test Kapsama Kriterleri</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Hasan</forename><surname>Sözer</surname></persName>
							<email>hasan.sozer@ozyegin.edu.tr</email>
							<affiliation key="aff0">
								<orgName type="institution">Özyeğin Üniversitesi</orgName>
								<address>
									<settlement>İstanbul</settlement>
									<country>Türkiye</country>
								</address>
							</affiliation>
							<affiliation key="aff2">
								<orgName type="institution">Ozyegin University</orgName>
								<address>
									<settlement>Istanbul</settlement>
									<country key="TR">Turkey</country>
								</address>
							</affiliation>
							<affiliation key="aff0">
								<orgName type="institution">Özyeğin Üniversitesi</orgName>
								<address>
									<settlement>İstanbul</settlement>
									<country>Türkiye</country>
								</address>
							</affiliation>
							<affiliation key="aff2">
								<orgName type="institution">Ozyegin University</orgName>
								<address>
									<settlement>Istanbul</settlement>
									<country key="TR">Turkey</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Ozan</forename><surname>Gürler</surname></persName>
							<email>ozan.gurler@epias.com.tr</email>
							<affiliation key="aff1">
								<orgName type="institution">EPİAŞ</orgName>
								<address>
									<settlement>İstanbul</settlement>
									<country>Türkiye</country>
								</address>
							</affiliation>
							<affiliation key="aff3">
								<orgName type="institution">EPIAS</orgName>
								<address>
									<settlement>Istanbul</settlement>
									<country key="TR">Turkey</country>
								</address>
							</affiliation>
							<affiliation key="aff1">
								<orgName type="institution">EPİAŞ</orgName>
								<address>
									<settlement>İstanbul</settlement>
									<country>Türkiye</country>
								</address>
							</affiliation>
							<affiliation key="aff3">
								<orgName type="institution">EPIAS</orgName>
								<address>
									<settlement>Istanbul</settlement>
									<country key="TR">Turkey</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Orhan</forename><surname>Yılmaz</surname></persName>
							<email>orhan.yilmaz@epias.com.tr</email>
							<affiliation key="aff1">
								<orgName type="institution">EPİAŞ</orgName>
								<address>
									<settlement>İstanbul</settlement>
									<country>Türkiye</country>
								</address>
							</affiliation>
							<affiliation key="aff3">
								<orgName type="institution">EPIAS</orgName>
								<address>
									<settlement>Istanbul</settlement>
									<country key="TR">Turkey</country>
								</address>
							</affiliation>
							<affiliation key="aff1">
								<orgName type="institution">EPİAŞ</orgName>
								<address>
									<settlement>İstanbul</settlement>
									<country>Türkiye</country>
								</address>
							</affiliation>
							<affiliation key="aff3">
								<orgName type="institution">EPIAS</orgName>
								<address>
									<settlement>Istanbul</settlement>
									<country key="TR">Turkey</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Aktör</forename><surname>Modeli</surname></persName>
						</author>
						<author>
							<persName><forename type="first">Eşzamanlı</forename><surname>Programlama</surname></persName>
						</author>
						<author>
							<persName><forename type="first">Dağıtık</forename><surname>Sistemler</surname></persName>
						</author>
						<author>
							<persName><roleName>Test</roleName><forename type="first">Asenkron</forename><surname>Haberleşme</surname></persName>
						</author>
						<author>
							<persName><forename type="first">Kapsama</forename><surname>Kriterleri</surname></persName>
						</author>
						<title level="a" type="main">Aktör Tabanlı Sistemler için Test Kapsama Kriterleri</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">24FEC27DEA47DC04CABCABA8102D2410</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T12:43+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Actor Model</term>
					<term>Concurrent Programming</term>
					<term>Distributed Systems</term>
					<term>Asynchronous Communication</term>
					<term>Test Coverage Metrics</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Aktör tabanlı sistemler, eşzamanlı çalışan ve birbirleri ile asenkron bir şekilde haberleşen aktör isimli otonom elemanlardan oluşmaktadırlar. Asenkron haberleşme sebebiyle aktörler arasında paylaşılan mesajların sıralaması farklılık gösterebilmektedir. Diğer eşzamanlı çalışan sistemlerde olduğu gibi, determinizm yokluğu, aktör tabanlı sistemlerde test ve hata ayıklama süreçlerini zorlaştırmaktadır. Geleneksel test kapsama kriterleri de bu sistemler için etkin olmamaktadır. Bu bildiride, aktör tabanlı sistemler için kullanılabilecek test kapsama kriterleri irdelenmektedir. Literatürde önerilmiş mevcut kriterlere ek olarak yeni kriterler ile, ayrık matematik alanında son zamanlarda yayınlanmış olan çalışmaların aktör tabanlı sistemler için test kapsama kriterleri belirlemek ve değerlendirmek üzere uygulamaları ilk defa bu bildiride ele alınmaktadır. Önerilen kapsama kriterlerine göre değerlendirme yapabilen ve bu kriterleri sağlayacak şekilde test durumlarını otomatik olarak oluşturan bir test altyapısı şu an geliştirme aşamasındadır.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="tr">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Giriş</head><p>Aktör modeli, dağıtık ve eş zamanlı çalışan büyük ölçekli sistemlerin geliştirilebilmesi için önerilmiş bir programlama modelidir <ref type="bibr" target="#b0">[1,</ref><ref type="bibr" target="#b5">6]</ref>. Aktör bazlı sistemler, birbirleri arasında durum bilgisi paylaşmayan, otonom ve eşzamanlı çalışan aktör isimli elemanların bileşiminden oluşmaktadırlar. Bu aktörler birbirleri ile asenkron bir şekilde mesajlar takas ederek haberleşmektedirler. Aktörler konum bilgilerinden habersiz, birbirlerinden bağımsız bir şekilde çalışmaktadırlar. Bu özellikleri, yük dengeleme ve hatalara karşı dayanıklılık için avantaj sağlamaktadır. Her aktör diğer aktörlerden bağımsız ve habersiz olarak başka bir platformda çalıştırılmak üzere taşınabilmekte, yeniden başlatılabilmekte veya çoğaltılabilmektedir. Aktör modelini destekleyen Erlang <ref type="bibr" target="#b6">[7]</ref>, Rebeca <ref type="bibr" target="#b10">[11]</ref>, Scala Aktörleri <ref type="bibr" target="#b7">[8]</ref> ve Akka <ref type="bibr" target="#b8">[9]</ref> gibi birçok farklı programlama/modelleme dili ve çerçevesi bulunmaktadır. Ayrıca, bu modelin Twitter mesajlaşma kuyruğu sistemi, Facebook sohbet sistemi ve Vendetta oyun motoru <ref type="bibr" target="#b9">[10]</ref> gibi endüstriyel uygulamaları da bulunmaktadır.</p><p>Determinizm yokluğu sebebi ile, aktör bazlı sistemler gibi eşzamanlı çalışan sistemlerde test ve hata ayıklama süreçleri zorluklara tâbidir. Genel olarak aktör modeli, aktörler arasında takas edilen mesajların başarılı bir şekilde hedeflerine ulaşmalarını garanti altına almaktadır fakat bu mesajların aktörlere ulaşma sıraları, sistemin her çalışması esnasına değişebilecek olan zamanlamaya bağlıdır.</p><p>Aktör tabanlı sistemlerin test ve hata ayıklama süreçlerinde destek olmaya odaklanmış metot, teknik ve araçlar üzerine az sayıda çalışma olduğu gözlemlenmiştir <ref type="bibr" target="#b12">[13]</ref>. Geleneksel metot, teknik ve araçlar ise bu sistemler için her zaman etkin olmamaktadır. Örneğin, bir test kapsama kriteri olarak tüm kod satırlarının veya kodun akışı içerisindeki tüm dallanmaların kapsanmasının hedeflenmesi, aktör tabanlı sistemlerde hata tespiti için etkin bir kriter değildir. Aktörler genel olarak mesajları işleyen kısa kod bloklarından oluşurlar. Hatalar bu kod bloklarının içeriğinden ziyade, aktörler arasında paylaşılan mesajların öngörülemeyen bir sırada işlenmesinden kaynaklanmaktadırlar <ref type="bibr" target="#b18">[19]</ref>.</p><p>Bu bildiride, aktör tabanlı sistemler için kullanılabilecek test kapsama kriterleri irdelenmektedir. Sıralamaları kapsayan diziler (sequence covering arrays) <ref type="bibr" target="#b10">[11]</ref> ve mesaj çifti sıralamaları (pair of message receives) <ref type="bibr" target="#b16">[17]</ref> gibi literatürde önerilmiş mevcut kriterler tartışılarak yeni kriterler önerilmektedir. Ayrıca, ayrık matematik alanında son zamanlarda yayınlanmış olan çalışmaların <ref type="bibr" target="#b2">[3]</ref> aktör tabanlı sistemler için test kapsama kriterlerini değerlendirmek üzere uygulamaları ilk defa bu bildiride ele alınmaktadır. Önerilen kapsama kriterlerine göre nicel değerlendirme yapabilen ve bu kriterleri sağlayacak şekilde test durumlarını otomatik olarak oluşturan bir test altyapısı<ref type="foot" target="#foot_0">1</ref> şu an geliştirme aşamasındadır <ref type="bibr" target="#b15">[16]</ref>.</p><p>Bildirinin organizasyonu: Bir sonraki bölümde, aktör modeli ve aktör tabanlı sistemlere ilişkin temel bilgiler aktarılmakta ve Java dili ile geliştirilmiş örnek bir sistem tanıtılmaktadır. 3. Bölümde aktör tabanlı sistemler için farklı test kapsama kriterleri irdelenmektedir. 4. Bölümde literatürdeki ilgili çalışmalar özetlenmektedir. Son olarak, 5. Bölümde temel çıkarımlar özetlenerek ileriye dönük çalışmalar listelenmektedir.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Aktör Tabanlı Sistemler</head><p>Aktör modeli dağıtık ve asenkron sistemlerin geliştirilmesi için kullanılmaktadır. Bu sistemler, eş zamanlı çalışan, aktör olarak adlandırılan birimlerden oluşmaktadırlar. Aktörler durum bilgilerini dışarıdan saklamakta ve birbirleri ile sadece mesajlaşma vasıtasıyla iletişim kurmaktadırlar. Bu bakış açısından, aktörlerin çalışma prensibi nesneye yönelik programlama prensipleri ile örtüşmektedir. Ancak, nesnelerden farklı olarak, her aktörün kendine ait bir iş birimi (thread) bulunmaktadır. Çoklu kullanım (multithreading), nesnelerin oluşturulması ve kullanılması sırasında faydalanılabilecek ek bir özellik olarak görülebilir; ancak, bu özellik aktörlerin ayrılmaz bir parçasıdır. Mesajlar aktörler arasında asenkron bir şekilde paylaşılmaktadır. Her aktörün kendisine ulaşan ve işlenmeyi bekleyen mesajların listesini tutan bir posta kutusu bulunmaktadır. Her aktör sırası ile bu mesajları posta kutusundan çıkarmakta ve mesajın içeriğine göre bir takım eylemler gerçekleştirmektedir. Bu eylemler, örneğin, diğer aktörlere mesajlar göndermek veya yeni bir aktör oluşturmak şeklinde gerçekleşebilmektedir. Bir mesaja ilişkin gerçekleştirilen eylemlerin tümü bir bütün olarak kesintiye uğramayan bir işlem birimi (atomic) olarak gerçekleştirilmektedir. Dolayısıyla, programlama modeli gereği olarak, mesajların işlenmesi sırasında, eş zamanlı programlamaya özgü hataların (concurrency bugs) ortaya çıkması beklenmemektedir. Her gönderilen mesajın hedef aktöre iletimi de garanti altına alınmaktadır. Fakat bu mesajların hangi sıra ile aktörlere ulaşacağı konusunda herhangi bir garanti bulunmamaktadır. Bu açıdan bir determinizm yokluğu söz konusudur.</p><p>Şekil 1'de BoundedBuffer uygulamasının <ref type="bibr" target="#b18">[19]</ref> Akka kütüphanesi<ref type="foot" target="#foot_1">2</ref> kullanılarak, Java dili ile gerçeklemesi gösterilmektedir. Bu uygulamada Akka tarafından sunulan UntypedActor sınıfının çocukları olarak 3 çeşit aktör tanımlanmıştır. Bu aktörler sırası ile Buffer (Satır 1-28), Producer (Satır 29-43) ve Consumer (Satır 44-54) olarak isimlendirilmiştir.</p><p>Her aktörün onReceive metodunu tanımlayarak aktör tarafından işlenen her mesaj tipi için gerçekleştirilmesi gereken eylemleri belirtmesi gerekmektedir. Örneğin, Buffer aktörü için tanımlanan onReceive metodunda (Satır 9-27) iki tip mesaj işlenmektedir. Bu mesajlar Put (Satır 10-15) ve Get (Satır 16-24) mesajlarıdır. Her mesaj tipi birer Java sınıfı olarak tanımlanmaktadır ve dolayısıyla mesaj objelerinin kendilerine ait değişkenleri (attributes) ve metodları bulunmaktadır.</p><p>Her aktör, bu aktörün bir referansını ve posta kutusunu saklayan bir AktorRef objesi tarafından kapsanmaktadır. Diğer aktörler mesajlarını ancak bu arayüz üzerinden gönderebilmektedir. Bir aktör, diğer bir aktöre, ilgili aktörün referansı üzerinde tell metodunu çağırarak (Örneğin, Şekil 1'deki 38 nolu satır) asenkron bir şekilde mesaj gönderebilmektedir. Aktörün kendisi, diğer aktörlerin haberi olmaksızın başka bir aktör ile yer değiştirebilmekte, başka bir fiziksel sisteme geçirilebilmekte veya yeniden başlatılabilmektedir.</p><p>BoundedBuffer uygulaması <ref type="bibr" target="#b18">[19]</ref>  </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Aktör Tabanlı Sistemler için Test Kapsama Kriterleri</head><p>Bu bölümde, aktör tabanlı sistemler için farklı test kapsama ölçüleri ve bu ölçülerin hesaplama yöntemleri irdelenmektedir. Temel test kapsama kriteri olarak aktörler arasında paylaşılan mesajların farklı sıralamaları göz önünde bulundurulmaktadır. Tespit edilmesi beklenen hataların, bu mesajların belirli bir sıralamasından kaynaklandığı varsayılmaktadır. Bir aktör tabanlı sistemde, aktörlerin oluşturulması, bu aktörlerin mesajlar göndermesi, bu mesajların bir diğer aktör tarafından işleme alınması gibi birçok farklı olay gerçekleşmektedir. Biz çalışmamızda sadece mesajların iletildikleri aktörler tarafından işleme alınma olaylarına (message receive events) odaklanarak, bu olayların farklı sıralamalarını bir test kapsama kriteri dâhilinde değerlendiriyoruz. Mesajların işleme alınma sıralamaları, dolaylı olarak aktör oluşturma ve mesaj gönderme sıralamalarına da etki etmektedir <ref type="bibr" target="#b16">[17]</ref>. Bir aktör sisteminin çalışması esnasındaki tüm mesaj alınma olaylarını sonlu bir olay dizisi olarak kabul edebiliriz: s = ‹e 1 , e 2 , e 3 , … e n ›. Bu dizide her olay bir (gönderici, alıcı, mesaj) üçlüsü ile ifade edilebilir. Dizi içinde yer alan olaylar arasındaki her bir farklı sıralama, testler sırasında gözlemlenebilir veya kapsam dışında kalabilir.</p><p>Öncelikle, bir sonraki bölümde, aktörler arası mesajlaşma sıralamalarının sayısının üst limitini belirlemek üzere bir yöntem tanıtacağız. Ardından, literatürde önerilen ve aktör tabanlı sistemler için doğrudan kullanılabilecek veya bu amaç için uyarlanabilecek farklı test kapsama ölçülerini tartışacağız.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>3.1</head><p>Test kapsama kriteri olarak bir üst limit</p><p>Aktörler tarafından paylaşılan mesajlar arasında hiçbir nedensel bağımlılık olmadığı durumda, n farklı mesaj için n! farklı sıralama mevcuttur. Ancak, bir önceki bölümde tartışıldığı gibi, gerçekte bazı mesajlar arasında bağımlılıklar bulunmakta ve dolayısıyla bu mesajlar arasındaki kısmi sıralama (partial ordering) hiçbir zaman değişmemektedir. Aşağıdaki koşullardan herhangi birisi sağlandığında, bir olay dizisi içerisindeki iki farklı e i ve e j olayları arasında bağımlılık var demektir <ref type="bibr" target="#b16">[17]</ref>:</p><p> gönderici(e i ) = gönderici(e j )  mesaj(e j ), mesaj(e i ) işleme alınması neticesinde gönderilmiştir  gönderici(e j ), mesaj(e i ) işleme alınması neticesinde oluşturulmuştur</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head> ∃ e k : (i &lt; k &lt; j) ˄ (alıcı(e i ) = alıcı(e k )) ˄ mesaj(e j ), mesaj(e k ) işleme alınması neticesinde gönderilmiştir</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head> ∃ e k : (i &lt; k &lt; j) ˄ (alıcı(e i ) = alıcı(e k )) ˄ gönderici(e j ), mesaj(e k ) işleme alınması neticesinde oluşturulmuştur</head><p>Bu listedeki ilk koşul her aktör tabanlı sistem için geçerli değildir; ancak, Akka [9] gibi bazı çerçevelerde, aynı gönderici tarafından iletilen mesajların aynı sıra ile ulaşmaları garanti edilmektedir. İkinci koşul bir mesajın diğer bir mesaja tepki olarak gönderilmesi durumunu ifade etmektedir. Üçüncü koşul, bir mesajı gönderen aktörün diğer bir mesaja tepki olarak oluşturulduğu durumu ifade etmektedir. Son iki koşul ise dolaylı bağımlılıkları ifade etmektedir. Eğer bir mesajın alındığı e i olayı ile aynı alıcıya daha sonra ulaşan başka bir mesajın alındığı e k olayı, e j olayı ile ikinci veya üçüncü koşulu sağlıyorsa ve aynı zamanda, e k olayı e j olayından önce gerçekleşiyorsa, e i ve e j olayları arasında bir bağımlılık olduğu kabul edilmektedir.</p><p>Sistem içinde aktörlere ulaşan mesajlar ve bu mesajlar arasındaki bağımlılıkları bir döngüsüz yönlü çizge (directed acyclic graph -DAG) ile ifade edebiliriz. Bu çizgede her mesaj alınma olayı bir düğüm (node), bu olaylar arasındaki nedensel bağımlılıklar ise birer yönlü uç (directed edge) ile ifade edilebilir. Bu şekilde ortaya çıkan bir çizge için elde edilebilecek tüm topolojik sıralamalar (topological orderings), sistemdeki tüm olası mesaj alınma sıralamalarını temsil edecektir. Ancak bu sıralamaların sayısı, çizgenin boyutuna oranla üssel (exponential) olarak artmaktadır. Tüm olası sıralamaları elde etmek bir yana, sadece bu sıralamaların sayısını hesaplamak bile, doğrusal uzantılar (linear extensions) bulma problemi olarak adlandırılmakta ve NP-zor bir problem olarak bilinmektedir <ref type="bibr" target="#b3">[4]</ref>. Ancak henüz bu bildirinin yazımı sırasında basım aşamasında olan bir makalede <ref type="bibr" target="#b2">[3]</ref>, bu sayıyı yaklaşık olarak hesaplayan verimli bir algoritma ve bu algoritmanın R dili ile geliştirilmiş bir uygulaması önerilmiştir. Önerilen algoritma, n adet düğümü olan bir çizgede, topolojik sıralamaların sayısı olarak kabul edilen bir L değereini, 1 -δ kadar olasılıkla, 1+ ϵ kadar yakınsayarak bulmaktadır. Bu algoritma δ ve ϵ değerlerini birer parametre olarak kabul etmektedir ve karmaşıklığı O(n 3 (ln n)(ln L) 2 ϵ −2 ln δ −1 ) olarak hesaplanmıştır <ref type="bibr" target="#b2">[3]</ref>. Dolayısıyla, sistemin ölçeği, mesajların sayısı ve hesaplama için kullanılabilecek kaynakların miktarına bağlı olarak, bir test kapsama kriteri üst limiti olarak L değeri, farklı doğruluk seviyelerinde hesaplanabilmektedir.</p><p>Büyük ölçekli sistemlerin testleri sırasında tüm olası mesaj alınma sıralamalarını kapsamak tabi ki uygulanabilir ve gerçekçi bir hedef değildir. Ancak bu kapsama kriteri için bir üst limit belirleyebilmek, kapsama oranını ölçebilmek ve kıyaslama yapabilmek açısından önem teşkil etmektedir.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">Mesaj Çifti Sıralamaları</head><p>Aktör tabanlı sistemler için pratik olarak uygulanabilir bir test kapsama kriteri oluşturmak adına, tüm mesaj alınma olayları yerine, her aktörü ayrı ayrı ele an ve bir aktör tarafından işlenen mesaj çiftlerinin farklı sırlamalarının sayısını ölçen mesaj çifti sıralamaları (pair of receives -PR) <ref type="bibr" target="#b16">[17,</ref><ref type="bibr" target="#b18">19]</ref> bir ölçü olarak önerilmiştir. Bu ölçüye göre iki farklı asenkron e i ve e j olayı arasındaki bir sıralama hedefi, aşağıdaki koşulların tümü sağlandığında ulaşılmış sayılır:</p><p> alıcı(e i ) = alıcı(e j )  e j olayı, en az bir test sırasında e i olayından önce gelmektedir  e j olayı, en az bir test sırasında e i olayından sonra gelmektedir PR ölçüsü için bir üst limit belirlenmediğinden, bir kapsama oranı yerine, sadece sıralama hedefine ulaşılan farklı mesaj çiftlerinin sayısı cinsinden bir ölçüm sunulmuştur <ref type="bibr" target="#b16">[17]</ref>. Daha sonradan PCR (pair of consecutive receives) ve PBR (pair of behavior change and receive) gibi PR ölçüsünün farklı varyantları de önerilmiş olmakla birlikte, deneysel çalışmalarda hata bulma etkinliği açısından PR ölçüsünün en etkin kriter olduğu gösterilmiştir <ref type="bibr" target="#b16">[17]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3">Sıralamayı Kapsayan Diziler</head><p>Aktör tabanlı sistemlere özel bir kriter olarak geliştirilmemiş olsa da, genel olarak eş zamanlı çalışan bir sistemde meydana gelen olayların farklı sıralarda çalışmasını göz önünde bulunduran genel bir yaklaşım olarak sıralamaları kapsayan diziler (sequence covering arrays) <ref type="bibr" target="#b8">[9]</ref> önerilmiştir. Bu yaklaşımda, bir test kapsama kriteri olarak t-li test sıralaması (t-way test sequence), t farklı olayın her bir olası sıralamasının en az bir test tarafından kapsanmasını hedeflemektedir. Eğer bir sistemde n farklı olay var ise, bunların bir alt kümesi olan t adet (t &lt;= n) veya daha az sayıdaki olayın tüm olası (t! adet) sıralamasının her birinin en az bir test sırasında gerçekleşmiş olması beklenmektedir. Her bir test sırasında, geriye kalan nt adet olayın sırlaması herhangi bir şekilde olabilir.</p><p>İlk görüşte, bir test kapsama kriteri olarak t-li test sıralamasının, t değeri 2 iken, bir önceki bölümde tanıtılan PR kriteri ile aynı olduğu düşünülebilir. Ancak, aktör tabanlı sistemlere özel olarak önerilen PR kriteri, tüm olaylar arasında olay çiftlerinin farklı sıralamalarını değil, her bir aktör için ayrı ayrı, ilgili aktör tarafından alınan mesaj çiftlerinin sıralamalarını dikkate almaktadır.</p><p>Bir test kapsama kriteri olarak sıralamaları kapsayan diziler ilk defa Kuhn ve diğerleri <ref type="bibr" target="#b10">[11]</ref> tarafından önerilmiş, kriteri sağlamak için gerekli test sayısı için bir alt limit hesaplanmış ve bu testleri otomatik bir şekilde oluşturabilmek için sezgisel bir algoritma sunulmuştur <ref type="bibr" target="#b10">[11]</ref>. Yakın zamanlarda bu hesaplamalar ve algoritmalar üzerine yeni çalışmalar sunulmuştur <ref type="bibr" target="#b14">[15,</ref><ref type="bibr" target="#b4">5]</ref>. Fakat şu ana kadar önerilen algoritmalar ve hesaplama yöntemleri, aktör tabanlı sistemler için uyarlanmamış/kullanılmamış ve büyük ölçekli sistemler üzerinde uygulanmamıştır. Literatürde sunulan vaka çalışmalarında kullanılan sistemlerde gerçekleşen toplam olay sayısı ancak 100 civarındadır.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.4">Öncelikli/İlgili Mesajların Sıralamasını Kapsayan Diziler</head><p>Olaylar arasındaki bağımlılıkların dikkate alınmasına rağmen, milyonlarca mesajın paylaşıldığı aktör tabanlı sistemlerde, bir önceki bölümde tanıtılan test kapsama kriterlerini sağlamak mümkün olmayabilir. Bu sebeple, sıralamaları kapsayan diziler yaklaşımı iki farklı gözleme dayalı olarak uyarlanabilir. Birincisi, aktörler arasında paylaşılan tüm mesajlar, hataların ortaya çıkma olasılığı açısından aynı derecede önemli olmayabilir. Bu sebeple, tüm olaylar yerine, bu olayların alan uzmanları tarafından tanımlanan bir alt kümesine odaklanmak, söz konusu olabilir. Bu yaklaşım ile uyumlu bir kriter olarak temel seçim kapsamından (base choice coverage) <ref type="bibr" target="#b1">[2]</ref> esinlenilebilinir. Genel bir kapsama kriteri olarak, k-seçimli, t-li test sırlaması, n farklı olay gerçekleşen bir sistemde, bu olayların bir alt kümesi olan seçilmiş k adet (k &lt;= t &lt;= n) temel olayı içeren t veya daha az sayıdaki olayın, tüm olası (t! adet) sıralamasının her birinin en az bir test sırasında gerçekleşmiş olmasını beklenmek şeklinde tanımlanabilir.</p><p>İkincisi, PR ölçüsünde olduğu gibi tüm mesajların bir arada değerlendirilmesi yerine her aktör tarafından işlenen mesajlar ayrı ayrı ele alınabilir. Bu durumda, her bir aktör için t-li test sıralaması, bu aktör tarafından işlenen t farklı mesajın her bir olası sıralamasının en az bir test tarafından kapsanmasını hedefler. Her aktör tarafından işlenen mesaj sayısı farklı olacağından, t değeri bir üst limit belirleyecek, aktör tarafından işlenen mesaj sayısını geçmeyecek şekilde farklı aktörler için farklı değerler söz konusu olacaktır.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">İlgili Çalışmalar</head><p>Actorverse <ref type="bibr" target="#b17">[18]</ref> aktör tabanlı sistemler için geliştirilmiş bir hata ayıklama aracıdır. Bu araç ile aktörler arası mesajlaşmalar üzerinde kesme noktaları (breakpoints) tanımlanabilmektedir. Sistemin çalışması bu noktalarda durdurulabilmekte ve bu noktalardan geriye alınabilmektedir. Aynı zamanda bu araç, hataları tekrar oluşturabilmek için, aktörler arasında gerçekleşen mesajlaşma senaryolarının kayıt altına alınıp, daha son-radan aynı sıralama ile tekrar oynatılmalarını sağlamaktadır; ancak olası mesajlaşma sıralamalarının kapsama miktarının ölçümüne ilişkin bir destek sunmamaktadır. Aktör sistemlerinde gerçekleşen mesajlaşmaların zamanlamaya bağlı olası sırlamalarını sistematik bir şekilde oluşturmak, bu sıralamalara uygun şekilde sistemin çalışmasını sağlamak ve test kapsamını bu bakış açısından ölçmek için Bita <ref type="bibr" target="#b16">[17,</ref><ref type="bibr" target="#b18">19]</ref> aracı geliştirilmiştir. Bu bildiride, test kapsamının ölçümü problemine odaklanılmaktadır. Bita aracı tarafından değerlendirilen, her aktör için mesaj çifti sıralamalarını ayrı ayrı ele alan ölçüler (PR) ile birlikte, alternatif ölçü ve hesaplama yöntemleri irdelenmiştir.</p><p>Aktör bazlı sistemlerin tasarım aşamasında doğrulanabilmeleri için Rebeca <ref type="bibr" target="#b10">[11]</ref> gibi modelleme dilleri ve model denetimi (model checking) araçları geliştirilmiştir. Bu araçlar, oluşturulan modele uygun olarak tüm olası senaryoları kontrol etmektedirler; ancak ölçeklenme konusundaki kısıtları sebebiyle sadece küçük ölçekli sistemler için uygulanabildikleri görülmüştür.</p><p>Eşzamanlı programlarda iş parçacıkları ve değişken erişimleri arasındaki sıralamalara ilişkin farklı seviyelerde 7 kapsama kriteri önerilmiştir <ref type="bibr" target="#b13">[14]</ref>; ancak bu kriterler aktör tabanlı sistemlere odaklanmamaktadır. Genel olarak bir dizi olayın farklı sıralarda meydana gelmesinden ötürü ortaya çıkan hataların yakalanabilmesine yönelik gerçekleştirilen testlerin değerlendirilmesi için sıralamaları kapsayan diziler önerilmiştir <ref type="bibr" target="#b10">[11]</ref>. Olaylar arası sırlamaları kapsamak için gereken test sayısını hesaplamak ve sezgisel bir algoritma ile bu testleri oluşturmak üzere çalışmalar yapılmıştır <ref type="bibr" target="#b14">[15,</ref><ref type="bibr" target="#b4">5]</ref>. Ayrık matematik alanında da bu algoritmalar <ref type="bibr" target="#b2">[3]</ref> üzerine çalışmalar olsa da, aktör tabanlı sistemlerde test kapsama ölçümü ile ilgili olarak ilk kez bu çalışmada ele alınmışlardır.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Sonuç</head><p>Bu bildiride, aktör tabanlı sistemler için kullanılabilecek test kapsama kriterleri irdelenmiştir. Literatürde önerilmiş mevcut kriterlere ek olarak yeni kriterler ile, ayrık matematik alanında son zamanlarda yayınlanmış olan çalışmaların aktör tabanlı sistemler için test kapsama kriterlerini değerlendirmek üzere uygulamaları ele alınmıştır. Önerilen kapsama kriterlerine göre değerlendirme yapabilen ve bu kriterleri sağlayacak şekilde test durumlarını otomatik olarak oluşturan bir test altyapısı şu an geliştirme aşamasındadır. Bu test altyapısı ile farklı aktör tabanlı sistemler üzerinde deneyler gerçekleştirilerek, test kapsama kriterlerinin nicel olarak değerlendirilmesi hedeflenmektedir.</p><p>Teşekkür. Bu çalışma, Türkiye Bilimsel ve Teknolojik Araştırma Kurumu (TÜBİTAK) Teknoloji ve Yenilik Destek Programları Başkanlığı (TEYDEB) tarafından desteklenen 3170457 numaralı proje kapsamında yürütülmüştür. Yazarlar, başta yazılım geliştirme müdürü Birol Karatay ve genel müdür Mustafa Kayırıcı olmak üzere, EPİAŞ yönetici ve çalışanlarına desteklerinden ötürü teşekkür eder.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head></head><label></label><figDesc>için beklenen bir çalışma senaryosu Şekil 2'de gösterilmektedir. Burada bir Test Sürücüsü, Producer aktörüne bir Produce mesajı göndermekte ve ardından, Consumer aktörüne bir Consume mesajı göndermektedir. Sonuç olarak, Buffer aktöründe Producer tarafından Put mesajı ile eklenmiş ve daha sonradan Consumer tarafından Get mesajı ile elde edilmiş olan verinin bir Element mesajı ile Test Sürücüsü'ne iletilmesi beklenmektedir.Şekil 2'de gösterilmekte olan tüm mesajlar asenkron bir şekilde iletilmektedirler. Dolayısıyla, bu şekilde gösterilen mesajlaşma sırası, tek olası sıralama değildir. Teorik olarak n farklı mesaj paylaşma olayının n! farklı sıralaması mevcuttur. Esasen, mesajlar arasındaki nedensel bağımlılıklar (causal dependencies) mümkün olabilecek sıralama sayısını azaltmaktadır. Örneğin, Put ve Get mesajları, sırasıyla, Produce ve Consume mesajlarına tepki olarak gönderilmektedirler. Dolayısıyla bu mesajların kendi aralarındaki sıralamaları değişememektedir. Diğer yandan, Consume mesajı, Produce mesajı hedefine ulaşıp işlenmeden önce işleme alınabilir. Bu durumda, henüz Buffer aktöründe saklanan veri bulunmadığından ötürü bir hata ortaya çıkacaktır.</figDesc><table><row><cell cols="5">1 public static class Buffer extends UntypedActor {</cell></row><row><cell>2</cell><cell cols="2">private int content[];</cell><cell></cell><cell></cell></row><row><cell>3</cell><cell cols="4">private int head, tail, size, capacity;</cell></row><row><cell>4</cell><cell cols="3">public Buffer(final int capacity) {</cell><cell></cell></row><row><cell>5</cell><cell cols="2">this.capacity = capacity;</cell><cell></cell><cell></cell></row><row><cell>6</cell><cell cols="4">this.head = this.tail = this.size = 0;</cell></row><row><cell>7</cell><cell cols="3">this.content = new int[capacity];</cell><cell></cell></row><row><cell>8</cell><cell>}</cell><cell></cell><cell></cell><cell></cell></row><row><cell>9</cell><cell cols="4">public void onReceive(Object message) {</cell></row><row><cell>10</cell><cell cols="3">if(message instanceof Put) {</cell><cell></cell></row><row><cell>11</cell><cell cols="2">if(size &lt; capacity) {</cell><cell></cell><cell></cell></row><row><cell>12</cell><cell cols="4">content[tail] = ((Put)message).getElement();</cell></row><row><cell>13</cell><cell cols="3">tail = (tail + 1) % capacity;</cell><cell></cell></row><row><cell>14 15</cell><cell>size++; Test Sürücüsü }</cell><cell>Producer</cell><cell>Buffer</cell><cell>Consumer</cell></row><row><cell>16</cell><cell cols="3">} else if(message instanceof Get) {</cell><cell></cell></row><row><cell>17 18</cell><cell cols="2">int value = -1; if(size &gt; 0) { Produce</cell><cell></cell><cell></cell></row><row><cell>19 20 21</cell><cell cols="3">value = content[head]; size--; Consume head = (head + 1) % capacity; Put</cell><cell></cell></row><row><cell>22 23</cell><cell cols="4">} getSender().tell(new Element(value), getSelf()); Get</cell></row><row><cell>24</cell><cell>} else {</cell><cell></cell><cell></cell><cell></cell></row><row><cell>25</cell><cell cols="2">unhandled(message);</cell><cell></cell><cell></cell></row><row><cell>26</cell><cell>}</cell><cell></cell><cell></cell><cell></cell></row><row><cell>27</cell><cell>}</cell><cell></cell><cell></cell><cell></cell></row><row><cell>28 }</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell cols="5">29 public static class Producer extends UntypedActor {</cell></row><row><cell>30</cell><cell cols="3">private final ActorRef buffer;</cell><cell></cell></row><row><cell>31</cell><cell cols="2">public int counter;</cell><cell></cell><cell></cell></row><row><cell>32</cell><cell cols="3">public Producer(ActorRef buffer) {</cell><cell></cell></row><row><cell>33</cell><cell cols="2">this.buffer = buffer;</cell><cell></cell><cell></cell></row><row><cell>34</cell><cell cols="2">this.counter = 0;</cell><cell></cell><cell></cell></row><row><cell>35</cell><cell>}</cell><cell></cell><cell></cell><cell></cell></row><row><cell>36</cell><cell cols="4">public void onReceive(Object message) {</cell></row><row><cell>37</cell><cell cols="3">if(message instanceof Produce) {</cell><cell></cell></row><row><cell>38</cell><cell cols="4">buffer.tell(new Put(counter), getSelf());</cell></row><row><cell>39</cell><cell>counter++;</cell><cell></cell><cell></cell><cell></cell></row><row><cell>40</cell><cell>...</cell><cell></cell><cell></cell><cell></cell></row><row><cell>41</cell><cell>} ...</cell><cell></cell><cell></cell><cell></cell></row><row><cell>42</cell><cell>}</cell><cell></cell><cell></cell><cell></cell></row><row><cell>43 }</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell cols="5">44 public static class Consumer extends UntypedActor {</cell></row><row><cell>45</cell><cell cols="3">private final ActorRef buffer;</cell><cell></cell></row><row><cell>46</cell><cell cols="3">public Consumer(ActorRef buffer) {</cell><cell></cell></row><row><cell>47</cell><cell cols="2">this.buffer = buffer;</cell><cell></cell><cell></cell></row><row><cell>48</cell><cell>}</cell><cell></cell><cell></cell><cell></cell></row><row><cell>49</cell><cell cols="4">public void onReceive(Object message) {</cell></row><row><cell>50</cell><cell cols="3">if(message instanceof Consume) {</cell><cell></cell></row><row><cell>51</cell><cell>...</cell><cell></cell><cell></cell><cell></cell></row><row><cell>52</cell><cell>} ...</cell><cell></cell><cell></cell><cell></cell></row><row><cell>53</cell><cell>}</cell><cell></cell><cell></cell><cell></cell></row><row><cell>54 }</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell cols="5">Şekil 1. Bir BoundedBuffer uygulamasının [19] Java dili ile, Akka çerçevesi kul-</cell></row><row><cell cols="2">lanılarak gerçeklemesi.</cell><cell></cell><cell></cell><cell></cell></row></table><note>Element ElementŞekil 2. BoundedBuffer uygulamasının<ref type="bibr" target="#b18">[19]</ref> test edilmesi sırasında beklenen çalışma senaryosu.</note></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">https://github.com/hasansozer/JBita</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2" xml:id="foot_1">http://akka.io</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title level="m" type="main">A Model of Concurrent Computation in Distributed Systems</title>
		<author>
			<persName><forename type="first">G</forename><surname>Agha</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1990">1990</date>
			<publisher>MIT Press</publisher>
			<pubPlace>Cambridge, MA, USA</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<author>
			<persName><forename type="first">P</forename><surname>Amman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Offut</surname></persName>
		</author>
		<title level="m">Introduction to Software Testing</title>
				<imprint>
			<publisher>Cambridge University Press</publisher>
			<date type="published" when="2017">2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Using TPA to count linear extensions</title>
		<author>
			<persName><forename type="first">J</forename><surname>Banks</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">M</forename><surname>Garrabrant</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">L</forename><surname>Huber</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Perizzolo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Discrete Algorithms</title>
		<imprint>
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
	<note>in press. available online</note>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Counting linear extensions is #P-complete</title>
		<author>
			<persName><forename type="first">G</forename><surname>Brightwell</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Winkler</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 23rd Annual Symposium on Theory of Computing</title>
				<meeting>the 23rd Annual Symposium on Theory of Computing</meeting>
		<imprint>
			<date type="published" when="1991">1991</date>
			<biblScope unit="page" from="175" to="181" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Sequence Covering Arrays</title>
		<author>
			<persName><forename type="first">Y</forename><forename type="middle">M</forename><surname>Chee</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">J</forename><surname>Colbourn</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Horsley</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Zhou</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">SIAM Journal on Discrete Mathematics</title>
		<imprint>
			<biblScope unit="volume">27</biblScope>
			<biblScope unit="issue">4</biblScope>
			<biblScope unit="page" from="1844" to="1861" />
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Actor model for discretionary, adaptive concurrency</title>
		<author>
			<persName><forename type="first">C</forename><surname>Hewitt</surname></persName>
		</author>
		<idno>abs/1008</idno>
	</analytic>
	<monogr>
		<title level="j">CoRR</title>
		<imprint>
			<biblScope unit="page">1459</biblScope>
			<date type="published" when="2010">2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<title level="m" type="main">Concurrent Programming in ERLANG</title>
		<author>
			<persName><forename type="first">J</forename><surname>Armstrong</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Virding</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Wikström</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Williams</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1996">1996</date>
			<publisher>Prentice Hall</publisher>
			<pubPlace>Hertfordshire, UK</pubPlace>
		</imprint>
	</monogr>
	<note>2nd ed</note>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Scala actors: Unifying thread-based and event-based programming</title>
		<author>
			<persName><forename type="first">P</forename><surname>Haller</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Odersky</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Theoretical Computer Science</title>
		<imprint>
			<biblScope unit="volume">410</biblScope>
			<biblScope unit="issue">2-3</biblScope>
			<biblScope unit="page" from="202" to="220" />
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<title level="m" type="main">Akka Essentials</title>
		<author>
			<persName><forename type="first">M</forename><surname>Gupta</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2012">2012</date>
			<publisher>Packt Publishing</publisher>
			<pubPlace>Birmingham, UK</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<monogr>
		<title level="m" type="main">Encyclopedia of Parallel Computing</title>
		<editor>Padua D.</editor>
		<imprint>
			<date type="published" when="2011">2011</date>
			<publisher>Springer</publisher>
			<pubPlace>New York, USA</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">PTRebeca: Modeling and analysis of distributed and asynchronous systems</title>
		<author>
			<persName><forename type="first">A</forename><surname>Jafari</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Kamespanah</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Sirjani</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Hermanns</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Cimini</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Science of Computer Programming</title>
		<imprint>
			<biblScope unit="volume">128</biblScope>
			<biblScope unit="page" from="22" to="50" />
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Combinatorial Methods for Event Sequence Testing</title>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">R</forename><surname>Kuhn</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Higdon</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">F</forename><surname>Lawrence</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">N</forename><surname>Kacker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Lei</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 5th International Conference on Software Testing, Verification and Validation</title>
				<meeting>the 5th International Conference on Software Testing, Verification and Validation</meeting>
		<imprint>
			<date type="published" when="2012">2012</date>
			<biblScope unit="page" from="601" to="609" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Towards advanced debugging support for actor languages studying concurrency bugs in actor-based programs</title>
		<author>
			<persName><forename type="first">C</forename><surname>Lopez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Marr</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Boix</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 6th ACM SIGPLAN International Workshop on Programming Based on Actors, Agents, and Decentralized Control</title>
				<meeting>the 6th ACM SIGPLAN International Workshop on Programming Based on Actors, Agents, and Decentralized Control</meeting>
		<imprint>
			<date type="published" when="2016">2016</date>
			<biblScope unit="page" from="1" to="5" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">A Study of Interleaving Coverage Criteria</title>
		<author>
			<persName><forename type="first">S</forename><surname>Lu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Jiang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Zhou</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 6th ACM SIGSOFT Symposium on the Foundations of Software Engineering</title>
				<meeting>the 6th ACM SIGSOFT Symposium on the Foundations of Software Engineering</meeting>
		<imprint>
			<date type="published" when="2007">2007</date>
			<biblScope unit="page" from="533" to="536" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Sequence Covering Arrays and Linear Extensions</title>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">C</forename><surname>Murray</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">J</forename><surname>Colbourn</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 26th International Workshop on Combinatorial Algorithms</title>
				<meeting>the 26th International Workshop on Combinatorial Algorithms</meeting>
		<imprint>
			<date type="published" when="2015">2015</date>
			<biblScope unit="page" from="274" to="285" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Towards a Testing Framework with Visual Feedback for Actor-based Systems</title>
		<author>
			<persName><forename type="first">H</forename><surname>Sözer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Gürler</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Yılmaz</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 18th IEEE International Conference on Software Quality, Reliability</title>
				<meeting>the 18th IEEE International Conference on Software Quality, Reliability</meeting>
		<imprint>
			<publisher>and Security</publisher>
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Bita: Coverageguided, automatic testing of actor programs</title>
		<author>
			<persName><forename type="first">S</forename><surname>Tasharofi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Pradel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Lin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Johnson</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 28th IEEE/ACM International Conference on Automated Software Engineering</title>
				<meeting>the 28th IEEE/ACM International Conference on Automated Software Engineering</meeting>
		<imprint>
			<date type="published" when="2013">2013</date>
			<biblScope unit="page" from="114" to="124" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Actoverse: A reversible debugger for actors</title>
		<author>
			<persName><forename type="first">K</forename><surname>Shibanai</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Watanabe</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 7th ACM SIGPLAN International Workshop on Programming Based on Actors, Agents, and Decentralized Control</title>
				<meeting>the 7th ACM SIGPLAN International Workshop on Programming Based on Actors, Agents, and Decentralized Control</meeting>
		<imprint>
			<date type="published" when="2017">2017</date>
			<biblScope unit="page" from="50" to="57" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<monogr>
		<title level="m" type="main">Efficient testing of actor programs with non-deterministic behaviors</title>
		<author>
			<persName><forename type="first">S</forename><surname>Tasharofi</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2013">2013</date>
		</imprint>
		<respStmt>
			<orgName>University of Illinois at Urbana-Champaign</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Ph.D. Thesis</note>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
